Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:72a22cafbd92334ba34af0e24104d0d548910cf74f1120abb60a7134ad2a81de
What it is
What a remote MCP server returned when asked what it offers: 23 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "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 }.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "amount": { "description": "Transaction amount to compute the tax on.", "type": "number" }, "currency": { "description": "ISO 4217 currency code (e.g. \"USD\").", "type": "string" }, "date": { "description": "Transaction date (YYYY-MM-DD); defaults to today.", "type": "string" }, "from_country": { "description": "The seller's country (2-letter ISO); defaults to the account country.", "type": "string" }, "from_postal_code": { "description": "The seller's postal code.", "type": "string" }, "product_type": { "description": "Whether the product is a good or a service.", "enum": [ "good", "service" ], "type": "string" }, "tax_behavior": { "description": "Whether the amount includes tax or not.", "enum": [ "inclusive", "exclusive" ], "type": "string" }, "tax_code": { "description": "Product tax code, e.g. \"standard\", \"reduced\", \"exempt\", \"eservice\", \"ebook\", \"saas\", \"consulting\".", "type": "string" }, "tax_id": { "description": "The customer's tax ID / VAT number (may trigger reverse-charge).", "type": "string" }, "to_city": { "description": "The customer's city (recommended for US sales tax).", "type": "string" }, "to_country": { "description": "The customer's country — 2-letter ISO code (e.g. \"US\", \"DE\"). Required.", "type": "string" }, "to_postal_code": { "description": "The customer's ZIP / postal code (recommended for US sales tax).", "type": "string" }, "to_street": { "description": "The customer's street address (recommended for US sales tax).", "type": "string" } }, "required": [ "to_country" ], "type": "object" }, "name": "calculate_tax", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact_name": { "description": "The contact person's name at a company (companies only).", "type": "string" }, "country": { "description": "2-letter ISO country code.", "type": "string" }, "email": { "description": "Contact email address.", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).", "propertyNames": { "type": "string" }, "type": "object" }, "first_name": { "description": "For a person: their first name. For a company: the company name (Quaderno stores it here).", "type": "string" }, "kind": { "description": "Contact kind.", "enum": [ "company", "person" ], "type": "string" }, "last_name": { "description": "The person's last name (persons only).", "type": "string" }, "tax_id": { "description": "The contact's tax ID / VAT number.", "type": "string" } }, "required": [ "kind" ], "type": "object" }, "name": "create_contact", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact_id": { "description": "The id of an existing contact to invoice. Omit only if you pass a full `contact` object via `fields`.", "type": "string" }, "currency": { "description": "ISO 4217 currency code.", "type": "string" }, "due_date": { "description": "Due date (YYYY-MM-DD).", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).", "propertyNames": { "type": "string" }, "type": "object" }, "issue_date": { "description": "Issue date (YYYY-MM-DD).", "type": "string" }, "items": { "description": "Line items, e.g. [{ description, quantity, unit_price, tax_1_name, tax_1_rate }].", "items": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "type": "array" }, "notes": { "description": "Free-text notes on the invoice.", "type": "string" }, "po_number": { "description": "Purchase-order number.", "type": "string" } }, "type": "object" }, "name": "create_invoice", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "code": { "description": "SKU / product code.", "type": "string" }, "currency": { "description": "ISO 4217 currency code.", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).", "propertyNames": { "type": "string" }, "type": "object" }, "kind": { "description": "Whether it is a one-off or a subscription product.", "enum": [ "one_off", "subscription" ], "type": "string" }, "name": { "description": "Product name.", "type": "string" }, "product_type": { "description": "Whether the product is a good or a service.", "enum": [ "good", "service" ], "type": "string" }, "unit_cost": { "description": "Unit price of the product.", "type": "number" } }, "required": [ "name", "unit_cost" ], "type": "object" }, "name": "create_item", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "currency": { "description": "ISO 4217 currency code.", "type": "string" }, "customer": { "additionalProperties": {}, "description": "The customer contact object (or reference), e.g. { first_name, last_name, email, country, tax_id }.", "propertyNames": { "type": "string" }, "type": "object" }, "fields": { "additionalProperties": {}, "description": "Additional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).", "propertyNames": { "type": "string" }, "type": "object" }, "items": { "description": "Required. Transaction line items, e.g. [{ description, amount, quantity, tax_code, product_type }].", "items": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "type": "array" }, "payment": { "additionalProperties": {}, "description": "Payment object, e.g. { payment_method, amount, date }.", "propertyNames": { "type": "string" }, "type": "object" }, "type": { "description": "Transaction type (default \"sale\").", "enum": [ "sale", "refund" ], "type": "string" } }, "required": [ "items" ], "type": "object" }, "name": "create_transaction", "outputSchema": null }, { "description": "Fetch a single contact by id. Quaderno API: GET /contacts/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_contact", "outputSchema": null }, { "description": "Fetch a single credit note by id. Quaderno API: GET /credit_notes/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_credit_note", "outputSchema": null }, { "description": "Fetch a single expense by id. Quaderno API: GET /expenses/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_expense", "outputSchema": null }, { "description": "Fetch a single invoice by id (full object incl. items, taxes, payments, permalink, pdf). Quaderno API: GET /invoices/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_invoice", "outputSchema": null }, { "description": "Fetch a single product/item by id. Quaderno API: GET /items/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_item", "outputSchema": null }, { "description": "Fetch a single receipt by id. Quaderno API: GET /receipts/{id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "description": "The resource id.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_receipt", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" }, "q": { "description": "Search by contact name, email, or tax ID.", "type": "string" } }, "type": "object" }, "name": "list_contacts", "outputSchema": null }, { "description": "List credit notes (refund documents), newest first. Quaderno API: GET /credit_notes. Wrapped as { data, pagination } when more pages exist.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact": { "description": "Filter by customer (contact) id.", "type": "string" }, "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "date": { "description": "Date range filter, e.g. \"2026-01-01,2026-12-31\".", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" }, "q": { "description": "Search by number, customer name, or PO number.", "type": "string" } }, "type": "object" }, "name": "list_credit_notes", "outputSchema": null }, { "description": "List expenses (bills you received), newest first. Quaderno API: GET /expenses. Wrapped as { data, pagination } when more pages exist.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact": { "description": "Filter by vendor (contact) id.", "type": "string" }, "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "date": { "description": "Date range filter, e.g. \"2026-01-01,2026-12-31\".", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" }, "q": { "description": "Search by number or vendor name.", "type": "string" } }, "type": "object" }, "name": "list_expenses", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact": { "description": "Filter by customer (contact) id.", "type": "string" }, "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "date": { "description": "Date range filter, e.g. \"2026-01-01,2026-12-31\".", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" }, "q": { "description": "Search by invoice number, customer name, or PO number.", "type": "string" }, "state": { "description": "Filter by invoice state.", "enum": [ "outstanding", "late", "uncollectible", "paid" ], "type": "string" } }, "type": "object" }, "name": "list_invoices", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "list_items", "outputSchema": null }, { "description": "List the tax jurisdictions (id, name, country, region) where the account is registered to collect tax. Quaderno API: GET /jurisdictions.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_jurisdictions", "outputSchema": null }, { "description": "List receipts, newest first. Quaderno API: GET /receipts. Wrapped as { data, pagination } when more pages exist.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact": { "description": "Filter by customer (contact) id.", "type": "string" }, "created_before": { "description": "Cursor for pagination: return records created before this id (from X-Pages-NextPage / a prior record id).", "type": "string" }, "date": { "description": "Date range filter, e.g. \"2026-01-01,2026-12-31\".", "type": "string" }, "page": { "description": "Page number (legacy pagination; prefer created_before).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "description": "Entries per page (1-100, default 25).", "maximum": 100, "minimum": 1, "type": "integer" }, "q": { "description": "Search by number or customer name.", "type": "string" } }, "type": "object" }, "name": "list_receipts", "outputSchema": null }, { "description": "List the product tax codes Quaderno supports (id, name, description) — used as the tax_code on products / tax calculations. Quaderno API: GET /tax_codes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_tax_codes", "outputSchema": null }, { "description": "List the account's configured webhooks (id, url, events). Quaderno API: GET /webhooks.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_webhooks", "outputSchema": null }, { "description": "Verify the API key and connection by pinging Quaderno. Returns account/authentication status. Quaderno API: GET /ping.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "ping", "outputSchema": null }, { "description": "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}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "path": { "description": "API path after /api, starting with a slash, e.g. \"/tax_ids\".", "type": "string" }, "query": { "additionalProperties": {}, "description": "Optional query params object.", "propertyNames": { "type": "string" }, "type": "object" } }, "required": [ "path" ], "type": "object" }, "name": "quaderno_request", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contact_name": { "description": "Contact person at a company.", "type": "string" }, "country": { "description": "2-letter ISO country code.", "type": "string" }, "email": { "description": "Contact email address.", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional raw Quaderno fields merged into the request body (escape hatch for any field not typed above).", "propertyNames": { "type": "string" }, "type": "object" }, "first_name": { "description": "Person first name / company name.", "type": "string" }, "id": { "description": "The resource id.", "type": "string" }, "last_name": { "description": "Person last name.", "type": "string" }, "tax_id": { "description": "Tax ID / VAT number.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "update_contact", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:72a22cafbd92334ba34af0e24104d0d548910cf74f1120abb60a7134ad2a81de | sha256sum