← All integrations

Quaderno MCP server

48 operations0 webhooks

Calculate tax, issue invoices and credit notes, and manage customers, products and webhooks.

Try Quaderno with your agent

Connect Quaderno, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.

Using Corsair, show me what you can do in Quaderno on my account, then run one read-only example and show me the result.

Runs once, when you ask

Quaderno tools and triggers

Tools are what your agent can do in Quaderno through Corsair's MCP server. Triggers are the Quaderno events a routine can start from.

Proformas

  • AcceptWrite

    Marks a proforma accepted. A state change the customer would normally trigger; reversible with `proformas.revert`.

    proformas.accept

  • ConvertWrite

    Converts an accepted proforma into a real invoice, which **consumes an invoice number and cannot be undone**. Only a proforma in the accepted state can be converted. Returns the new invoice under `invoice`.

    proformas.convert

  • CreateWrite

    Creates a proforma. Unlike an invoice this is not a tax document, so it does not consume an invoice number.

    proformas.create

  • DeclineWrite

    Marks a proforma declined. Reversible with `proformas.revert`.

    proformas.decline

  • DeliverWrite

    Emails the proforma to the address on file for its contact. A GET that mutates, so it is a write and is never replayed. Answers `delivered: true`.

    proformas.deliver

  • GetRead-only

    One proforma by id, with its lines and the state it was accepted or declined in.

    proformas.get

  • ListRead-only

    Proforma invoices, newest first, as a bare array. A proforma is not a tax document, so it carries no invoice number.

    proformas.list

  • RevertWrite

    Puts an accepted or declined proforma back to its open state.

    proformas.revert

  • UpdateWrite

    Changes a proforma. Only the id is required. An accepted or invoiced proforma cannot be changed. It stays a proforma until `proformas.convert` issues a real invoice.

    proformas.update

Invoices

  • CreateWrite

    Issues an invoice and **allocates a document number**, which is not recoverable: invoices cannot be deleted, only voided. Passing `payment_method` records a full payment immediately and marks it paid. Needs a `contact` id and at least one line item.

    invoices.create

  • DeliverWrite

    Sends the invoice by email to the address on file for its contact, using the account template. A **GET that mutates**, so it is a write here and never replayed: delivering twice emails twice. The contact needs a valid email. Answers no document, only `delivered: true`.

    invoices.deliver

  • GetRead-only

    One invoice with its lines, taxes and payments. An unknown id answers 401 rather than 404.

    invoices.get

Connect Quaderno to Claude, ChatGPT or Cursor

  1. 1

    Connect Quaderno in Corsair

    Add your Quaderno API key once in Corsair. Corsair stores the credential encrypted and makes the Quaderno API calls for your agent, so it never goes into a prompt or a config file. Connect Quaderno

    If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Quaderno. On a ChatGPT personal plan, connect Quaderno here first.

  2. 2

    Add Corsair's MCP server to your agent

    Every client uses the same address:

    https://mcp.corsair.dev/mcp
    Open Customize → Connectors → Add custom connector, paste the address, then select Connect.

    Codex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client

  3. 3

    Sign in and choose what needs your approval

    Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Quaderno's read and write operations run right away and its 5 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.

FAQ

Install corsair and @corsair-dev/quaderno, add the Quaderno plugin, and connect with an API key. Then call methods like corsair.quaderno.api.authorization() from your app. Corsair keeps each tenant isolated.

Yes. Quaderno requires an API key from your Quaderno account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.

Yes. One Corsair client can hit Quaderno, GitHub, Notion, Stripe, and the rest. Trigger Quaderno from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.

Teams use Corsair for calculate tax, issue invoices and credit notes, and manage customers, products and webhooks. Common builds include sync jobs, admin tooling, and agents that call Quaderno APIs from your backend.

The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Quaderno API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.

We maintain @corsair-dev/quaderno in the open repo. When Quaderno ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.

No. Corsair does not read your Quaderno data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Quaderno data on your behalf.

Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.

Yes. Put Quaderno on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 5 destructive Quaderno operations. You can change a link's mode at hub.corsair.dev/me.