# Qwilr

```json
{
  "name": "Qwilr",
  "slug": "qwilr",
  "url": "https://composio.dev/toolkits/qwilr",
  "markdown_url": "https://composio.dev/toolkits/qwilr.md",
  "logo_url": "https://logos.composio.dev/api/qwilr",
  "categories": [
    "sales & customer support"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-31T05:37:46.807Z"
}
```

![Qwilr logo](https://logos.composio.dev/api/qwilr)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Qwilr MCP or direct API to list pages, create sales documents, manage proposals, and track page activity through natural language.

## Summary

Qwilr is a sales document platform for creating smart proposals, quotes, and business pages.
It helps teams save time, present offers clearly, and win more work.

## Categories

- sales & customer support

## Toolkit Details

- Tools: 15

## Images

- Logo: https://logos.composio.dev/api/qwilr

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for Qwilr.
  - Setup:
    - Configure Api Key credentials for Qwilr.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- List my latest Qwilr sales proposals
- Create a Qwilr quote for Acme
- Find Qwilr pages awaiting customer approval

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `QWILR_CREATE_PAGE` | Create Page | Create a Qwilr page from exactly one template ID or an ordered list of saved blocks; this consumes document-automation credits or usage billing. |
| `QWILR_CREATE_TAX` | Create Tax | Create a quote tax definition with a percentage rate or no rate, optionally using a stable caller-chosen ID. |
| `QWILR_CREATE_WEBHOOK_SUBSCRIPTION` | Create Webhook Subscription | Subscribe a publicly reachable callback URL to one Qwilr page event. Qwilr callbacks are unsigned, must receive HTTP 200 within 30 seconds, and may be retried up to five times before being dropped. |
| `QWILR_DELETE_TAX` | Delete Tax | Permanently delete one quote tax definition by ID. |
| `QWILR_DELETE_WEBHOOK_SUBSCRIPTION` | Delete Webhook Subscription | Permanently cancel one webhook subscription by its subscription ID. |
| `QWILR_GET_PAGE` | Get Page | Return one full Qwilr page, with optional metadata and real or preview acceptance details. |
| `QWILR_LIST_PAGES` | List Pages | Return one cursor-controlled page of visible Qwilr page summaries, optionally filtered by status, tags, folder, owner, or creation order. |
| `QWILR_LIST_PAYMENT_GATEWAYS` | List Payment Gateways | Return configured Qwilr Pay gateways whose IDs can be assigned to page payment settings. |
| `QWILR_LIST_SAVED_BLOCKS` | List Saved Blocks | Return saved block IDs, names, and types for constructing or replacing pages. |
| `QWILR_LIST_TAXES` | List Taxes | Return all quote tax definitions and their nullable percentage rates. |
| `QWILR_LIST_USERS` | List Users | Return account users with IDs, email addresses, roles, and team names for resolving page owner IDs. |
| `QWILR_LIST_WEBHOOK_SUBSCRIPTIONS` | List Webhook Subscriptions | Return API-created webhook subscriptions with their IDs, event types, and callback URLs. |
| `QWILR_REPLACE_PAGE_CONTENT` | Replace Page Content | Fully and irreversibly overwrite all content in a Qwilr page with saved blocks as the required primary operation, optionally changing publication, expiry, payments, folder, and additive tags in the same request. This only works for pages originally created from saved blocks. If folder_id is sent, Qwilr moves the page first and does not roll that move back if content replacement or another later change fails. |
| `QWILR_UPDATE_PAGE` | Update Page | Update a Qwilr page's publication, expiry, payments, folder, or additive tags. This action does not replace page content. Accepted or disabled pages support only folder_id, skip_if_template_default_folder, and add_tags. If folder_id was sent, Qwilr applies the folder move first and does not roll it back when a later requested change fails; inspect the page before retrying. |
| `QWILR_UPDATE_TAX` | Update Tax | Change a quote tax definition's name, percentage rate, or both; sending rate null clears the rate. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Qwilr
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["qwilr"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["qwilr"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Qwilr tools with your agent

Send a request, execute the Qwilr tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "List my Qwilr pages"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List my Qwilr pages" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Qwilr and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["qwilr"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["qwilr"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Qwilr request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Qwilr tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("List my Qwilr pages")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List my Qwilr pages",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Qwilr Integration

- Supports both Qwilr MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Qwilr sales documents

### 2. Managed Auth

- Securely store and use your Qwilr API key without hard-coding it into agent workflows
- Central place to manage, scope, rotate, and revoke Qwilr access
- Per user and per environment credentials for safer development and production deployments

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Qwilr
- Scoped, least privilege access to Qwilr resources
- Full audit trail of agent actions to support review and compliance

## Use Qwilr with any AI Agent Framework

Choose a framework you want to connect Qwilr with:

- [ChatGPT](https://composio.dev/toolkits/qwilr/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/qwilr/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/qwilr/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/qwilr/framework/atomic-agent)

## Related Toolkits

- [Aeroleads](https://composio.dev/toolkits/aeroleads) - Aeroleads is a B2B lead generation platform for finding business emails and phone numbers. Grow your sales pipeline faster with powerful prospecting tools.
- [Autobound](https://composio.dev/toolkits/autobound) - Autobound is an AI-powered sales engagement platform that crafts hyper-personalized outreach and insights. It helps sales teams boost response rates and close more deals through tailored content and recommendations.
- [Better proposals](https://composio.dev/toolkits/better_proposals) - Better Proposals is a web-based tool for crafting and sending professional proposals. It helps teams impress clients and close deals faster with slick, easy-to-use templates.
- [Bidsketch](https://composio.dev/toolkits/bidsketch) - Bidsketch is a proposal software that helps businesses create professional proposals quickly and efficiently. It streamlines the proposal process, saving time while boosting client win rates.
- [Bolna](https://composio.dev/toolkits/bolna) - Bolna is an AI platform for building conversational voice agents. It helps businesses automate support and streamline interactions through natural, voice-powered conversations.
- [Botdog](https://composio.dev/toolkits/botdog) - Botdog is a LinkedIn outreach platform for managing campaigns, leads, messages, analytics, and sending accounts. It helps sales teams run outbound workflows and track performance from one place.
- [BotPenguin](https://composio.dev/toolkits/botpenguin) - BotPenguin is an AI chatbot platform for customer messaging, contacts, and conversations. It helps teams manage bot-led support and lead engagement across channels.
- [Botsonic](https://composio.dev/toolkits/botsonic) - Botsonic is a no-code AI chatbot builder for easily creating and deploying chatbots to your website. It empowers businesses to offer conversational experiences without writing code.
- [Botstar](https://composio.dev/toolkits/botstar) - BotStar is a comprehensive chatbot platform for designing, developing, and training chatbots visually on Messenger and websites. It helps businesses automate conversations and customer interactions without coding.
- [Callerapi](https://composio.dev/toolkits/callerapi) - CallerAPI is a white-label caller identification platform for branded caller ID and fraud prevention. It helps businesses boost customer trust while stopping spam, fraud, and robocalls.
- [Callingly](https://composio.dev/toolkits/callingly) - Callingly is a lead response management platform that automates immediate call and text follow-ups with new leads. It helps sales teams boost response speed and close more deals by connecting seamlessly with CRMs and lead sources.
- [Callpage](https://composio.dev/toolkits/callpage) - Callpage is a lead capture platform that lets businesses instantly connect with website visitors via callback. It boosts lead generation and increases your sales conversion rates.
- [Charla](https://composio.dev/toolkits/charla) - Charla is a live chat and AI customer-support platform for property teams. It helps manage guest conversations, property contacts, and support knowledge.
- [Chatforma](https://composio.dev/toolkits/chatforma) - Chatforma is a chatbot automation platform for building and managing bots. It helps teams run dialogs, segments, broadcasts, forms, and user updates from one place.
- [Clearout](https://composio.dev/toolkits/clearout) - Clearout is an AI-powered service for verifying, finding, and enriching email addresses. It boosts deliverability and helps you discover high-quality leads effortlessly.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.
- [Convolo ai](https://composio.dev/toolkits/convolo_ai) - Convolo ai is an AI-powered communications platform for sales teams. It accelerates lead response and improves conversion rates by automating calls and integrating workflows.
- [Crisp](https://composio.dev/toolkits/crisp) - Crisp is a customer messaging platform for live chat, contacts, helpdesk, and campaigns. It helps support teams manage customer conversations from one shared workspace.
- [Delighted](https://composio.dev/toolkits/delighted) - Delighted is a customer feedback platform based on the Net Promoter System®. It helps you quickly gather, track, and act on customer sentiment.
- [Docsbot ai](https://composio.dev/toolkits/docsbot_ai) - Docsbot ai is a platform that lets you build custom AI chatbots trained on your documentation. It automates customer support and content generation, saving time and improving response quality.

## Frequently Asked Questions

### Do I need my own developer credentials to use Qwilr with Composio?

Yes, Qwilr requires you to configure your own API key. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
