Skip to main content
Glama
Zenskar MCP Server

Zenskar MCP Server

Official
by zenskar

Zenskar MCP Server

MCP server for the Zenskar API. 115 tools covering customers, contracts, invoices, payments, credit notes, accounting, products, plans, entitlements, billable metrics, and more.

What it does

  • Customers: list, search, create, update, delete, addresses, contacts, payment methods

  • Contracts: create, read, update, delete, amend, add phases and pricing, pause/resume, expire

  • Invoices: list, get, approve, void, generate, credit notes, download

  • Payments: create, edit, refund, delete, auto-charge

  • Credit notes: list, create against invoice, get by ID

  • Accounting: chart of accounts, journal entries and lines, balance sheet, income statement, account balances

  • Products: CRUD, pricing configurations

  • Plans: list, create, add products, preview estimates

  • Entitlements: list, get, create, update, delete

  • Billable metrics (aggregates): list, get, create, update, delete, schemas, estimates, logs

  • Business entities: list, get, create, update

  • Jobs: monitor async operations

  • Custom attributes and tax categories

  • Multi-tenant, supports Bearer token and API key auth

Related MCP server: QuickBooks Online MCP Server

Prerequisites

Before continuing, you need two things:

  1. Node.js 20.10 or newer on your machine

  2. Zenskar credentials — your Organization ID and an API Key

Node.js

Check whether it's already installed. Open a terminal and run:

node --version
npm --version

This project requires Node.js 20.10 or newer. If both commands print a version that meets this, jump to Zenskar credentials.

If you see command not found or a version older than 20.10, download and install the LTS build from https://nodejs.org/en/download. npm (and npx) ship with Node.js — no separate install needed. After installing, open a new terminal window and re-run node --version to confirm.

Zenskar credentials

You need two values from your Zenskar dashboard. Grab both before moving to Installation.

Organization ID — open https://app.zenskar.com/settings (General tab) and copy your Organization ID.

API Key — open https://app.zenskar.com/settings?tab=api-keys, click Create new API key, give it a name, and copy the key.

Store the API key somewhere safe — the dashboard only shows the full key once. If you lose it, you'll have to create a new one.

Installation

For Claude Desktop App

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "zenskar": {
      "command": "npx",
      "args": ["mcp-zenskar"],
      "env": {
        "ZENSKAR_ORGANIZATION": "your-org-id",
        "ZENSKAR_API_KEY": "your-api-key"
      }
    }
  }
}

You can omit one or both environment variables from the config, but the server will error until Claude supplies them in a tool call. Keeping them in the env block prevents repeated credential prompts.

For Other AI Applications

Install globally:

npm install -g mcp-zenskar

Or run directly:

npx mcp-zenskar

Authentication

Every request needs:

  1. Organization ID — set via ZENSKAR_ORGANIZATION

  2. API Key — set via ZENSKAR_API_KEY

See Zenskar credentials above for how to get both.

At runtime the server reads these env vars (or accepts them from the MCP client via tool invocation).

Advanced: bearer tokens

Same session token from your browser devtools is also accepted via ZENSKAR_AUTH_TOKEN (sent as Authorization: Bearer ...). Short-lived — API key is preferred for any non-throwaway use. Kept for backward compatibility, so existing configs that use ZENSKAR_AUTH_TOKEN continue to work unchanged.

Usage

In Claude Desktop

Once configured, you can ask Claude to interact with your Zenskar data:

"Show me my recent customers"
"Find the contract for Acme Corp and add a $500/month add-on phase"
"Create a $25 credit note against the latest invoice for customer X"
"Show me the balance sheet and income statement"
"List all products and their pricing configurations"
"Record a $1000 successful manual payment or tax withheld amount against invoice Y"

Available Tools

Customers

Tool

Description

listCustomers

List customers with search, filtering, and pagination

getCustomerById

Get a customer by ID

createCustomer

Create a customer with address and tax info

updateCustomer

Update customer details (partial update)

deleteCustomer

Permanently delete a customer by ID (only allowed when they have no active contracts or unpaid invoices)

Contacts

Tool

Description

listContacts

List contacts with pagination

getContactById

Get a contact by ID

createContact

Create a contact for a customer

updateContact

Update a contact's details

deleteContact

Delete a contact by ID

Contracts

Tool

Description

listContracts

List contracts with filtering by status, customer, dates

getContractById

Get a contract with phases, pricings, and customer details

createContract

Create a contract with phases and pricing

updateContract

Update contract terms, status, pricing, or renewal policy

deleteContract

Delete a draft contract

getContractAmendments

Get amendment history for a contract

createContractPhase

Add a phase to a contract (add-ons, expansions)

createContractPhasePricing

Add pricing to a contract phase

expireContract

Expire an active contract

pauseContract

Pause an active contract from a given start date, with an unpause-extension policy (extend or overlap) and optional end date for auto-resume

editPauseContract

Edit an existing pause phase — set or change the resume date, shift the start, or change the unpause policy

resumeContract

Resume a paused contract

createContractPrompt

Create a contract prompt

extractContractFromRaw

Extract contract data from raw text using AI

Invoices

Tool

Description

listInvoices

List invoices with filtering by customer, status, dates

getInvoiceById

Get an invoice by ID

getInvoiceByExternalId

Get an invoice by external ID

getInvoiceGenerationStatus

Check invoice generation status

downloadInvoice

Download invoice in JSON format

getInvoiceContractJsonActuals

Get contract actuals for an invoice

getInvoicePayments

Get successful payments currently mapped to an invoice

getInvoicePaymentsById

Get successful payments for a specific invoice ID

getInvoicePaymentsWithoutRefunds

Get original payment records for an invoice, excluding refund payment rows

getInvoiceLineItems

Get invoice line items and pricing details

getInvoiceSummary

Get invoice summary

getAllInvoiceTags

Get all available invoice tags

generateInvoicePaymentLink

Generate a payment link for an invoice

payInvoice

Initiate payment for an invoice

approveInvoice

Approve an invoice for billing

voidInvoice

Void an invoice

deleteInvoice

Delete a draft invoice

generateInvoice

Generate an invoice for a contract and date range

createInvoiceCreditNote

Create a credit note against an invoice

createInvoiceCharge

Auto-charge an invoice via payment gateway

Payments

Tool

Description

listAllPayments

List all payments with filtering and sorting, including refund records

getPaymentById

Get a payment by ID

createPayment

Record a successful manual/offline payment or tax withheld amount

updatePayment

Update a payment's invoice allocations (payment_parts)

deleteManualPayment

Delete a manual payment

editManualPayment

Edit a manual payment's amount or method

refundPayment

Refund a payment (full or partial)

Credit Notes

Tool

Description

listCreditNotes

List credit notes with pagination

getCreditNoteById

Get a credit note by ID

Products and Pricing

Tool

Description

listProducts

List products in the catalog

getProductById

Get a product by ID

createProduct

Create a product

updateProduct

Update a product's details

getProductPricings

Get pricing configs for a product

createProductPricing

Create a pricing config for a product

Plans (Templates)

Tool

Description

listPlans

List plan templates

getPlanById

Get a plan by ID with phases and pricing

createPlan

Create a plan template

Accounting

Tool

Description

getChartOfAccounts

Get the full chart of accounts

listAccounts

List GL accounts with filtering

createAccount

Create a GL account

listJournalEntries

List journal entries with filtering

createJournalEntry

Create a manual journal entry

getJournalEntry

Get a journal entry by ID with all lines

listJournalLines

List journal lines across all entries

getBalanceSheet

Get the balance sheet report

getIncomeStatement

Get the income statement (P&L)

getAccountBalance

Get balance for a specific GL account

recogniseRevenue

Trigger revenue recognition up to a date

Custom Attributes and Tax

Tool

Description

listCustomAttributes

List custom attribute definitions

createCustomAttribute

Create a custom attribute definition

listTaxCategories

List tax categories

createTaxCategory

Create a tax category

Jobs

Tool

Description

listJobs

List async jobs (invoice gen, rev rec, etc.)

getJobById

Get a job by ID to check status

Business Entities

Tool

Description

listBusinessEntities

List business entities

getBusinessEntityById

Get a business entity by ID

createBusinessEntity

Create a business entity

updateBusinessEntity

Update a business entity

Customer Addresses and Payment Methods

Tool

Description

listCustomerAddresses

List addresses for a customer

createCustomerAddress

Add an address to a customer

updateCustomerAddress

Update a customer address

listPaymentMethods

List payment methods for a customer

attachPaymentMethod

Attach a payment method to a customer

deletePaymentMethod

Delete a payment method from a customer

Metrics and Usage Events

Tool

Description

listAggregates

List Billable Metrics with filtering; backend/API may also call these aggregates

getAggregateSchemas

Show the underlying schemas for Billable Metrics (Aggregates); mainly useful for debugging or integration work

getAggregateEstimates

Get Billable Metric estimates; backend/API may also call these aggregates

getAggregateById

Get a Billable Metric by ID; backend/API may also call it an aggregate

getAggregateLogs

Get logs for a Billable Metric (Aggregate)

createAggregate

Create a Billable Metric (Aggregate)

updateAggregate

Update a Billable Metric (Aggregate)

deleteAggregate

Delete a Billable Metric (Aggregate)

listRawMetrics

List Usage Events with filtering; backend/API may also call these raw metrics

createRawMetric

Create a Usage Event schema; backend/API calls this a raw metric

getRawMetricById

Get a Usage Event by ID; backend/API may also call it a raw metric

getRawMetricLogs

Get recent event rows for a Usage Event using the same preview-query path as the frontend

getRawMetricBySlug

Get a Usage Event by API slug; backend/API may also call it a raw metric

ingestRawMetricEvent

Ingest a usage event

ingestRawMetricEventsBulk

Ingest multiple usage events (up to 500) for a resource slug in a single call

Entitlements

Tool

Description

listEntitlements

List entitlements with filtering

getEntitlementById

Get an entitlement by ID

createEntitlement

Create an entitlement

updateEntitlement

Update an entitlement

deleteEntitlement

Delete an entitlement

Other

Tool

Description

getCustomerPortalConfiguration

Get customer portal config

getCurrentDateTime

Get current date/time in multiple formats

Security

  • All requests require a valid organization ID and auth token

  • No credentials are stored by the server

  • Auth is passed through from the client

Development

This repo uses pnpm for package management. If you don't have it, install it once with npm install -g pnpm (or corepack enable && corepack prepare pnpm@latest --activate).

# Clone the repository
git clone https://github.com/zenskar/mcp-zenskar
cd mcp-zenskar

# Install dependencies
pnpm install

# Build the bundle (produces dist/server.mjs + dist/mcp-config.json)
pnpm run build

# Run the server
pnpm start

Developing Locally Without Publishing

If you want Claude Desktop to use a local checkout instead of the npm package:

# Install dependencies + build the bundle
pnpm install
pnpm run build

# Optional: install the local build globally (requires dist/ from the previous step)
npm install -g .

Then either point Claude to the globally-installed binary (usually $(npm bin -g)/mcp-zenskar) or call the built bundle directly:

{
  "command": "node",
  "args": ["/absolute/path/to/mcp-zenskar/dist/server.mjs"],
  "env": {
    "ZENSKAR_ORGANIZATION": "your-org-id",
    "ZENSKAR_AUTH_TOKEN": "your-token"
  }
}

To iterate on src/server.js without rebuilding, run it directly — npm install already installs the bundler's devDependencies which include the runtime libs:

{
  "command": "node",
  "args": ["/absolute/path/to/mcp-zenskar/src/server.js"]
}

Configuration

The server uses src/mcp-config.json to define available tools and API endpoints. This file contains the complete mapping of MCP tools to Zenskar API operations. All tools are declarative — no code changes needed to add new tools.

License

MIT

Support

For issues and support:

Available Tools

114 tools
approveInvoiceapproveInvoiceA

Approve an invoice; sets status to approved. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
invoiceIdYesThe unique ID of the invoice to approve (required).
send_emailNoWhether to send email notification (defaults to false).
check_duplicate_invoiceNoWhether to check for duplicate invoices (defaults to true).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
attachPaymentMethodattachPaymentMethodC

Attach a payment method to a customer.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier of the customer.
payment_method_idYesThe payment method ID (from payment gateway) to attach.
connectorNoPayment provider connector config object (e.g., {"name": "stripe", "reference_id": "cus_xxx"}). Either field is optional. If omitted, backend auto-detects from resource mappings.
set_as_defaultNoWhether to set as the default payment method.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createAccountcreateAccountC

Create a new accounting (GL) account.

NameRequiredDescriptionDefault
nameYesName of the account.
account_categoryYesCategory of account. Valid values: 'Assets', 'Liabilities', 'Equity', 'Income', 'Expenses'.
descriptionNoDescription of the account.
custom_dataNoCustom data object for the account.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createAggregatecreateAggregateB

Create a new Billable Metric. Requires a name, data schema, aggregation queries, visual query builder config, and a data source. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
nameYesName of the billable metric (required).
dataschemaYesData schema of the aggregate (JSON string, required).
aggregation_queryYesAggregate query — SQL/Jinja template for computing the metric (required).
cust_agg_queryYesCustomer aggregate query — SQL/Jinja template for customer-level computation (required).
visual_query_builderYesVisual query builder configuration object (required).
datasourceYesData source UUID (required).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createBusinessEntitycreateBusinessEntityA

Creates a new business entity in the system with various attributes including name, address, contact details, tax configuration, and logo. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
nameYesBusiness Entity Name (required).
emailNoBusiness Entity email address (optional).
phone_numberNoBusiness Entity phone number with country code (optional).+911234567890
is_defaultNoWhether this is the default business entity (defaults to false).
logo_urlNoBusiness Entity logo URL (optional).
tax_configNoBusiness Entity tax configuration as JSON object (optional).
address_line1NoAddress line 1 (optional).
address_line2NoAddress line 2 (optional).
address_line3NoAddress line 3 (optional).
address_cityNoAddress city (optional).
address_stateNoAddress state (optional).
address_zipCodeNoAddress zip code (optional).
address_countryNoAddress country (optional).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createContactcreateContactB

Create a new contact associated with a customer.

NameRequiredDescriptionDefault
customerYesThe customer ID (UUID) to associate this contact with.
first_nameNoFirst name of the contact.
last_nameNoLast name of the contact.
emailYesEmail address of the contact.
send_contractNoWhether to send contracts to this contact.
send_invoiceNoWhether to send invoices to this contact.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createContractcreateContractA

Create a new contract in Zenskar. Use this after extracting contract data via extractContractFromRaw and creating a customer via createCustomer. The contract includes customer details, pricing phases, products, and billing configuration.

NameRequiredDescriptionDefault
nameYesContract name (required).
descriptionNoContract description (optional).
statusNoContract status (required, typically 'draft' for new contracts).draft
currencyNoCurrency code for the contract (e.g., 'USD', 'EUR').USD
start_dateYesContract start date in ISO 8601 format (e.g., '2025-01-01T00:00:00.000000').
end_dateNoContract end date in ISO 8601 format (e.g., '2025-12-31T23:59:59.999999'). Optional — omit for open-ended contracts.
anchor_dateNoAnchor date for billing cycles in ISO 8601 format (defaults to start_date).
customer_idYesThe ID of the customer for this contract (required, UUID format).
renewal_policyNoContract renewal policy. Currently only 'do_not_renew' is supported at runtime.do_not_renew
bill_parent_customerNoWhether to bill the parent customer (defaults to false).
phasesNoArray of contract phases with pricing details. Each phase includes name, start_date, end_date, phase_type, and pricings array. Defaults to empty array if omitted.
sourceNoSource information for the contract (e.g., {source_type: 'ai', source_id: 'uuid'}).
custom_attributesNoCustom attributes for the contract as key-value pairs.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createContractPhasecreateContractPhaseA

Add a new phase to an existing contract. Use this for add-on expansions, mid-contract changes, or creating distinct billing periods with different pricing. Phase type enum: active, pause, trial.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to add a phase to.
nameYesName for this contract phase (e.g. 'Add-On Phase', 'Expansion Phase').
start_dateNoPhase start date in ISO 8601 format.
end_dateNoPhase end date in ISO 8601 format.
phase_typeNoType of phase: active, pause, or trial.
descriptionNoDescription of this phase.
pricingsNoArray of pricing configurations for this phase.
source_plan_phase_idNoUUID of the plan phase template this was derived from.
phase_metadataNoAdditional metadata for this phase as key-value pairs.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createContractPhasePricingcreateContractPhasePricingA

Add pricing to a contract phase. REQUIRED: pass EXACTLY ONE of pricing_id (reference an existing product pricing) OR pricing (inline pricing object) — never both, never neither. Pair with product_id (existing product) or inline product to associate with a product.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract.
phaseIdYesThe unique identifier (UUID) of the phase to add pricing to.
pricing_idNoUUID of an existing product pricing to reference. Either this or inline pricing must be provided.
product_idNoUUID of the product this pricing is for.
pricingNoInline pricing configuration object. Either this or pricing_id must be provided.
productNoInline product definition object (name, description, sku, tax_codes, etc.).
start_dateNoPricing start date in ISO 8601 format.
end_dateNoPricing end date in ISO 8601 format.
anchor_dateNoBilling anchor date for this pricing.
external_idNoExternal identifier for this pricing entry.
custom_dataNoCustom metadata for this pricing.
descriptionNoDescription for this pricing entry.
plan_idNoUUID of the plan template this pricing derives from.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createContractPromptcreateContractPromptA

Save a reusable AI extraction prompt that drives contract data extraction (used by extractContractFromRaw). Use this to create / update / version the instructions the AI follows when parsing raw contract text.

NameRequiredDescriptionDefault
prompt_nameYesIdentifier for this prompt template (e.g., 'Standard Contract Extraction', 'SaaS Subscription v2'). Used to look up / version-track the prompt.
prompt_textYesAI instructions that tell the model how to extract contract fields from raw text (e.g., what to do with dates, products, pricing tiers, billing cadence). This is the system/user prompt body the extractor will run against.
prompt_schemaNoOptional schema name pinning the expected output shape (e.g., 'billing_schema', 'subscription_schema'). Null lets the AI infer.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createCustomAttributecreateCustomAttributeC

Create a new custom attribute definition for an entity type.

NameRequiredDescriptionDefault
attribute_key_nameYesKey name of the custom attribute (used as the field key).
display_nameYesDisplay name for the custom attribute.
moduleYesModule/entity type this attribute applies to. Allowed values: 'customers', 'contracts', 'invoices', 'payments', 'products', 'plans'.
data_typeYesData type of the attribute. Valid values: 'STRING', 'INTEGER', 'FLOAT', 'BOOLEAN', 'LIST_STRING', 'ENUM', 'JSON', 'DATE'.
default_valueNoDefault value for the attribute.
enum_choicesNoArray of allowed values for enum-type attributes.
is_requiredNoWhether the attribute is required.
descriptionNoDescription of the custom attribute.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createCustomercreateCustomerC

Creates a new customer in the system with various attributes including address, tax info, and contact details.

NameRequiredDescriptionDefault
external_idNoExternal customer ID (optional).
customer_nameYesCustomer name (required).
emailNoCustomer primary email address (optional).
phone_numberNoCustomer phone number (optional).
address_line1NoAddress line 1 (optional).
address_line2NoAddress line 2 (optional).
address_line3NoAddress line 3 (optional).
address_cityNoAddress city (optional).
address_stateNoAddress state (optional).
address_zipCodeNoAddress zip code (optional).
address_countryNoAddress country (optional).
address_country_codeNoAddress country code (optional).
ship_to_line1NoShipping address line 1 (optional).
ship_to_line2NoShipping address line 2 (optional).
ship_to_line3NoShipping address line 3 (optional).
ship_to_cityNoShipping address city (optional).
ship_to_stateNoShipping address state (optional).
ship_to_zipCodeNoShipping address zip code (optional).
ship_to_countryNoShipping address country (optional).
ship_to_country_codeNoShipping address country code (optional).
communications_enabledNoEnable/disable communications (defaults to true).
auto_charge_enabledNoEnable/disable auto-charge (defaults to true).
business_entity_idNoBusiness entity ID (UUID format, optional).
custom_dataNoCustom key-value pairs for additional customer info (e.g., {"industry": "saas", "account_tier": "enterprise", "sales_rep": "jane"}). Optional.
tax_infoNoList of tax identifiers. Each item: {country_code, tax_code, tax_id}. country_code uses mixed ISO formats (e.g. 'USA', 'IND', 'AUS', 'EU', 'GB'/'UK', 'SG', 'JP', 'BR', 'CA', and 2-letter codes for EU members like 'DE', 'FR', 'IT'). tax_code varies by country — common pairings: VAT (most of EU + UK + CH + most of MENA + IL/PH/ZA/EG/JO etc.), GST (India, Australia, Singapore), GST/HST (Canada), GST/IRD (NZ), TIN (USA, Qatar, Kuwait, Iraq, Libya), JCT (Japan), CNPJ (Brazil), SST (Malaysia), NPWP (Indonesia), MVA (Norway). Pair country_code + tax_code correctly. Optional.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createCustomerAddresscreateCustomerAddressB

Add a new address to a customer.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier of the customer.
line1YesAddress line 1.
line2NoAddress line 2.
cityNoCity.
stateNoState/province.
zipCodeNoZIP/postal code.
countryNoCountry name.
country_codeNoISO country code (e.g., 'US', 'GB').
line3NoAddress line 3.
is_default_billingNoSet as default billing address. Default: false.
is_default_shippingNoSet as default shipping address. Default: false.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createEntitlementcreateEntitlementA

Creates a new entitlement in the system with various attributes including name, description, type, units, and product association. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
nameYesEntitlement name (required).
descriptionNoEntitlement description (optional).
entitlement_typeNoType of entitlement (e.g., 'Quantity', 'Feature', 'Access').
unitsNoUnits for the entitlement (e.g., 'units', 'GB', 'users').
is_activeNoWhether the entitlement is active (defaults to true).
product_idNoAssociated product ID (UUID format, optional).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createInvoiceChargecreateInvoiceChargeB

Create an auto-charge for an invoice. Triggers payment collection via the customer's configured payment method.

NameRequiredDescriptionDefault
invoiceIdYesThe unique identifier (UUID) of the invoice to charge.
connectorNoOptional payment provider connector config object (e.g., {"name": "stripe", "reference_id": "cus_xxx"}). Backend auto-detects if omitted.
sourceNoOptional source identifier for the charge.
payment_method_typesNoOptional list of allowed payment method types (e.g., ["card", "ach"]).
skip_invoice_due_date_checkNoIf true, charge proceeds even if the invoice is not yet due. Defaults to false.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createInvoiceCreditNotecreateInvoiceCreditNoteB

Create a credit note against a specific invoice. The credit_note_amount is in the invoice's currency (e.g. 25 for $25). The API stores amounts in cents internally. Returns the created credit note.

NameRequiredDescriptionDefault
invoiceIdYesThe unique identifier (UUID) of the invoice to create a credit note against.
credit_note_amountYesAmount for the credit note in the invoice's currency (e.g. 25 for $25.00).
reasonYesReason for creating this credit note.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createJournalEntrycreateJournalEntryB

Create a new manual journal entry with debit and credit lines.

NameRequiredDescriptionDefault
posted_atNoPosting date of the journal entry in ISO 8601 format (e.g., '2026-01-15T00:00:00').
descriptionYesDescription/memo for the journal entry.
currencyYesThree-letter ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP').
journal_linesYesArray of journal lines. Each line requires: {account_id, debits, credits, currency}. Use 'debits' and 'credits' (plural, integers in cents). Example: [{account_id:'...', debits:10000, credits:0, currency:'USD'}, {account_id:'...', debits:0, credits:10000, currency:'USD'}]. Optional tags: customer_id, contract_id, invoice_id, custom_tags.
custom_dataNoAdditional metadata as key-value pairs.
status_typeNoJournal entry status (default: 'posted').posted
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createPaymentcreatePaymentA

Record a successful manual/offline payment or tax-withheld amount, equivalent to the frontend Add Payment flow. Link to invoices via payment_parts array. Use type='payment' with payment_method='bank_transfer', 'check', 'cash', or 'card'. Use type='tax_withheld' without payment_method. Always use status='success'. Do not use status='created' for manually recorded payments; created payments are unrealized and will not reduce invoice amount_due or mark invoices paid. The backend assigns the payment timestamp when the payment is recorded. Refunds, authorizations, reversals, payment links, and gateway charge attempts are outside this tool's scope.

NameRequiredDescriptionDefault
customer_idNoUUID of the customer making the payment.
amountYesTotal payment amount in the smallest currency unit (e.g. cents).
currency_codeYesThree-letter ISO 4217 currency code (e.g. USD).
payment_partsNoArray of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}. Links the payment to one or more invoices.
payment_methodNoManual payment method. Required when type='payment'; omit for type='tax_withheld'. Supported values match the frontend Add Payment flow.
typeNoFrontend Add Payment type. Use 'payment' for a manual/offline payment, or 'tax_withheld' for a tax withheld amount. Refunds, payment reversals, and authorizations are outside this tool's scope.payment
statusNoPayment status for this recorded payment. Use 'success' for manually recorded/offline payments so linked invoices are marked paid when payment_parts cover the amount due.success
external_idNoExternal reference ID for this payment.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createPlancreatePlanA

Create a new plan — a reusable contract template with phased pricing. Hits POST /plans (same Plan table the Zenskar app's PlansV2 page reads). The request body shape is NESTED, not flat: top-level fields are name, status, schedule, optional description, optional phases[]. Currency is set per-pricing inside phase.pricings[].pricing.pricing_data.currency, NOT at the top level. A plan with no phases is unusable in the UI — always include at least one phase. Plan starts as 'draft'; the user must publish it to make it active.

NameRequiredDescriptionDefault
nameYesName of the plan (required).
statusYesPlan status (required). Valid values: 'draft', 'active', 'archived'. New plans almost always start as 'draft' — the user publishes via the UI to activate.
scheduleYesPlan-level schedule (required). Object: {duration: ISO-8601 e.g. 'P1Y'|'P1M', start_offset?: ISO-8601 e.g. 'P0D', trigger_type?: 'time_based'}. Example: {"duration":"P1Y","start_offset":"P0D"}.
descriptionNoOptional plan description.
phasesYesArray of plan phases (REQUIRED — must be non-empty). Each phase: {name: string (required), schedule: {duration, start_offset?, trigger_type?} (required), order: int (required, 0-indexed), description?: string, features?: CreateProductPricingRequestSchema (one-off phase-level pricing/features), pricings?: [{schedule, pricing_id?, product_id?, pricing?: CreateProductPricingRequestSchema, product?: CreateProductRequestSchema}] (per-product pricings)}. Each phase must have features OR a non-empty pricings array. Minimal example: [{"name":"Phase 1","schedule":{"duration":"P1Y"},"order":0,"features":{"pricing_data":{"pricing_type":"features","currency":"USD"}}}].
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createProductcreateProductC

Create a new product in the catalog.

NameRequiredDescriptionDefault
nameYesName of the product.
skuNoSKU (stock keeping unit) identifier.
descriptionNoDescription of the product.
typeYesProduct type. Valid values: 'product' (standard product) or 'group' (product group).
is_activeNoWhether the product is active.
tax_codesNoTax code mapping object keyed by region/provider (e.g., {"avalara": "PS081282", "stripe": "txcd_99999999"}).
custom_attributesNoCustom attributes as key-value pairs.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createProductPricingcreateProductPricingA

Create a new pricing configuration for a product. MANDATORY pre-call checklist — ask the user for ALL of these and do NOT default any silently: (1) currency (ISO 4217), (2) pricing_type (per_unit|flat_fee|tiered|volume|percent|package|step|matrix), (3) unit_amount in MAJOR currency units (float — 3 means $3, NOT 300 cents), (4) quantity object with type (fixed|metered) and unit label (e.g. 'user', 'request') and either quantity (for fixed) or aggregate_id (for metered), (5) billing_period.cadence (ISO 8601 — 'P1M' monthly, 'P3M' quarterly, 'P1Y' yearly) and billing_period.offset. SKIPPING quantity OR billing_period causes the Zenskar UI to render 'Undefined- Every Undefined Undefined' for billing cadence and 0 for billing metric — that is the #1 bug reported on this tool.

NameRequiredDescriptionDefault
productIdYesThe unique identifier of the product.
nameNoName of the pricing (optional).
descriptionNoDescription of this pricing configuration.
pricing_dataYesPricing data object (required). MUST include 'pricing_type' discriminator AND 'currency' (ISO 4217, e.g. 'USD'). 'unit_amount' is in MAJOR currency units (float) — 3 means $3, NOT 300 cents. Do NOT convert to cents. Supported pricing_type values with examples: flat_fee: {pricing_type:'flat_fee', unit_amount:100, currency:'USD'}. per_unit: {pricing_type:'per_unit', unit_amount:3, currency:'USD'}. tiered: {pricing_type:'tiered', unit_amount:[10,5], up_to:[100,null], currency:'USD'}. volume: {pricing_type:'volume', unit_amount:[10,5], up_to:[100,null], currency:'USD'}. percent: {pricing_type:'percent', percentage:5.0, currency:'USD'}. package: {pricing_type:'package', package_size:10, unit_amount:50, currency:'USD'}. step: {pricing_type:'step', unit_amount:[...], up_to:[...], currency:'USD'}. matrix: {pricing_type:'matrix', dimensions:[...], values:[...], currency:'USD'}. Optional inside pricing_data for per_unit: 'proration_type' ('day_based'|'cadence_based'), 'charge_full_amount' (bool).
quantityYesQuantity configuration (REQUIRED — ask the user; do not omit). Top-level object, NOT inside pricing_data. Shape: {type: 'fixed'|'metered', quantity?: number, unit?: string, aggregate_id?: UUID}. 'fixed' = static quantity (e.g. seats); also set 'unit' (label like 'user') and 'quantity' (number). 'metered' = consumption tracked via a billable metric; set aggregate_id to the billable-metric UUID. Omitting this object causes the UI to show 0 for billing metric.
billing_periodYesBilling cadence (REQUIRED — ask the user; do not omit). Backend shape: {cadence: ISO-8601 duration ('P1M'=monthly, 'P3M'=quarterly, 'P1Y'=annually), offset: 'prepaid'|'postpaid'}. Both fields needed. Example: {"cadence":"P1M","offset":"prepaid"}. Omitting this causes the UI to render 'Undefined- Every Undefined Undefined'.
is_recurringNoWhether this pricing is recurring (true) or one-time (false).
return_existingNoIf true, returns existing pricing with matching hash instead of creating a duplicate.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createRawMetriccreateRawMetricA

Create a new Usage Event schema. This defines the schema used for ingesting usage events. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
nameYesHuman-friendly name for the Usage Event schema (raw metric).
api_slugYesAPI slug used when ingesting Usage Events (lowercase, underscores).
dataschemaNoData schema of the Usage Event resource. Structure: {"data": {custom_fields}, "timestamp": "DateTime64", "customer_id": "String"}. The 'timestamp' and 'customer_id' fields are mandatory schema fields for usage ingestion. The 'data' map must include only valid ClickHouse types (String, Int64, Float64, Date32, DateTime64, UUID, Bool); use 'Bool' instead of 'Boolean'.
column_orderNoOptional ordered list of columns for downstream processing. Locked to ['timestamp'] in production; leave as-is unless backend explicitly requests a schema change.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
createTaxCategorycreateTaxCategoryC

Create a new tax category.

NameRequiredDescriptionDefault
nameYesName of the tax category.
external_codesNoArray of external tax code mappings (e.g., [{ "provider": "avalara", "code": "P0000000" }]).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteAggregatedeleteAggregateA

Permanently delete a Billable Metric. DESTRUCTIVE: cannot be undone. ONLY call when the user explicitly says 'delete' or 'remove' for THIS billable metric. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
aggregateIdYesThe unique identifier (UUID) of the billable metric (aggregate) to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteContactdeleteContactA

Permanently delete a contact by ID. DESTRUCTIVE — only call when the user explicitly says 'delete' for THIS contact; never as automatic recovery from another failed operation. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
contactIdYesThe unique identifier (UUID) of the contact to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteContractdeleteContractA

Permanently delete a DRAFT contract. ONLY works on contracts with status='draft'. Do NOT call on ACTIVE, EXPIRED, or PAUSED contracts. DESTRUCTIVE: removes all phases, products, and pricing associations. NEVER call as automatic recovery from another failed operation (e.g., do not retry as a fallback after expireContract or voidInvoice fails). ONLY call when the user explicitly says 'delete' or 'remove' for THIS draft contract. If a non-destructive action fails, surface the error verbatim and stop. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteCustomerdeleteCustomerA

Permanently delete a customer by ID. DESTRUCTIVE and cannot be undone. The customer must not have active contracts or unpaid invoices. ONLY call when the user explicitly says 'delete' for THIS customer; never as automatic recovery from another failed operation. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier (UUID) of the customer to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteEntitlementdeleteEntitlementA

Permanently delete an entitlement. DESTRUCTIVE: cannot be undone. ONLY call when the user explicitly says 'delete' or 'remove' for THIS entitlement. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
entitlementIdYesThe unique identifier (UUID) of the entitlement to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteInvoicedeleteInvoiceA

Permanently delete a draft invoice. ONLY works on status='draft'. For approved invoices, use voidInvoice (with caveats) or createInvoiceCreditNote — do NOT call deleteInvoice on approved invoices. DESTRUCTIVE: record removed permanently. ONLY call when the user explicitly says 'delete' for THIS invoice; never call as automatic recovery from another failed operation. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
invoiceIdYesThe unique identifier (UUID) of the draft or upcoming invoice to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deleteManualPaymentdeleteManualPaymentA

Permanently delete a manual payment record. Only works on payments in an eligible status for deletion. DESTRUCTIVE — only call when the user explicitly says 'delete' for THIS payment; never as automatic recovery from another failed operation. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
paymentIdYesThe unique identifier (UUID) of the payment to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
deletePaymentMethoddeletePaymentMethodA

Permanently delete a payment method from a customer. DESTRUCTIVE — saved card/bank details will be removed; recurring auto-charges using this method will fail. Only call when the user explicitly says 'delete' for THIS payment method. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier (UUID) of the customer.
paymentMethodIdYesThe unique identifier (UUID) of the payment method to delete.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
downloadInvoicedownloadInvoiceC

Download an invoice in JSON format.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice to download.
invoice_json_keyNoOptional key for invoice JSON.
customer_idNoOptional customer ID associated with the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
editManualPaymenteditManualPaymentB

Edit a manual payment's details (amount, method, etc.). Uses the manual_payment-specific endpoint.

NameRequiredDescriptionDefault
paymentIdYesThe unique identifier (UUID) of the manual payment to edit.
amountNoUpdated payment amount.
payment_method_detailsNoUpdated payment method details object.
payment_partsNoUpdated invoice allocations. Array of {invoice_id, amount}.
external_idNoUpdated external reference ID.
timestampNoUpdated payment timestamp in ISO 8601 format.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
editPauseContracteditPauseContractA

Edit an existing pause phase on a contract. Use this when 'resumeContract' returns 'pause phase not found' for a future-dated pause, or when the user wants to set a resume date (pause end_date), shift the pause start, or change the unpause_extension_policy. Hits PATCH /contract_v2/{contractId}/pause.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract whose pause phase to edit.
start_dateNoNew pause start date (ISO 8601). Optional.
end_dateNoResume date — when the pause ends (ISO 8601). Set this to schedule a future resume.
pause_phase_idNoUUID of the specific pause phase to edit. Optional — required only when a contract has multiple pause phases and you need to disambiguate which one to edit.
unpause_extension_policyNoHow to handle the contract end date when unpaused. 'extend' or 'overlap'.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
expireContractexpireContractA

Expire an ACTIVE or PAUSED contract by adjusting its end_date. Allowed status transitions: ACTIVE→EXPIRED, PAUSED→EXPIRED. EXPIRED is terminal — calling on an already-expired contract returns 400; do NOT retry, do NOT escalate to deleteContract or any other destructive tool as a fallback. Verify contract.status via getContractById before calling. Idempotency: NO. The contract expires at end of day 23:59:59.999999. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to expire.
expiry_dateNoDate to expire the contract (e.g. 2026-12-31). Defaults to today if not provided. Must not be earlier than contract.start_date.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
extractContractFromRawextractContractFromRawA

Extract structured contract data from raw text content using AI. This tool analyzes natural language contract descriptions and extracts key fields like dates, products, pricing, and billing terms. The extracted data can then be used to create a customer and contract via createCustomer and createContract tools.

NameRequiredDescriptionDefault
contentYesThe raw text content describing the contract (e.g., 'Contract starts on 1st Jan 2025 and ends on 31 Dec 2025 with a single product called chat subscription, cost is $10 per month prepaid.').
nameYesA name for the contract being extracted.
organization_idNoThe organization ID for the contract extraction (will be auto-populated from user context if not provided).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
generateInvoicegenerateInvoiceA

Generate an invoice for a single contract+customer over a billing window.

Granularity is PER PHASE, NOT per product. ONE call generates ONE invoice covering ALL products active in the (contract, customer, from_date, to_date) window — every product becomes a line item on the same invoice. NEVER iterate over products.

MANDATORY PRE-STEP: call getContractBillingCycles first to fetch the list of valid {start_date, end_date, bill_for_date, billing_cycle_start_day} entries for this contract. Pick ONE entry. Copy its start_date → from_date, end_date → to_date, bill_for_date, billing_cycle_start_day verbatim. DO NOT compute these from contract.start_date, pricing.billing_period, or human intuition — the backend matches bill_for_date exactly against the pre-computed list.

Date fields accept ISO-8601 strings (e.g. "2026-04-28T00:00:00Z") or integer UNIX seconds. Prefer pasting ISO strings verbatim from getContractBillingCycles output — the server converts to unix internally before sending to the API.

Known failure modes: • {invoice_ids: []} → bill_for_date did not match any cycle. Re-fetch billingCycles and copy the exact value. • $0 invoice → bill_for_date/billing_cycle_start_day omitted entirely. • InvoiceAlreadyGeneratedForThisBillingPeriod → an approved invoice already exists for this cycle.

NameRequiredDescriptionDefault
contract_idYesUUID of the contract to generate the invoice for.
customer_idYesUUID of the customer.
from_dateYesStart of billing period. Accepts ISO-8601 string (e.g. `2026-04-28T00:00:00Z`) or UNIX seconds integer. PREFER ISO string copied verbatim from getContractBillingCycles.start_date — avoids timezone bugs.
to_dateYesEnd of billing period. Accepts ISO-8601 string or UNIX seconds integer. PREFER ISO string copied verbatim from getContractBillingCycles.end_date.
bill_for_dateYesREQUIRED. Anchors which billing cycle this invoice belongs to. Accepts ISO-8601 string or UNIX seconds. MUST match exactly one of the `bill_for_date` values returned by getContractBillingCycles — pasting the ISO string verbatim is the safest path. Arbitrary dates produce `invoice_ids: []`.
billing_cycle_start_dayYesREQUIRED. Day of month (1-31) anchoring the recurring billing cycle. Fetch from the contract or plan's billing_period; if unsure, use the day-of-month of contract.start_date. Omitting this causes the API to return a $0 invoice because no billing cycle matches.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAccountBalancegetAccountBalanceB

Retrieve the balance for a specific accounting account. Supports filtering by customer, contract, currency, and posted-at date range.

NameRequiredDescriptionDefault
accountIdYesThe unique identifier of the account.
as_ofNoDate for the balance snapshot (YYYY-MM-DD).
customer_idNoFilter the balance to a single customer UUID.
contract_idNoFilter the balance to a single billing contract UUID (enables per-contract GL balance).
currencyNoThree-letter ISO currency code (e.g. 'USD').
journal_entry__posted_at__gteNoLower bound on parent journal entry posted-at date (inclusive).
journal_entry__posted_at__lteNoUpper bound on parent journal entry posted-at date (inclusive).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAggregateByIdgetAggregateByIdB

Get the details of a Billable Metric by its ID.

NameRequiredDescriptionDefault
aggregateIdYesThe ID of the Billable Metric (aggregate).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAggregateEstimatesgetAggregateEstimatesC

Get Billable Metric estimates based on the specified criteria.

NameRequiredDescriptionDefault
aggregate_idYesThe ID of the Billable Metric (aggregate).
customer_idYesThe ID of the customer.
start_dateYesStart date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-15'). NOT datetime.
end_dateYesEnd date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-31'). NOT datetime.
get_singleNoWhether to get a single estimate (defaults to true).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAggregateLogsgetAggregateLogsB

Get logs related to a Billable Metric (also called an aggregate) by ID, with optional date and customer filters.

NameRequiredDescriptionDefault
aggregateIdYesThe ID of the Billable Metric (aggregate).
start_dateNoStart date for filtering logs (YYYY-MM-DD).
end_dateNoEnd date for filtering logs (YYYY-MM-DD).
monthNoFilter by month (e.g., 'Apr 2023').
customer_idNoFilter by customer ID.
query_limitNoLimit the number of log entries (defaults to 100).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAggregateSchemasgetAggregateSchemasA

Show the underlying storage/schema definitions for Billable Metrics. Mainly useful for advanced debugging, SQL/schema inspection, and integration work rather than day-to-day business operations.

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getAllInvoiceTagsgetAllInvoiceTagsB

Get all available tags for invoices.

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getBalanceSheetgetBalanceSheetB

Retrieve the balance sheet report (assets, liabilities, equity). Supports per-customer / per-contract / per-account scoping via filters and currency / cadence selection.

NameRequiredDescriptionDefault
start_dateNoStart date for the balance sheet period (YYYY-MM-DD).
end_dateNoEnd date for the balance sheet period (YYYY-MM-DD). Defaults to today.
cadenceNoBucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'.
currencyNoThree-letter ISO currency code to scope the report (e.g. 'USD').
customer_idNoRestrict report to a single customer UUID.
contract_idNoRestrict report to a single billing contract UUID (enables per-contract balance sheet).
account_id__inNoFilter to a list of GL account UUIDs.
grouping_keysNoOptional grouping dimensions, e.g. ['customer_id'] or ['contract_id'].
get_changesNoIf true, return period-over-period changes instead of cumulative values.
cursorNoCursor for pagination.
limitNoMaximum rows per page (default 10).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getBusinessEntityByIdgetBusinessEntityByIdB

Retrieve a business entity by its ID.

NameRequiredDescriptionDefault
entityIdYesThe unique identifier of the business entity.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getChartOfAccountsgetChartOfAccountsA

Retrieve the chart of accounts for the organization, listing all account categories and their hierarchical structure.

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getContactByIdgetContactByIdA

Retrieve details for a specific contact by their ID.

NameRequiredDescriptionDefault
contactIdYesThe unique ID of the contact to retrieve.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getContractAmendmentsgetContractAmendmentsB

Retrieve all amendments for a contract. Shows history of changes, expansions, upgrades, and modifications made to the contract over time.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getContractBillingCyclesgetContractBillingCyclesA

Returns the contract's pre-computed billing cycles as a list of {name, start_date, end_date, bill_for_date, billing_cycle_start_day}. REQUIRED before calling generateInvoice. Workflow: (1) call this tool, (2) pick the cycle entry whose date range covers the period you want to invoice, (3) pass that entry's start_date → from_date, end_date → to_date, bill_for_date, billing_cycle_start_day to generateInvoice — copy the values verbatim, no math. The backend matches bill_for_date exactly against this list; arbitrary dates produce empty invoice arrays.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract.
limitNoMaximum number of cycles to return (default 10). Increase if the contract spans many years.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getContractByIdgetContractByIdA

Retrieve a contract by its ID, including all phases, pricings, customer details, custom attributes, and renewal policy. Essential for cloning contracts for renewals, reviewing terms before amendments, and validating contract state.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to retrieve.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getCreditNoteByIdgetCreditNoteByIdB

Retrieve a credit note by its ID, including amount, status, customer, invoice association, and line items URL.

NameRequiredDescriptionDefault
creditNoteIdYesThe unique identifier (UUID) of the credit note.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getCurrentDateTimegetCurrentDateTimeC

Get the current system date and time in multiple formats for temporal context

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getCustomerByIdgetCustomerByIdC

Retrieve details for a specific customer by their ID.

NameRequiredDescriptionDefault
customerIdYesThe unique ID of the customer to retrieve.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getCustomerPortalConfigurationgetCustomerPortalConfigurationC

Retrieve the customer portal configuration.

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getEntitlementByIdgetEntitlementByIdA

Get the details of an entitlement by its ID.

NameRequiredDescriptionDefault
entitlementIdYesThe unique identifier (UUID) of the entitlement.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getIncomeStatementgetIncomeStatementB

Retrieve the income statement (P&L) report. Supports per-customer / per-contract / per-account scoping via filters and currency / cadence selection.

NameRequiredDescriptionDefault
start_dateNoStart date for the income statement period (YYYY-MM-DD).
end_dateNoEnd date for the income statement period (YYYY-MM-DD).
cadenceNoBucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'.
currencyNoThree-letter ISO currency code to scope the report (e.g. 'USD').
customer_idNoRestrict report to a single customer UUID (enables per-customer P&L).
contract_idNoRestrict report to a single billing contract UUID (enables per-contract P&L).
account_id__inNoFilter to a list of GL account UUIDs.
grouping_keysNoOptional grouping dimensions, e.g. ['customer_id'] or ['contract_id'].
get_changesNoIf true, return period-over-period changes (default true for income statement).
cursorNoCursor for pagination.
limitNoMaximum rows per page (default 10).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceByExternalIdgetInvoiceByExternalIdC

Retrieve details for an invoice using its external ID.

NameRequiredDescriptionDefault
externalIdYesThe external ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceByIdgetInvoiceByIdC

Retrieve details for a specific invoice by its ID.

NameRequiredDescriptionDefault
invoiceIdYesThe unique ID of the invoice to retrieve.
include_line_itemsNoWhether to include line items in the response.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceContractJsonActualsgetInvoiceContractJsonActualsB

Get contract actuals in JSON format for a specific invoice.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceGenerationStatusgetInvoiceGenerationStatusC

Get the generation status of a specific invoice.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
contract_idYesThe ID of the contract associated with the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceLineItemsgetInvoiceLineItemsC

Get details about the invoice line items, features, and pricing models.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoicePaymentsgetInvoicePaymentsA

Get successful payments currently associated with a specific invoice. This view may omit refund records and non-success payment states.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoicePaymentsByIdgetInvoicePaymentsByIdA

Get successful payments associated with a specific invoice ID. This endpoint is success-only and may not show refund rows.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoicePaymentsWithoutRefundsgetInvoicePaymentsWithoutRefundsA

Get original payment records for an invoice, excluding refund payment rows. Refunded or partially refunded original payments may still appear here.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoicePreviewHtmlgetInvoicePreviewHtmlA

Get the rendered HTML preview of an invoice. Returns the invoice as it would appear when sent to the customer. Use this to show the customer-facing invoice layout.

NameRequiredDescriptionDefault
orgIdNoOrganization ID (auto-populated).
invoiceIdYesThe ID of the invoice to preview.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getInvoiceSummarygetInvoiceSummaryB

Get a summary of a specific invoice.

NameRequiredDescriptionDefault
invoiceIdYesThe ID of the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getJobByIdgetJobByIdB

Retrieve a specific job by its ID to check status and results.

NameRequiredDescriptionDefault
jobIdYesThe unique identifier of the job.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getJournalEntrygetJournalEntryA

Retrieve a journal entry by its ID, including all journal lines.

NameRequiredDescriptionDefault
journalEntryIdYesThe unique identifier of the journal entry.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getPaymentByIdgetPaymentByIdB

Retrieve details for a specific payment by its ID.

NameRequiredDescriptionDefault
paymentIdYesThe unique ID of the payment to retrieve.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getPlanByIdgetPlanByIdA

Retrieve a plan by its ID, including phases, products, and pricing configurations.

NameRequiredDescriptionDefault
planIdYesThe unique identifier of the plan.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getProductByIdgetProductByIdA

Retrieve a product by its ID, including name, SKU, description, tax codes, pricing, and custom attributes.

NameRequiredDescriptionDefault
productIdYesThe unique identifier (UUID) of the product.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getProductPricingsgetProductPricingsB

Retrieve all pricing configurations for a specific product.

NameRequiredDescriptionDefault
productIdYesThe unique identifier of the product.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getRawMetricByIdgetRawMetricByIdC

Get Usage Event details by ID.

NameRequiredDescriptionDefault
rawMetricIdYesThe ID of the Usage Event resource (raw metric).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getRawMetricBySluggetRawMetricBySlugB

Get Usage Event details by API slug.

NameRequiredDescriptionDefault
rawMetricSlugYesThe API slug of the Usage Event resource (raw metric).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
getRawMetricLogsgetRawMetricLogsA

Get recent Usage Event rows for a resource by ID. Returns the most recent event rows; backend does NOT support filters, pagination, ordering, or aggregation on this endpoint. For filtered/aggregated queries use the aggregate endpoints.

NameRequiredDescriptionDefault
rawMetricIdYesThe ID of the Usage Event resource (raw metric).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
ingestRawMetricEventingestRawMetricEventA

Ingest a Usage Event for the specified resource slug. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
rawMetricSlugYesSlug of the Usage Event resource (raw metric), e.g. api_usage_events.
eventNoUsage Event payload containing customer_id, timestamp, and a data map with schema-compliant types. customer_id and timestamp are mandatory event fields and must be provided in the payload; MCP does not auto-add them. Before constructing the event, fetch the schema via getRawMetricBySlug (or reuse the response from createRawMetric) so you only include fields that exist in the Usage Event schema (raw metric schema). Use the provided type buckets such as String/Int64 or the exact column names returned by sample logs; do not invent new keys.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listAccountslistAccountsB

Retrieve a paginated list of accounting accounts (GL accounts) with optional filtering.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of accounts to return per page.
name__ilikeNoCase-insensitive partial match for account name.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listAggregateslistAggregatesB

List Billable Metrics in paginated form, with filtering by ID, name, and data source.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination.
limitNoMaximum number of records to return per page (defaults to 10).
orderNoOrder of results (e.g., '-created_at').-created_at
sort_keyNoKey to sort the results by (e.g., 'id').created_at
sort_typeNoSort order type (e.g., 'asc').DESC
idNoFilter by aggregate ID.
name__ilikeNoCase-insensitive partial match for aggregate name.
datasourceNoFilter by data source ID.
created_at__gteNoFilter by creation date greater than or equal to (ISO 8601).
parent_aggregate_id__isnullNoWhether to include only top-level aggregates (no parent). Defaults to true.
aggregate_type__isnullNoWhether to include only aggregates without an explicit type. Defaults to true.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listAllPaymentslistAllPaymentsC

Retrieve a paginated list of all payments, including refund records, with extensive filtering and sorting options.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination.
limitNoMaximum number of payments to return per page (defaults to 10).
searchNoGeneral search query.
sort_keyNoKey to sort the results by (e.g., 'id').
sort_typeNoSort order type (e.g., 'asc').
orderNoOrder of results (e.g., '-created_at').-created_at
idNoFilter by payment ID.
customer_idNoFilter by customer ID.
connector_idNoFilter by connector ID.
external_id__ilikeNoCase-insensitive partial match for external ID.
payment_methodNoFilter by payment method (e.g., 'card', 'cash', 'bank_transfer').
typeNoFilter by payment type (e.g., 'payment', 'refund').
amount__gteNoFilter by amount greater than or equal to.
amount__lteNoFilter by amount less than or equal to.
amount_refunded__gteNoFilter by amount refunded greater than or equal to.
amount_refunded__lteNoFilter by amount refunded less than or equal to.
currency_code__ilikeNoCase-insensitive partial match for currency code.
receipt_number__ilikeNoCase-insensitive partial match for receipt number.
statusNoFilter by payment status (e.g., 'success', 'failed').
autochargeNoFilter by auto-charge status.
parent_idNoFilter by parent payment ID.
timestamp__gteNoFilter by timestamp greater than or equal to (Unix time).
timestamp__lteNoFilter by timestamp less than or equal to (Unix time).
created_at__gteNoFilter by creation date greater than or equal to (ISO 8601).
created_at__lteNoFilter by creation date less than or equal to (ISO 8601).
invoice__idNoFilter by associated invoice ID.
invoice__bill_for_date__gteNoFilter by invoice billing date greater than or equal to (ISO 8601).
invoice__bill_for_date__lteNoFilter by invoice billing date less than or equal to (ISO 8601).
invoice__approved_at__gteNoFilter by invoice approval date greater than or equal to (ISO 8601).
invoice__approved_at__lteNoFilter by invoice approval date less than or equal to (ISO 8601).
customer__business_entity_idNoFilter by customer's business entity ID.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listBusinessEntitieslistBusinessEntitiesB

Retrieve a list of business entities configured for the organization.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of entities to return.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listContactslistContactsC

Retrieve a paginated list of contacts.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination.
limitNoMaximum number of contacts to return per page (defaults to 10).
sort_keyNoKey to sort the results by (e.g., 'id').
sort_typeNoSort order type (e.g., 'asc').
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listContractslistContractsB

Retrieve a paginated list of contracts, with extensive options for filtering by ID, customer ID, name, start date, end date, creation date, and status.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination to fetch the next or previous set of records.
limitNoMaximum number of records to return per page (defaults to 10).
orderNoOrder of results (e.g., '-created_at' for descending creation date).-created_at
idNoFilter by Contract ID (exact match).
id__inNoFilter by a comma-separated list of Contract IDs.
id__isnullNoFilter by whether Contract ID is null.
customer_idNoFilter by Customer ID (exact match).
customer_id__inNoFilter by a comma-separated list of Customer IDs.
customer_id__isnullNoFilter by whether Customer ID is null.
nameNoFilter by Contract Name (exact match).
name__ilikeNoContract Name (case-insensitive partial match).
name__likeNoContract Name (case-sensitive partial match).
name__inNoFilter by a comma-separated list of Contract Names.
name__isnullNoFilter by whether Contract Name is null.
start_dateNoContract Start Date (exact match, ISO 8601).
start_date__neqNoContract Start Date (not equal, ISO 8601).
start_date__gtNoContract Start Date (greater than, ISO 8601).
start_date__gteNoContract Start Date (greater than or equal to, ISO 8601).
start_date__ltNoContract Start Date (less than, ISO 8601).
start_date__lteNoContract Start Date (less than or equal to, ISO 8601).
start_date__isnullNoFilter by whether Contract Start Date is null.
start_date__inNoFilter by a comma-separated list of Contract Start Dates.
created_atNoContract Created At (exact match, ISO 8601).
created_at__neqNoContract Created At (not equal, ISO 8601).
created_at__gtNoContract Created At (greater than, ISO 8601).
created_at__gteNoContract Created At (greater than or equal to, ISO 8601).
created_at__ltNoContract Created At (less than, ISO 8601).
created_at__lteNoContract Created At (less than or equal to, ISO 8601).
created_at__isnullNoFilter by whether Contract Created At is null.
created_at__inNoFilter by a comma-separated list of Contract Creation Dates.
end_dateNoContract End Date (exact match, ISO 8601).
end_date__neqNoContract End Date (not equal, ISO 8601).
end_date__gtNoContract End Date (greater than, ISO 8601).
end_date__gteNoContract End Date (greater than or equal to, ISO 8601).
end_date__ltNoContract End Date (less than, ISO 8601).
end_date__lteNoContract End Date (less than or equal to, ISO 8601).
end_date__isnullNoFilter by whether Contract End Date is null.
end_date__inNoFilter by a comma-separated list of Contract End Dates.
statusNoFilter contracts by their status.
status__inNoFilter by a comma-separated list of contract statuses.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listCreditNoteslistCreditNotesB

Retrieve a paginated list of credit notes. Supports cursor-based pagination.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of results per page (defaults to 10).
customer_idNoFilter by customer UUID.
invoice_idNoFilter by invoice UUID.
statusNoFilter by status: in_progress, issued, void, or paid.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listCustomAttributeslistCustomAttributesB

Retrieve a list of custom attribute definitions configured for the organization.

NameRequiredDescriptionDefault
moduleNoFilter by module. Valid values: 'customers', 'contracts', 'invoices', 'payments', 'products', 'plans'.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listCustomerAddresseslistCustomerAddressesB

Retrieve all addresses for a specific customer.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier of the customer.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listCustomerslistCustomersB

Retrieve a paginated list of customers, with options for searching, filtering by ID, external ID, email, phone number, communication status, auto-charge status, creation date, customer name, and business entity ID.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination to fetch the next or previous set of records.
limitNoMaximum number of customers to return per page (defaults to 10).
searchNoAdvanced key-value search query. Format: 'field=value' or 'field1=value1,field2=value2'. Supports any customer field including nested JSON paths. Examples: 'customer_name=Acme', 'email=john@example.com', 'customer_name=Acme,external_id=EXT-100', 'custom_data.users=abc@dev.in'. String fields use case-insensitive contains matching. Do NOT pass plain text — always use field=value format.
search_name_external_idNoQuick relevance-ranked search across customer_name and external_id. Accepts plain text (e.g., 'Acme'). Results are ranked: exact match first, then starts-with, then contains. Simpler alternative to the 'search' parameter when you only need to find customers by name or external ID.
orderNoOrder of results (e.g., '-created_at' for descending creation date).-created_at
sort_keyNoKey to sort the results by (e.g., 'id').
sort_typeNoSort order type (e.g., 'asc' for ascending).
expandNoFields to expand in the response (e.g., 'contacts').
idNoFilter by customer ID (exact match).
id__inNoFilter by a comma-separated list of customer IDs.
external_idNoFilter by external ID (exact match).
external_id__ilikeNoCase-insensitive partial match for external ID.
emailNoFilter by email (exact match).
email__ilikeNoCase-insensitive partial match for email.
phone_number__ilikeNoCase-insensitive partial match for phone number.
communications_enabledNoFilter by communications enabled status.
auto_charge_enabledNoFilter by auto-charge enabled status.
created_at__gteNoFilter by creation date greater than or equal to (ISO 8601 format).
created_at__lteNoFilter by creation date less than or equal to (ISO 8601 format).
customer_name__ilikeNoCase-insensitive partial match for customer name.
business_entity_idNoFilter by business entity ID (exact match).
invoice__customer_idNoFilter by invoice customer ID.
invoice__statusNoFilter by invoice status.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listEntitlementslistEntitlementsB

List entitlements in paginated form, with filtering by ID, name, type, product, and active status.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination.
limitNoMaximum number of records to return per page (defaults to 50).
orderNoOrder of results (e.g., '-created_at').-created_at
sort_keyNoKey to sort the results by.created_at
sort_typeNoSort order type ('ASC' or 'DESC').DESC
searchNoText search across entitlement fields.
idNoFilter by entitlement ID.
name__ilikeNoCase-insensitive partial match for entitlement name.
entitlement_typeNoFilter by entitlement type.
is_activeNoFilter by active status.
product_idNoFilter by associated product ID.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listInvoiceslistInvoicesB

Retrieve a paginated list of invoices, with options for filtering by customer, status, amounts, due date, creation date, and related customer/contract details.

NameRequiredDescriptionDefault
customer_idNoFilter invoices by a specific customer ID.
customer__external_idNoFilter invoices by a customer's external ID (nested filter).
statusNoFilter invoices by their status (e.g., 'draft', 'approved', 'paid', 'void', 'partially_paid', 'upcoming').
status__inNoFilter invoices by multiple statuses (comma-separated, e.g., 'draft,approved,paid,partially_paid,upcoming,void').
cursorNoThe cursor for pagination.
limitNoMaximum number of invoices to return per page (defaults to 10).
contract_idNoFilter by contract ID.
external_idNoFilter by invoice external ID.
invoice_total__gteNoFilter by invoice total greater than or equal to.
invoice_total__lteNoFilter by invoice total less than or equal to.
amount_due__gteNoFilter by amount due greater than or equal to.
amount_due__lteNoFilter by amount due less than or equal to.
due_date__gteNoFilter by due date greater than or equal to (ISO 8601).
due_date__lteNoFilter by due date less than or equal to (ISO 8601).
created_at__gteNoFilter by creation date greater than or equal to (ISO 8601).
created_at__lteNoFilter by creation date less than or equal to (ISO 8601).
invoice_number__likeNoPartial match for invoice number.
customer__customer_name__ilikeNoCase-insensitive partial match for customer name associated with the invoice.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listJobslistJobsB

Retrieve a paginated list of async jobs (invoice generation, revenue recognition, etc.).

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of jobs to return per page.
searchNoSearch query to filter jobs. Format: 'field=value'.
resource__neqNoExclude jobs whose resource type equals this value. Defaults to 'revenue_posting' to hide noisy internal revenue-recognition jobs; pass a different value or empty string to override.revenue_posting
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listJournalEntrieslistJournalEntriesA

Retrieve a paginated list of journal entries with optional filtering by date, status, account, or job. Filters use fastapi-filter conventions (e.g. posted_at__gte=YYYY-MM-DD, lines__account_id=).

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of journal entries to return per page.
search_queryNoSearch query to filter journal entries.
orderNoSort order. Prefix with '-' for descending. Defaults to '-created_at'.
idNoFilter by journal entry UUID (exact match).
posted_at__gteNoPosted-at date lower bound (inclusive). Accepts ISO date YYYY-MM-DD or full datetime.
posted_at__lteNoPosted-at date upper bound (inclusive).
status_typeNoFilter by status. Common values: 'posted', 'draft'.
description__ilikeNoCase-insensitive partial match on description.
job_idNoFilter by originating job UUID (e.g. revenue recognition batch).
lines__account_idNoFilter entries having a line on this account UUID.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listJournalLineslistJournalLinesA

Retrieve a paginated list of journal lines (individual debit/credit entries) across all journal entries. Supports filtering by customer, contract, account, currency, and parent journal entry posted date.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of journal lines to return per page.
search_queryNoSearch query to filter journal lines.
orderNoSort order. Prefix with '-' for descending. Defaults to '-created_at'.
customer_idNoFilter by customer UUID.
contract_idNoFilter by billing contract UUID.
account_idNoFilter by GL account UUID.
journal_entry_idNoFilter by parent journal entry UUID.
revenue_contract_idNoFilter by revenue recognition contract UUID (distinct from billing contract_id).
performance_obligation_idNoFilter by performance obligation UUID.
invoice_idNoFilter by invoice UUID.
currencyNoThree-letter ISO currency code (e.g. 'USD').
journal_entry__posted_at__gteNoParent entry posted-at lower bound (inclusive). YYYY-MM-DD or ISO datetime.
journal_entry__posted_at__lteNoParent entry posted-at upper bound (inclusive).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listPaymentMethodslistPaymentMethodsB

Retrieve all payment methods for a specific customer.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier of the customer.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listPlanslistPlansA

Retrieve a paginated list of plans that define reusable contract structures. Hits /plans — the same data the Zenskar app's Plans page reads.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of plans to return per page.
name__ilikeNoCase-insensitive partial match for plan name.
statusNoFilter by plan status. Valid values: draft, active, archived.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listProductslistProductsB

Retrieve a paginated list of products. Products define what is being sold and can be associated with pricing and contracts.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of results per page (defaults to 10).
name__ilikeNoCase-insensitive partial match for product name.
typeNoFilter by product object type. Defaults to 'product' (excludes plans, addons, etc.).product
product_category__isnullNoWhether to include only products without a category. Defaults to true.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listRawMetricslistRawMetricsC

List Usage Events. Supports filtering by ID, name, and API slug.

NameRequiredDescriptionDefault
cursorNoThe cursor for pagination.
limitNoMaximum number of records to return per page (defaults to 10).
orderNoOrder of results (e.g., '-created_at').-created_at
sort_keyNoKey to sort the results by (e.g., 'created_at').created_at
sort_typeNoSort order type (e.g., 'asc').DESC
searchNoGeneral search query.
idNoFilter by usage event ID.
name__ilikeNoCase-insensitive partial match for usage event name.
api_slug__ilikeNoCase-insensitive partial match for API slug.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listRevenuePostingslistRevenuePostingsB

Retrieve a paginated list of revenue postings (per-period revenue allocations against revenue contracts and performance obligations). Supports filtering by contract, revenue contract, performance obligation, posting date, and currency.

NameRequiredDescriptionDefault
cursorNoCursor for pagination.
limitNoMaximum number of revenue postings to return per page.
orderNoSort order. Prefix with '-' for descending. Defaults to '-created_at'.
contract_idNoFilter by billing contract UUID.
revenue_contract_idNoFilter by revenue recognition contract UUID.
revenue_contract_item_idNoFilter by revenue contract item UUID.
performance_obligation_idNoFilter by performance obligation UUID.
posting_date__gteNoPosting date lower bound (inclusive, YYYY-MM-DD).
posting_date__lteNoPosting date upper bound (inclusive, YYYY-MM-DD).
currencyNoThree-letter ISO currency code (e.g. 'USD').
journal_entry_id__isnullNoIf true, return only postings not yet posted to a journal entry. If false, return only postings already journalised.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
listTaxCategorieslistTaxCategoriesB

Retrieve a list of tax categories configured for the organization.

NameRequiredDescriptionDefault
__userContextNoInternal user context for multi-tenant authentication and approval workflow
pauseContractpauseContractA

Pause an active contract. ALWAYS ask the user explicitly for both 'start_date' and 'unpause_extension_policy' before calling — do NOT silently default. A future-dated start_date will create a scheduled pause that has not yet begun; the contract's top-level status stays 'active' until start_date passes. Use 'editPauseContract' to adjust the pause window or set a resume date afterward.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to pause.
start_dateYesDate when the pause begins (ISO 8601 format, e.g. 2026-04-01T00:00:00). REQUIRED — ask the user; never default to today or a future date silently.
unpause_extension_policyYesHow to handle the contract end date when unpaused. 'extend' pushes the end_date out by the pause duration; 'overlap' keeps end_date fixed. ASK the user.
end_dateNoOptional date when the pause ends and contract auto-resumes (ISO 8601).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
payInvoicepayInvoiceA

Initiate payment for an invoice using a payload. MONEY-MOVING ACTION — only call when the user explicitly authorizes payment for this specific invoice. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
payloadYesThe payment payload.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
recogniseRevenuerecogniseRevenueA

Recognize revenue for the organization up to a specified end_date. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
end_dateYesEnd date for revenue recognition in YYYY-MM-DD format (required).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
refreshRevenuePostingsrefreshRevenuePostingsA

Recalculate and upsert revenue postings for a specific revenue contract item / performance obligation at a given posting date. All five identifiers are required (the backend rejects partial inputs). Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
contract_idYesBilling contract UUID (required).
revenue_contract_idYesRevenue recognition contract UUID (required).
revenue_contract_item_idYesRevenue contract item UUID (required).
performance_obligation_idYesPerformance obligation UUID (required).
posting_dateYesPosting date in YYYY-MM-DD format (required).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
refundPaymentrefundPaymentA

Refund a payment (full or partial). Pass refund_amount=0 (or full original amount) for a full refund, or a smaller positive integer for a partial refund. refund_destination + writeoff_invoices control where the refund money goes and whether linked invoices are written off. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
paymentIdYesThe unique identifier (UUID) of the payment to refund.
refund_amountYesRefund amount in the smallest currency unit (integer cents/paise). Use 0 to refund the full payment, or a positive integer for a partial refund. Must not exceed the payment's remaining refundable amount.
refund_destinationYesWhere to send the refund. Valid values: 'original_payment_method' (refund back to the source card/bank), 'credits' (issue customer credits instead of returning money).
writeoff_invoicesYesIf true, the invoice(s) linked to this payment are marked written off (no further collection). Set false to leave invoice balance owing after refund.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
resumeContractresumeContractA

Resume a contract that is currently in an actively-running pause. MANDATORY FLOW: (1) ASK the user 'What date should the contract resume from?' — never call without a known resume date even though this endpoint takes no body. (2) Call getContractById and check the pause phase's start_date. (3a) If pause start_date is strictly in the past (pause currently active) AND the user wants to resume immediately/today → call this endpoint. (3b) If pause start_date is today OR in the future, OR the user wants a specific future resume date → call 'editPauseContract' with end_date=<resume_date> instead. The error 'pause phase not found' does NOT mean no pause exists — it means no pause has yet started; on this error, automatically pivot to 'editPauseContract' with the resume date. Never escalate to deleteContract or any destructive fallback.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to resume.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateAggregateupdateAggregateA

Update an existing Billable Metric. All body fields are optional — only send fields you want to change. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
aggregateIdYesThe unique identifier (UUID) of the billable metric (aggregate) to update.
nameNoUpdated name of the billable metric.
dataschemaNoUpdated data schema (JSON string).
aggregation_queryNoUpdated aggregate query (SQL/Jinja template).
cust_agg_queryNoUpdated customer aggregate query (SQL/Jinja template).
visual_query_builderNoUpdated visual query builder configuration.
datasourceNoUpdated data source UUID.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateBusinessEntityupdateBusinessEntityC

Update an existing business entity's details.

NameRequiredDescriptionDefault
entityIdYesThe unique identifier of the business entity to update.
nameNoUpdated name of the business entity.
addressNoUpdated address object with line1, line2, city, state, zipCode, country, country_code.
tax_configNoTax configuration object (e.g., { "tax_id": "...", "tax_provider": "..." }).
emailNoUpdated email address.
phone_numberNoUpdated phone number (max 20 chars). Include country code (e.g., +1-555-0100).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateContactupdateContactB

Update an existing contact's details. Supports partial updates.

NameRequiredDescriptionDefault
contactIdYesThe unique identifier of the contact to update.
customerNoThe customer ID (UUID) this contact belongs to.
first_nameNoUpdated first name.
last_nameNoUpdated last name.
emailNoUpdated email address.
send_contractNoWhether to send contracts to this contact.
send_invoiceNoWhether to send invoices to this contact.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateContractupdateContractA

Update an existing contract. This is a PUT endpoint — you MUST fetch the contract first with getContractById, then send ALL required fields including phases. Without phases the API returns 500. Copy phases from the GET response (each phase needs name, start_date, end_date at minimum). Status: draft, active, paused, expired, disputed. Renewal: renew_with_default_contract, renew_with_existing, do_not_renew.

NameRequiredDescriptionDefault
contractIdYesThe unique identifier (UUID) of the contract to update.
nameYesHuman-readable name for the contract.
statusYesContract status: draft, active, paused, or disputed. Cannot set to 'expired' via update.
currencyYesThree-letter ISO 4217 currency code (e.g. USD, EUR, GBP).
start_dateYesContract start date in ISO 8601 format (e.g. 2026-01-01T00:00:00).
customer_idYesUUID of the customer associated with this contract.
descriptionNoDetailed description of the contract terms.
end_dateNoContract end date in ISO 8601 format.
anchor_dateNoReference date for billing cycle calculations.
is_last_day_of_monthNoWhen true, billing cycles always end on the last day of the month.
custom_attributesNoKey-value pairs for organization-specific metadata (e.g. automatic_renewal flag).
phasesNoArray of contract phases. Each phase needs at minimum: name, start_date, end_date. Include pricings array if the phase has pricing. Defaults to empty array if omitted.
renewal_policyNoContract renewal behavior: renew_with_default_contract, renew_with_existing, or do_not_renew.
contract_linkNoURL to external contract document or signed agreement.
bill_parent_customerNoWhen true and customer has a parent relationship, invoices are sent to the parent.
invoice_payer_customer_idNoOptional customer UUID who will receive and pay invoices for this contract.
include_in_renewalNoWhen true, this contract is eligible for renewal processes.
tagsNoList of tags for categorizing and filtering contracts.
sourceNoMetadata about the originating system (e.g. {source_type: 'hubspot', source_id: 'deal_123'}).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateCustomerupdateCustomerB

Update an existing customer's details. Supports partial updates — only send fields you want to change. Can update name, email, address, phone, communications_enabled, auto_charge_enabled, etc.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier (UUID) of the customer to update.
customer_nameNoUpdated customer name.
emailNoUpdated email address.
phone_numberNoUpdated phone number.
external_idNoUpdated external identifier.
address_line1NoAddress line 1.
address_line2NoAddress line 2.
address_cityNoCity.
address_stateNoState.
address_zipCodeNoZIP/postal code.
address_countryNoCountry.
address_country_codeNoCountry code (e.g. US, GB).
communications_enabledNoEnable/disable invoice email communications.
auto_charge_enabledNoEnable/disable auto-charge for this customer.
business_entity_idNoUUID of the business entity to associate with.
address_line3NoAddress line 3.
ship_to_line1NoShipping address line 1.
ship_to_line2NoShipping address line 2.
ship_to_line3NoShipping address line 3.
ship_to_cityNoShipping address city.
ship_to_stateNoShipping address state.
ship_to_zipCodeNoShipping address ZIP/postal code.
ship_to_countryNoShipping address country.
ship_to_country_codeNoShipping address country code (e.g. US, GB).
custom_dataNoCustom key-value pairs for additional customer info (e.g., {"industry": "saas", "account_tier": "enterprise"}).
tax_infoNoList of tax identifiers. Each item: {country_code, tax_code, tax_id}. country_code uses mixed ISO formats (e.g. 'USA', 'IND', 'AUS', 'EU', 'GB'/'UK', 'SG', 'JP', 'BR', 'CA', and 2-letter codes for EU members like 'DE', 'FR', 'IT'). tax_code varies by country — common pairings: VAT (most of EU + UK + CH + most of MENA + IL/PH/ZA/EG/JO etc.), GST (India, Australia, Singapore), GST/HST (Canada), GST/IRD (NZ), TIN (USA, Qatar, Kuwait, Iraq, Libya), JCT (Japan), CNPJ (Brazil), SST (Malaysia), NPWP (Indonesia), MVA (Norway). Pair country_code + tax_code correctly.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateCustomerAddressupdateCustomerAddressC

Update an existing customer address.

NameRequiredDescriptionDefault
customerIdYesThe unique identifier of the customer.
addressIdYesThe unique identifier of the address to update.
line1NoUpdated address line 1.
line2NoUpdated address line 2.
cityNoUpdated city.
stateNoUpdated state/province.
zipCodeNoUpdated ZIP/postal code.
countryNoUpdated country name.
country_codeNoUpdated ISO country code.
line3NoUpdated address line 3.
is_default_billingNoSet as default billing address.
is_default_shippingNoSet as default shipping address.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateEntitlementupdateEntitlementA

Update an existing entitlement's details. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
entitlementIdYesThe unique identifier (UUID) of the entitlement to update.
nameYesUpdated entitlement name.
descriptionNoUpdated entitlement description.
entitlement_typeNoUpdated type of entitlement.
unitsNoUpdated units for the entitlement (e.g., 'units', 'GB', 'users').
is_activeNoWhether the entitlement is active.
product_idNoUpdated associated product ID (UUID format).
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updatePaymentupdatePaymentB

Update a payment's invoice allocations. The API requires a non-empty request body with payment_parts.

NameRequiredDescriptionDefault
paymentIdYesThe unique identifier (UUID) of the payment to update.
payment_partsYesUpdated array of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}. This field is required by the API.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
updateProductupdateProductC

Update an existing product's details.

NameRequiredDescriptionDefault
productIdYesThe unique identifier of the product to update.
nameNoUpdated name of the product.
skuNoUpdated SKU.
descriptionNoUpdated description.
is_activeNoWhether the product is active.
tax_codesNoUpdated tax codes array.
custom_attributesNoUpdated custom attributes.
__userContextNoInternal user context for multi-tenant authentication and approval workflow
voidInvoicevoidInvoiceA

Void an invoice. ONLY works on approved or paid invoices with invoice_total == 0 (zero-balance, typically after a full credit-note offset). For non-zero approved invoices, issue a credit note via createInvoiceCreditNote first to bring the balance to zero, then void. If the call returns INVOICE_CANNOT_BE_VOIDED, surface that error verbatim — do NOT retry, do NOT escalate to deleteInvoice. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.

NameRequiredDescriptionDefault
invoiceIdYesThe unique identifier (UUID) of the invoice to void.
__userContextNoInternal user context for multi-tenant authentication and approval workflow

Tool Schema Changelog

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

  1. 114 tool updatesv2.2.4
    • First observedapproveInvoice
    • First observedattachPaymentMethod
    • First observedcreateAccount
    • First observedcreateAggregate
    • First observedcreateBusinessEntity
    • First observedcreateContact
    • First observedcreateContract
    • First observedcreateContractPhase
    • First observedcreateContractPhasePricing
    • First observedcreateContractPrompt
    • First observedcreateCustomAttribute
    • First observedcreateCustomer
    • First observedcreateCustomerAddress
    • First observedcreateEntitlement
    • First observedcreateInvoiceCharge
    • First observedcreateInvoiceCreditNote
    • First observedcreateJournalEntry
    • First observedcreatePayment
    • First observedcreatePlan
    • First observedcreateProduct
    • First observedcreateProductPricing
    • First observedcreateRawMetric
    • First observedcreateTaxCategory
    • First observeddeleteAggregate
    • First observeddeleteContact
    • First observeddeleteContract
    • First observeddeleteCustomer
    • First observeddeleteEntitlement
    • First observeddeleteInvoice
    • First observeddeleteManualPayment
    • First observeddeletePaymentMethod
    • First observeddownloadInvoice
    • First observededitManualPayment
    • First observededitPauseContract
    • First observedexpireContract
    • First observedextractContractFromRaw
    • First observedgenerateInvoice
    • First observedgenerateInvoicePaymentLink
    • First observedgetAccountBalance
    • First observedgetAggregateById
    • First observedgetAggregateEstimates
    • First observedgetAggregateLogs
    • First observedgetAggregateSchemas
    • First observedgetAllInvoiceTags
    • First observedgetBalanceSheet
    • First observedgetBusinessEntityById
    • First observedgetChartOfAccounts
    • First observedgetContactById
    • First observedgetContractAmendments
    • First observedgetContractBillingCycles
    • First observedgetContractById
    • First observedgetCreditNoteById
    • First observedgetCurrentDateTime
    • First observedgetCustomerById
    • First observedgetCustomerPortalConfiguration
    • First observedgetEntitlementById
    • First observedgetIncomeStatement
    • First observedgetInvoiceByExternalId
    • First observedgetInvoiceById
    • First observedgetInvoiceContractJsonActuals
    • First observedgetInvoiceGenerationStatus
    • First observedgetInvoiceLineItems
    • First observedgetInvoicePayments
    • First observedgetInvoicePaymentsById
    • First observedgetInvoicePaymentsWithoutRefunds
    • First observedgetInvoicePreviewHtml
    • First observedgetInvoiceSummary
    • First observedgetJobById
    • First observedgetJournalEntry
    • First observedgetPaymentById
    • First observedgetPlanById
    • First observedgetProductById
    • First observedgetProductPricings
    • First observedgetRawMetricById
    • First observedgetRawMetricBySlug
    • First observedgetRawMetricLogs
    • First observedingestRawMetricEvent
    • First observedlistAccounts
    • First observedlistAggregates
    • First observedlistAllPayments
    • First observedlistBusinessEntities
    • First observedlistContacts
    • First observedlistContracts
    • First observedlistCreditNotes
    • First observedlistCustomAttributes
    • First observedlistCustomerAddresses
    • First observedlistCustomers
    • First observedlistEntitlements
    • First observedlistInvoices
    • First observedlistJobs
    • First observedlistJournalEntries
    • First observedlistJournalLines
    • First observedlistPaymentMethods
    • First observedlistPlans
    • First observedlistProducts
    • First observedlistRawMetrics
    • First observedlistRevenuePostings
    • First observedlistTaxCategories
    • First observedpauseContract
    • First observedpayInvoice
    • First observedrecogniseRevenue
    • First observedrefreshRevenuePostings
    • First observedrefundPayment
    • First observedresumeContract
    • First observedupdateAggregate
    • First observedupdateBusinessEntity
    • First observedupdateContact
    • First observedupdateContract
    • First observedupdateCustomer
    • First observedupdateCustomerAddress
    • First observedupdateEntitlement
    • First observedupdatePayment
    • First observedupdateProduct
    • First observedvoidInvoice

TDQS

B3.2/5.0

Scored across 114 tools

Disambiguation4/5

Most tools have clearly distinct targets (e.g., createAccount vs createContract), but there are some confusing pairs like getInvoicePayments, getInvoicePaymentsById, and getInvoicePaymentsWithoutRefunds, which could cause misselection.

Naming Consistency4/5

Tools predominantly follow a verb_noun pattern in snake_case (e.g., listCustomers, createInvoice). However, there are minor inconsistencies such as editManualPayment vs updatePayment, and expireContract vs updateContract.

Tool Count2/5

114 tools is excessive for an MCP server, far beyond the typical well-scoped range. While the billing domain is broad, many tools could be consolidated or omitted, causing cognitive overload for agents.

Completeness3/5

Core CRUD operations exist for most entities, but gaps are notable: no delete for products, plans, or accounts. The set covers billing, contracts, payments, and accounting but lacks complete lifecycle coverage.

Maintenance

ActivitySlowing
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Zuora's billing and subscription management platform through their REST API. Provides access to billing operations, subscription management, and financial data through natural language queries.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query and manage QuickBooks Online data through natural language, including customers, invoices, bills, vendors, accounts, and financial reports.
    7
    MIT
  • -
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Xero accounting API for financial reporting, sales analysis, grant tracking, and bill management using natural language.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Zoho Books accounting tasks such as invoices, contacts, expenses, and sales orders through natural language.
    38
    MIT