Dubsado MCP Server

Projects, proposals, contracts and invoices for creative businesses.

Servidor MCP alojado

npx add-mcp 'https://cotlet.dev/mcp/v1/dubsado'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Cotlet · Integrations · How it works · Security · For developers · For automation agencies · Blog · API docs · Help center · Changelog · Contact · Pricing · Sign up

Dubsado API and MCP server: Let your AI agent handle your Dubsado paperwork.

Dubsado has no public API, no developer docs and no MCP server you can connect (checked 24 Oct 2026). Its terms of 14 Oct 2026 mention a Dubsado MCP server, and its own Connected apps page, not switched on yet, calls that read-only access. Cotlet runs 16 Dubsado tools hosted, over MCP for agents and REST for scripts.

Read your Dubsado project pipeline and client details through MCP or REST. Use an AI agent, n8n, Make, Zapier or a script with your configured brand.

Connect an AI agent Use the REST API

What can you automate in Dubsado?

  • Send proposals to new leads
  • Send contracts for signature
  • Brief you on questionnaire answers
  • Move signed projects to Booked
  • Create and send invoices
  • Log checks and cash payments

Does Dubsado have an MCP server or an API?

  • The one official link is Zapier, on the $55 Premier plan, not the $35 Starter plan: 5 triggers and 1 action, Create Project. Zapier MCP has the same action, at 2 Zapier tasks a call.
  • A check or cash payment you log by hand fires no Zapier trigger. Only Dubsado Payments, Square and PayPal payments do.
  • Nothing official sends a proposal, contract or invoice, moves a project status or logs a payment.
What you needDubsado + Zapier (Premier)GitHub CLICotlet
Open a project for a new leadYes, Create ProjectNoYes
Send proposals, contracts and invoicesNoNoYes, after your OK
Read form answers and open balancesEvents onlyClients and formsYes
Works on the Starter planNo, PremierYesYes
Fixed for you when Dubsado changesYesNoYes, tested every 12 h

Checked 24 Oct 2026. Sources: Dubsado Help: Dubsado triggers and actions in Zapier, Dubsado Help: Connecting with Zapier (Premier plan required), Dubsado triggers and actions on Zapier, Dubsado Terms of Service, section 10 (14 Oct 2026), Zapier MCP for Dubsado

How does Cotlet connect to Dubsado?

  1. Sign in to Dubsado. Once, in a browser we run for you.
  2. Choose MCP or REST. Connect your agent or create an API key.
  3. Run your workflow. Ask your agent or call the REST API.

We never save your Dubsado password, and no proposal, contract or invoice reaches a client without your OK.

Connect Dubsado to your AI agent or workflow

Use MCP with ChatGPT, Claude, Cursor or Codex, or authenticated HTTP in n8n, Make or Zapier. The REST guide follows the agent setup.

Step by step with screenshots for ChatGPT, Claude, Grok and other agents: How to connect Dubsado to ChatGPT, Claude and any AI agent.

  1. Turn on Dubsado for agents. Sign up, sign in to Dubsado in its Cloud Browser and press Enable for agents.
  2. Paste the MCP address. Add https://cotlet.dev/mcp/v1/dubsado to the MCP or connector settings of your agent.
  3. Sign in or use a key. Chat apps sign you in to Cotlet; editors and scripts take an API key from the console.

https://cotlet.dev/mcp/v1 also works and carries every app you enable. Turned Dubsado on after connecting? Refresh the connector in your agent.

Claude:

Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-dubsado \
  https://cotlet.dev/mcp/v1/dubsado \
  --header "Authorization: Bearer $COTLET_API_KEY"

ChatGPT:

Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth

Cursor:

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-dubsado": {
      "url": "https://cotlet.dev/mcp/v1/dubsado",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}

Codex:

# ~/.codex/config.toml
[mcp_servers.cotlet-dubsado]
url = "https://cotlet.dev/mcp/v1/dubsado"
bearer_token_env_var = "COTLET_API_KEY"

n8n:

MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: dubsado_read

Make, Zapier:

Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: dubsado_write

How to use the Dubsado REST API

Create your Cotlet API key

Sign in to Dubsado in its Cloud Browser and enable it for agents. Create a Cotlet API key scoped to Dubsado; read-only access is enough for these requests.

Calls use the permissions of your signed-in account. Finish your Dubsado brand setup first.

Cotlet selects the first non-pending brand, falling back to the first brand; these operations have no brand selector.

Save your key as COTLET_API_KEY in your environment. Send Authorization: Bearer <your Cotlet API key>; never use an app password or cookie as the key.

Make your first Dubsado API request

This GET request reads data without changing it.

cURL: first read:

curl "https://cotlet.dev/api/v1/dubsado/projects?limit=5" \
  -H "Authorization: Bearer $COTLET_API_KEY"

A successful REST response puts the tool output in result. This example response excerpt omits call IDs, messages and credit details.

Example response excerpt:

{
  "status": "success",
  "app": "dubsado",
  "tool": "list_projects",
  "result": {
    "projects": [
      {
        "project_id": "6ae1e3a94f83599fbd98e790",
        "title": "Example project",
        "stage": "job",
        "status": null,
        "invoice_total": 350,
        "invoice_paid": 100
      }
    ],
    "statuses": [],
    "total": 1,
    "next_cursor": null
  }
}

Read projects and continue through the pipeline

Projects are newest first and exclude archived projects by default. Use stage, status_id, client_id, search or archived to narrow the list.

The default limit is 25 and the maximum is 100. Pass next_cursor unchanged as cursor with the same filters until it is null.

Amounts are dollars, not cents; a null custom status is valid. get_project reads a selected project for a briefing, but includes only the first 100 forms and first 100 invoices with no exposed continuation, so it is not an exhaustive export for larger projects.

Dubsado workflows with n8n, Make and Zapier

ToolConnect throughExample workflow
n8nHTTP RequestSave a lead and job pipeline snapshot to your CRM or reporting sheet.
MakeHTTP > Make a requestCompare project, contract and invoice state and send a digest of changes.
ZapierWebhooks by Zapier > GET or Custom RequestRead a selected project's details into a client briefing for review.

Configure the schedule, destination and saved state in your automation tool. Cotlet reads the source; your configured destination step writes the report or sends the alert.

Compare existing record state as well as IDs when detecting changes. Python and Node.js can use the same HTTP endpoints without an SDK or agent.

Endpoint and tool reference. The REST API guide covers requests, errors and approvals.

Dubsado API endpoints and MCP tools

Projects and clients

Statuses are your own lead and job names. A new email makes a new client; nothing is emailed to them.

  • List projects (list_projects, read): Projects (leads and jobs) with client, status, contract state and primary invoice totals.
  • Get project (get_project, read): One project with its client, notes, forms with status, invoices and open tasks.
  • List clients (list_clients, read): Contacts in the Address Book, with search on name and email.
  • Create project (create_project, write): New project (lead or booked job) for a client, optionally with a date and a first note.
  • Update project status (update_project_status, write): Move a project between lead and job, set a custom status, or archive or restore it.

Proposals, contracts and questionnaires

Templates are applied to a project first, then sent. A signed contract locks in Dubsado.

  • List form templates (list_form_templates, read): Form templates: proposals, contracts, sub-agreements, questionnaires and lead capture forms.
  • List project forms (list_project_forms, read): Forms on a project (proposal, contract, questionnaire) with status: not sent, sent, viewed, signed.
  • Get form (get_form, read): One form on a project: status, the client's answers and the contract signatures.
  • Add form to project (add_form_to_project, write): Apply a proposal, contract, sub-agreement or questionnaire template to a project as a draft.
  • Send form (send_form, write, asks first): Email a proposal, contract, sub-agreement or questionnaire to the project's client.

Invoices and payments

A logged payment cannot exceed the balance. Card payments through Dubsado Payments, Square or PayPal record themselves.

  • List invoices (list_invoices, read): Invoices with status, totals, amount paid and line items, filtered by status, project or client.
  • Create invoice (create_invoice, write): New invoice on a project with line items (prices in dollars). Not sent.
  • Send invoice (send_invoice, write, asks first): Email an invoice link to the client so they can view and pay it.
  • Record payment (record_payment, write, asks first): Log a payment received outside Dubsado (cash, check, transfer) on an invoice.
  • Create client (create_client, write): New contact in the Address Book.
  • List appointments (list_appointments, read): Appointments clients booked through your schedulers, in a date range.

Inputs, REST path and example response of every tool: https://cotlet.dev/integrations/dubsado-api-mcp-server#tools

Who can see my Dubsado session, and how do I revoke it?

  • What we store. Your signed-in Dubsado profile, AES-256-GCM, in Finland. Not the password.
  • What your agent gets. The Dubsado tools. No cookie, no login.
  • What the session sees. What your Dubsado role sees: clients, form answers, invoices, payments.
  • What no tool touches. Payment settings, Flows, brands, team users. No tool deletes anything.
  • If Dubsado signs you out. You get an email with a sign-in link. We never sign in for you.
  • How to cut access. Disable for agents, reset the browser or delete the key. The next call stops.

A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). No SOC 2 report or third-party pentest yet.

Is it against Dubsado's terms? Account safety

You are prohibited from using the site or its content ... to spam, phish, pharm, pretext, spider, crawl, or scrape; other than accessing your own account data through Dubsado's authorized API or MCP server.

Dubsado Terms of Service, 15. Prohibited Uses, 14 Oct 2026

Agents working in a browser fall outside that exception, and so does every GitHub tool that reads the web app. The terms name no ban on bots as such. We found no public case of a Dubsado account closed for automation (checked 24 Oct 2026); the closures Dubsado documents are for a card it could not charge.

How we keep your account looking like you:

  • Your own account, signed in by you
  • One Cloud Browser with its own IP and cookies
  • Emails to clients, invoices and payments wait for your OK
  • You finish sign-in and 2FA yourself
  • If Dubsado objects, Dubsado tools pause for everyone within 24 h

Keep runs to the work of one business. Dubsado's own Connected Apps rules rule out bulk data pulls for resale.

What happens when Dubsado changes?

  • 12 h between tests of every Dubsado tool, writes included
  • 24 h between tests of writes a client would see
  • 20/20 checks passed on Nov 6, 2026
  • $0 for calls to a tool paused for a fix

Dubsado rebuilt its app as Dubsado 3.0 in November 2025 and retires 2.0 during 2026. A move like that breaks hand-made scripts, and it is what the tests are for. status.cotlet.dev checks the site, console and API every 3 minutes.

Approvals, undo and mistakes

  1. Checks the contact. An open lead project for that email stops the run.
  2. Opens the project. In the lead status you named, never a guessed one.
  3. Applies your proposal. And the contract, when the proposal expects one.
  4. Waits for your OK. The email shows up in your Cotlet console first.
ActionUndo
Send a proposal or contractNo, the email is out
Contract signedNo, it locks; changes go in a sub-agreement
Log a manual paymentYes, edit or delete it in Dubsado
Invoice with a payment on itCannot be deleted; close it instead
Move a project statusYes, move it back

3 of 16 tools ask first: every email to a client, each new invoice and each logged payment. Opening a project or applying a template sends nothing, so those run without a wait.

A status change can start one of your Dubsado Flows, and a Flow may email the client. Check which Flows watch the status before letting the agent move projects.

MCP call:

{
  "name": "create_invoice",
  "arguments": {
    "project_id": "6ae1ed0d4f83599fbd997b73",
    "title": "Engagement session",
    "items": [
      {
        "name": "Engagement session, 90 min",
        "description": "40 edited photos",
        "quantity": 1,
        "price": 425.5
      },
      {
        "name": "Print set",
        "quantity": 2,
        "price": 30
      }
    ]
  }
}

REST:

curl -X POST https://cotlet.dev/api/v1/dubsado/projects/6ae1ed0d4f83599fbd997b73/invoices \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Engagement session","items":[{"name":"Engagement session, 90 min","description":"40 edited photos","quantity":1,"price":425.5},{"name":"Print set","quantity":2,"price":30}]}'

Tool output:

{
  "invoice_id": "6ae1ed5beda7dd683738e306",
  "number": 2,
  "title": "Engagement session",
  "status": "unpaid",
  "date": "2026-10-28T12:40:59.622Z",
  "total": 485.5,
  "paid": 0,
  "remaining": 485.5,
  "project_id": "6ae1ed0d4f83599fbd997b73",
  "project_title": "Grant engagement shoot",
  "client_id": "6ae1ed054f83599fbd997b3f",
  "client_name": "Olivia Grant",
  "items": [
    {
      "name": "Engagement session, 90 min",
      "description": "40 edited photos",
      "quantity": 1,
      "price": 425.5
    },
    {
      "name": "Print set",
      "description": null,
      "quantity": 2,
      "price": 30
    }
  ]
}

Scripts get the same tools as REST under /api/v1/dubsado, with the same key and price. When Dubsado refuses a call, such as a payment above the remaining balance, it fails and costs no credits. The tools table lists the REST path of each tool.

How much do the Dubsado API and MCP server cost?

About $18 a month for a studio with about 12 inquiries a month, 3,020 credits. Your Dubsado plan is billed by Dubsado as before.

JobCallsCredits
Proposal and contract to a new lead6 × 12720
Questionnaire brief before calls, weekly6 × 4240
Unsigned contracts and Booked moves, weekly5 × 4200
Log checks and e-transfers, weekly6 × 4240
Installment invoice out3 × 4120
Cloud Browser, 30 days1,500
Total3,020
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on Dubsado Starter, no Premier or Zapier needed

No one publishes the size of a typical Dubsado account, so the month is our example: a photographer booking 15 to 30 weddings a year from about 12 inquiries a month. Dollars at the $29 pack rate.

Dubsado MCP server on GitHub, Zapier or hosted: which to use

OptionWhat it doesWhere it stops
Zapier MCPCreate Project plus a raw API request, from any MCP client.Premier plan only, 2 Zapier tasks a call, nothing sent to clients.
mikaelweave/dubsado-cliA command line tool for agents that lists clients and forms as JSON.Read only, not an MCP server, no license; the session lasts about 3 days. Last commit 4 Apr 2026.
CarlyAn AI assistant that reacts to Dubsado events, such as a signed contract, and replies from your inbox.Runs on the Premier API token and its few events; AI agents from $35 a month.
MindCloudA done-for-you integration service with 11 Dubsado list actions.Read only lists, price on request.

Pick Zapier if a new project from a booking form is all you need. Pick the CLI if you want to read your clients from a terminal and keep the code. Pick Cotlet if an agent should send proposals, invoices and payment entries in your account on any plan.

Also listed on: Odel, mcpbeat

Who runs Cotlet

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev about the Dubsado tools.

Dubsado API and MCP server: questions

Can I use the API without an AI agent?

Yes. Use a scoped Cotlet API key and the signed-in Dubsado Cloud Browser session. You do not need to connect MCP for REST. Start with the REST guide.

Can I use n8n, Make or Zapier?

Yes. Use authenticated HTTP requests with your Cotlet key, or an MCP client for agent workflows. You configure the schedule, destination and record state. See app-specific workflows.

How do I get access?

Sign up free at https://cotlet.dev, open Dubsado under Integrations in the console and sign in to Dubsado in its Cloud Browser. Your free trial starts when you sign up, no card needed.

How do I connect Dubsado to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Dubsado once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Dubsado account through Cotlet, in their phone apps too.

What can ChatGPT do in Dubsado?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Dubsado: send a proposal to a new lead; summarize questionnaire answers before calls; chase unsigned contracts. You ask in plain words, and anything that reaches other people waits for your OK first.

Do I need the Premier plan or Zapier?

No. Cotlet works in your own Dubsado account and does not use the Zapier connection, which Dubsado limits to the Premier plan (checked 11 Oct 2026). Features your plan lacks stay unavailable: list_appointments needs the scheduler, which is a Premier feature, and a trial account has it.

Can my agent send a contract for signature?

Yes, in two steps. add_form_to_project applies your contract template to the project as a draft, and send_form emails the client the link, which you confirm by default. A project has one contract, so a second one is refused. Signing and countersigning happen in Dubsado: get_form shows who has signed, but no tool signs.

Which tools reach other people?

send_form and send_invoice email the client, and each waits for your OK by default, which you can switch off per tool. record_payment also waits for your OK but charges nobody and sends no email. create_client, create_project, add_form_to_project, create_invoice and update_project_status email nobody, though a Dubsado Flow you set up may react to a status change.

Will my agent overlap with my Dubsado Flows?

No. Flows keep running as you set them up. Your agent adds work on top of them, for example summarizing answers or drafting reminders, and Flows that start on a status change still run when update_project_status moves a project.

What can it not do yet?

No tool edits or deletes a client, project, invoice or payment, changes form templates or proposal packages, countersigns a contract, books an appointment, or reads Flows and lead capture submissions apart from the projects they create. Invoices take line items only: no taxes, payment plans or due dates. Payments are logged as received, never charged through Dubsado Payments.

Does Dubsado have webhooks?

None you set up yourself. The 5 Zapier triggers fire at once but need Premier and a Zapier plan, and a payment you log by hand fires none of them. To react to new leads or signatures, run your agent on a schedule with list_projects and list_project_forms.

Will Dubsado's own MCP server replace this?

Maybe for reading. Its terms of 14 Oct 2026 describe a Dubsado MCP server, and its Connected apps page calls the access read-only. Sending proposals and invoices, moving statuses and logging payments would still need Cotlet. We will say so here when it ships.

Is the MCP server different from the REST API?

Only in how you call it. Both have the same 16 tools, inputs and answers, one API key and one price. Agents use MCP; scripts, cron jobs and HTTP steps use REST.

Is Cotlet affiliated with Dubsado?

No. Cotlet is independent and not affiliated with Dubsado.


Give your AI agents your signed-in browser.

Product: Integrations · How it works · Pricing · Security

Resources: Blog · API docs · Help center · Changelog · GitHub

Solutions: For developers · For automation agencies

Company: About · AI info: company facts · Contact

Legal: Terms of service · Privacy policy · Refund policy · Acceptable use · Cookie policy · DPA · Subprocessors

Elsewhere: Status page · Cotlet on GitHub · Cotlet on X · Cotlet on LinkedIn · Cotlet on Product Hunt · Cotlet on Crunchbase · Cotlet on SaaSHub

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. About us

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.