Skip to main content
Glama

Quaderno MCP by usefulapi

Server Details

MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
70.8% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.8/5.0

Scored across 23 tools

Disambiguation3/5

Most tools target distinct resources and actions, but create_invoice and create_transaction both generate tax-compliant sale documents, making their boundary unclear. calculate_tax also overlaps conceptually with the tax calculation embedded in create_transaction, though the descriptions help separate the read-only case.

Naming Consistency4/5

The set follows a consistent verb_noun pattern across get_, list_, create_, and update_ tools, with clear singular/plural usage. calculate_tax and ping fit the style, but quaderno_request is a generic escape hatch that breaks the predictable naming convention.

Tool Count3/5

At 23 tools, the server is on the heavy side and falls in the 16-25 range that feels less scoped than ideal. However, the count is somewhat justified by the many distinct entity types covered, including contacts, invoices, items, credit notes, expenses, receipts, jurisdictions, and webhooks.

Completeness3/5

Core workflows like calculating tax, creating invoices/transactions, and managing contacts/items are covered, and every exposed resource has get/list access. Missing update/delete operations for most resources, read-only webhooks, and no direct creation paths for expenses/receipts/credit notes leave notable lifecycle gaps.

Available Tools

23 tools
calculate_taxCalculate tax rate
Read-only
Inspect

Calculate the correct tax rate/amount for a sale given the customer's location and product. This is Quaderno's flagship endpoint — it applies the right VAT / GST / US sales-tax rules per jurisdiction. READ-ONLY (no record is created). Quaderno API: GET /tax_rates/calculate. Returns { name, rate, country, region, county, city, tax_code, status (taxable|non_taxable|not_registered|reverse_charge), tax_amount, subtotal, total_amount }.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoTransaction date (YYYY-MM-DD); defaults to today.
amountNoTransaction amount to compute the tax on.
tax_idNoThe customer's tax ID / VAT number (may trigger reverse-charge).
to_cityNoThe customer's city (recommended for US sales tax).
currencyNoISO 4217 currency code (e.g. "USD").
tax_codeNoProduct tax code, e.g. "standard", "reduced", "exempt", "eservice", "ebook", "saas", "consulting".
to_streetNoThe customer's street address (recommended for US sales tax).
to_countryYesThe customer's country — 2-letter ISO code (e.g. "US", "DE"). Required.
from_countryNoThe seller's country (2-letter ISO); defaults to the account country.
product_typeNoWhether the product is a good or a service.
tax_behaviorNoWhether the amount includes tax or not.
to_postal_codeNoThe customer's ZIP / postal code (recommended for US sales tax).
from_postal_codeNoThe seller's postal code.
create_contactCreate a contact
Destructive
Inspect

MUTATES Quaderno data — create a contact (customer or vendor). Provide kind plus a name; use fields for any other Quaderno contact attribute (phone_1, region, postal_code, city, street_line_1/2, tax_status, language, discount, notes, processor/processor_id). Quaderno API: POST /contacts. Returns the created contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesContact kind.
emailNoContact email address.
fieldsNoAdditional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).
tax_idNoThe contact's tax ID / VAT number.
countryNo2-letter ISO country code.
last_nameNoThe person's last name (persons only).
first_nameNoFor a person: their first name. For a company: the company name (Quaderno stores it here).
contact_nameNoThe contact person's name at a company (companies only).
create_invoiceCreate an invoice
Destructive
Inspect

MUTATES Quaderno data — create an invoice for a contact. Provide contact_id (or a contact via fields) and items; use fields for any other attribute (currency, issue_date, due_date, po_number, notes, tag_list, custom_metadata, payment_details). Each item = { description, quantity, unit_price, tax_1_name?, tax_1_rate?, discount_rate?, … }. Quaderno API: POST /invoices. Returns the created invoice (incl. permalink, pdf).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoLine items, e.g. [{ description, quantity, unit_price, tax_1_name, tax_1_rate }].
notesNoFree-text notes on the invoice.
fieldsNoAdditional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).
currencyNoISO 4217 currency code.
due_dateNoDue date (YYYY-MM-DD).
po_numberNoPurchase-order number.
contact_idNoThe id of an existing contact to invoice. Omit only if you pass a full `contact` object via `fields`.
issue_dateNoIssue date (YYYY-MM-DD).
create_itemCreate a product (item)
Destructive
Inspect

MUTATES Quaderno data — create a product/item in the catalog. Provide name + unit_cost; use fields for any other attribute (code, description, tax_class, tax_type, currency, country, stock). Quaderno API: POST /items. Returns the created item.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoSKU / product code.
kindNoWhether it is a one-off or a subscription product.
nameYesProduct name.
fieldsNoAdditional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).
currencyNoISO 4217 currency code.
unit_costYesUnit price of the product.
product_typeNoWhether the product is a good or a service.
create_transactionCreate a transaction
Destructive
Inspect

MUTATES Quaderno data — record a sale or refund transaction (Quaderno computes tax and produces the compliant document). Provide the customer, items, and payment. Use fields for any other attribute (date, currency, shipping_address, evidence, processor, processor_id, processor_fee_cents, exchange_rate, po_number, notes, tags, custom_metadata). Quaderno API: POST /transactions. Returns the created invoice/credit-note object.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoTransaction type (default "sale").
itemsYesRequired. Transaction line items, e.g. [{ description, amount, quantity, tax_code, product_type }].
fieldsNoAdditional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).
paymentNoPayment object, e.g. { payment_method, amount, date }.
currencyNoISO 4217 currency code.
customerNoThe customer contact object (or reference), e.g. { first_name, last_name, email, country, tax_id }.
get_contactGet a contact
Read-only
Inspect

Fetch a single contact by id. Quaderno API: GET /contacts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
get_credit_noteGet a credit note
Read-only
Inspect

Fetch a single credit note by id. Quaderno API: GET /credit_notes/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
get_expenseGet an expense
Read-only
Inspect

Fetch a single expense by id. Quaderno API: GET /expenses/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
get_invoiceGet an invoice
Read-only
Inspect

Fetch a single invoice by id (full object incl. items, taxes, payments, permalink, pdf). Quaderno API: GET /invoices/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
get_itemGet a product (item)
Read-only
Inspect

Fetch a single product/item by id. Quaderno API: GET /items/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
get_receiptGet a receipt
Read-only
Inspect

Fetch a single receipt by id. Quaderno API: GET /receipts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
list_contactsList contacts
Read-only
Inspect

List contacts (customers/vendors), newest first. Quaderno API: GET /contacts. Returns contact objects (id, kind, first_name, last_name, contact_name, email, country, tax_id, tax_status, …), wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by contact name, email, or tax ID.
pageNoPage number (legacy pagination; prefer created_before).
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_credit_notesList credit notes
Read-only
Inspect

List credit notes (refund documents), newest first. Quaderno API: GET /credit_notes. Wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by number, customer name, or PO number.
dateNoDate range filter, e.g. "2026-01-01,2026-12-31".
pageNoPage number (legacy pagination; prefer created_before).
contactNoFilter by customer (contact) id.
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_expensesList expenses
Read-only
Inspect

List expenses (bills you received), newest first. Quaderno API: GET /expenses. Wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by number or vendor name.
dateNoDate range filter, e.g. "2026-01-01,2026-12-31".
pageNoPage number (legacy pagination; prefer created_before).
contactNoFilter by vendor (contact) id.
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_invoicesList invoices
Read-only
Inspect

List invoices, newest first, with optional filters. Quaderno API: GET /invoices. Returns invoice objects (id, number, issue_date, due_date, currency, contact, items, taxes, payments, state, total_cents, subtotal_cents), wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by invoice number, customer name, or PO number.
dateNoDate range filter, e.g. "2026-01-01,2026-12-31".
pageNoPage number (legacy pagination; prefer created_before).
stateNoFilter by invoice state.
contactNoFilter by customer (contact) id.
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_itemsList products (items)
Read-only
Inspect

List products/items in the catalog, newest first. Quaderno API: GET /items. Returns item objects (id, code, name, kind, product_type, unit_cost, tax_class, tax_type, currency, stock, …), wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (legacy pagination; prefer created_before).
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_jurisdictionsList tax jurisdictions
Read-only
Inspect

List the tax jurisdictions (id, name, country, region) where the account is registered to collect tax. Quaderno API: GET /jurisdictions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

list_receiptsList receipts
Read-only
Inspect

List receipts, newest first. Quaderno API: GET /receipts. Wrapped as { data, pagination } when more pages exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by number or customer name.
dateNoDate range filter, e.g. "2026-01-01,2026-12-31".
pageNoPage number (legacy pagination; prefer created_before).
contactNoFilter by customer (contact) id.
per_pageNoEntries per page (1-100, default 25).
created_beforeNoCursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).
list_tax_codesList tax codes
Read-only
Inspect

List the product tax codes Quaderno supports (id, name, description) — used as the tax_code on products / tax calculations. Quaderno API: GET /tax_codes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

list_webhooksList webhooks
Read-only
Inspect

List the account's configured webhooks (id, url, events). Quaderno API: GET /webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

pingPing (verify auth)
Read-only
Inspect

Verify the API key and connection by pinging Quaderno. Returns account/authentication status. Quaderno API: GET /ping.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

quaderno_requestRaw read request
Read-only
Inspect

Power-user escape hatch: GET any Quaderno API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Path is taken after /api (e.g. "/tax_ids", "/evidence"). Quaderno API: GET {path}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAPI path after /api, starting with a slash, e.g. "/tax_ids".
queryNoOptional query params object.
update_contactUpdate a contact
Destructive
Inspect

MUTATES Quaderno data — update an existing contact. Only the fields you pass are changed; use fields for any attribute not typed here. Quaderno API: PUT /contacts/{id}. Returns the updated contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource id.
emailNoContact email address.
fieldsNoAdditional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).
tax_idNoTax ID / VAT number.
countryNo2-letter ISO country code.
last_nameNoPerson last name.
first_nameNoPerson first name / company name.
contact_nameNoContact person at a company.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updates
    • Changedcalculate_tax1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_invoice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_item1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_transaction1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_credit_note1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_expense1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_invoice1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_item1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_receipt1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_contacts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_credit_notes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_expenses1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_invoices1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_items1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_jurisdictions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_receipts1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_tax_codes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_webhooks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedping1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedquaderno_request1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedupdate_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 23 tool updates
    • First observedcalculate_tax
    • First observedcreate_contact
    • First observedcreate_invoice
    • First observedcreate_item
    • First observedcreate_transaction
    • First observedget_contact
    • First observedget_credit_note
    • First observedget_expense
    • First observedget_invoice
    • First observedget_item
    • First observedget_receipt
    • First observedlist_contacts
    • First observedlist_credit_notes
    • First observedlist_expenses
    • First observedlist_invoices
    • First observedlist_items
    • First observedlist_jurisdictions
    • First observedlist_receipts
    • First observedlist_tax_codes
    • First observedlist_webhooks
    • First observedping
    • First observedquaderno_request
    • First observedupdate_contact

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing guarded access to a B2B SaaS billing database (customers, subscriptions, invoices, credit notes) and live ECB exchange rates, with read-only tools and one capped, idempotent write for issuing credit notes.
    -
  • A
    license
    C
    quality
    C
    maintenance
    MCP server for smallinvoice.ch — Swiss SME invoicing and accounting with 146 tools and OAuth2 BYOC authentication.
    100
    9 npm
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for VoxFactura enabling AI assistants to query business data (invoices, expenses, project margins, clients, VAT) and create draft quotes or mark invoices paid via a scoped API, with no direct client sends.
    22
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.