Zenskar MCP Server
OfficialThis server provides a comprehensive MCP interface to the Zenskar billing platform, letting you manage customers, contracts, invoicing, payments, accounting, products, plans, entitlements, billable metrics, and more.
Customers & Contacts: CRUD operations, search/filter, addresses, payment methods, tax info, custom data.
Contracts: Create, read, update, delete (draft only), amend with phases/pricing, pause/resume/expire, view amendments, extract contract data from raw text via AI.
Invoices: List, get by ID/external ID, generate (requires billing cycles), approve, void, delete (draft), download, preview HTML, line items, summary, tags, payment links, auto-charge, credit notes.
Payments: Record manual/offline payments, tax withheld amounts, list all payments (incl. refunds), update allocations, delete/edit manual payments, refund (full/partial).
Credit Notes: List, get by ID, create against invoices.
Products & Pricing: CRUD for products, list/get pricing configs, create pricing (per-unit, flat, tiered, etc.).
Plans (Templates): List, get, create reusable contract templates with phased pricing.
Entitlements: Full CRUD with types, units, product association.
Billable Metrics & Usage Events: CRUD for aggregates (billable metrics), schemas, estimates, logs; ingest usage events (single/bulk), list/get usage event definitions.
Accounting: Chart of accounts, GL account management, journal entries and lines, balance sheet, income statement, account balances, revenue recognition, revenue postings.
Business Entities: List, get, create, update.
Custom Attributes & Tax: Define custom attribute schemas and tax categories.
Jobs: List and check async job status (invoice generation, revenue recognition).
Other: Get customer portal configuration, current date/time.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zenskar MCP ServerShow me my recent customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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:
Node.js 20.10 or newer on your machine
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 --versionThis 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-zenskarOr run directly:
npx mcp-zenskarAuthentication
Every request needs:
Organization ID — set via
ZENSKAR_ORGANIZATIONAPI 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 |
| List customers with search, filtering, and pagination |
| Get a customer by ID |
| Create a customer with address and tax info |
| Update customer details (partial update) |
| Permanently delete a customer by ID (only allowed when they have no active contracts or unpaid invoices) |
Contacts
Tool | Description |
| List contacts with pagination |
| Get a contact by ID |
| Create a contact for a customer |
| Update a contact's details |
| Delete a contact by ID |
Contracts
Tool | Description |
| List contracts with filtering by status, customer, dates |
| Get a contract with phases, pricings, and customer details |
| Create a contract with phases and pricing |
| Update contract terms, status, pricing, or renewal policy |
| Delete a draft contract |
| Get amendment history for a contract |
| Add a phase to a contract (add-ons, expansions) |
| Add pricing to a contract phase |
| Expire an active contract |
| Pause an active contract from a given start date, with an unpause-extension policy ( |
| Edit an existing pause phase — set or change the resume date, shift the start, or change the unpause policy |
| Resume a paused contract |
| Create a contract prompt |
| Extract contract data from raw text using AI |
Invoices
Tool | Description |
| List invoices with filtering by customer, status, dates |
| Get an invoice by ID |
| Get an invoice by external ID |
| Check invoice generation status |
| Download invoice in JSON format |
| Get contract actuals for an invoice |
| Get successful payments currently mapped to an invoice |
| Get successful payments for a specific invoice ID |
| Get original payment records for an invoice, excluding refund payment rows |
| Get invoice line items and pricing details |
| Get invoice summary |
| Get all available invoice tags |
| Generate a payment link for an invoice |
| Initiate payment for an invoice |
| Approve an invoice for billing |
| Void an invoice |
| Delete a draft invoice |
| Generate an invoice for a contract and date range |
| Create a credit note against an invoice |
| Auto-charge an invoice via payment gateway |
Payments
Tool | Description |
| List all payments with filtering and sorting, including refund records |
| Get a payment by ID |
| Record a successful manual/offline payment or tax withheld amount |
| Update a payment's invoice allocations ( |
| Delete a manual payment |
| Edit a manual payment's amount or method |
| Refund a payment (full or partial) |
Credit Notes
Tool | Description |
| List credit notes with pagination |
| Get a credit note by ID |
Products and Pricing
Tool | Description |
| List products in the catalog |
| Get a product by ID |
| Create a product |
| Update a product's details |
| Get pricing configs for a product |
| Create a pricing config for a product |
Plans (Templates)
Tool | Description |
| List plan templates |
| Get a plan by ID with phases and pricing |
| Create a plan template |
Accounting
Tool | Description |
| Get the full chart of accounts |
| List GL accounts with filtering |
| Create a GL account |
| List journal entries with filtering |
| Create a manual journal entry |
| Get a journal entry by ID with all lines |
| List journal lines across all entries |
| Get the balance sheet report |
| Get the income statement (P&L) |
| Get balance for a specific GL account |
| Trigger revenue recognition up to a date |
Custom Attributes and Tax
Tool | Description |
| List custom attribute definitions |
| Create a custom attribute definition |
| List tax categories |
| Create a tax category |
Jobs
Tool | Description |
| List async jobs (invoice gen, rev rec, etc.) |
| Get a job by ID to check status |
Business Entities
Tool | Description |
| List business entities |
| Get a business entity by ID |
| Create a business entity |
| Update a business entity |
Customer Addresses and Payment Methods
Tool | Description |
| List addresses for a customer |
| Add an address to a customer |
| Update a customer address |
| List payment methods for a customer |
| Attach a payment method to a customer |
| Delete a payment method from a customer |
Metrics and Usage Events
Tool | Description |
| List Billable Metrics with filtering; backend/API may also call these aggregates |
| Show the underlying schemas for Billable Metrics (Aggregates); mainly useful for debugging or integration work |
| Get Billable Metric estimates; backend/API may also call these aggregates |
| Get a Billable Metric by ID; backend/API may also call it an aggregate |
| Get logs for a Billable Metric (Aggregate) |
| Create a Billable Metric (Aggregate) |
| Update a Billable Metric (Aggregate) |
| Delete a Billable Metric (Aggregate) |
| List Usage Events with filtering; backend/API may also call these raw metrics |
| Create a Usage Event schema; backend/API calls this a raw metric |
| Get a Usage Event by ID; backend/API may also call it a raw metric |
| Get recent event rows for a Usage Event using the same preview-query path as the frontend |
| Get a Usage Event by API slug; backend/API may also call it a raw metric |
| Ingest a usage event |
| Ingest multiple usage events (up to 500) for a resource slug in a single call |
Entitlements
Tool | Description |
| List entitlements with filtering |
| Get an entitlement by ID |
| Create an entitlement |
| Update an entitlement |
| Delete an entitlement |
Other
Tool | Description |
| Get customer portal config |
| 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 startDeveloping 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:
GitHub Issues: https://github.com/zenskar/mcp-zenskar/issues
Zenskar Documentation: https://docs.zenskar.com
Available Tools
114 toolsapproveInvoiceapproveInvoiceA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique ID of the invoice to approve (required). | |
| send_email | No | Whether to send email notification (defaults to false). | |
| check_duplicate_invoice | No | Whether to check for duplicate invoices (defaults to true). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
attachPaymentMethodattachPaymentMethodC
Attach a payment method to a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier of the customer. | |
| payment_method_id | Yes | The payment method ID (from payment gateway) to attach. | |
| connector | No | Payment 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_default | No | Whether to set as the default payment method. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createAccountcreateAccountC
Create a new accounting (GL) account.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the account. | |
| account_category | Yes | Category of account. Valid values: 'Assets', 'Liabilities', 'Equity', 'Income', 'Expenses'. | |
| description | No | Description of the account. | |
| custom_data | No | Custom data object for the account. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the billable metric (required). | |
| dataschema | Yes | Data schema of the aggregate (JSON string, required). | |
| aggregation_query | Yes | Aggregate query — SQL/Jinja template for computing the metric (required). | |
| cust_agg_query | Yes | Customer aggregate query — SQL/Jinja template for customer-level computation (required). | |
| visual_query_builder | Yes | Visual query builder configuration object (required). | |
| datasource | Yes | Data source UUID (required). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Business Entity Name (required). | |
| No | Business Entity email address (optional). | ||
| phone_number | No | Business Entity phone number with country code (optional). | +911234567890 |
| is_default | No | Whether this is the default business entity (defaults to false). | |
| logo_url | No | Business Entity logo URL (optional). | |
| tax_config | No | Business Entity tax configuration as JSON object (optional). | |
| address_line1 | No | Address line 1 (optional). | |
| address_line2 | No | Address line 2 (optional). | |
| address_line3 | No | Address line 3 (optional). | |
| address_city | No | Address city (optional). | |
| address_state | No | Address state (optional). | |
| address_zipCode | No | Address zip code (optional). | |
| address_country | No | Address country (optional). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createContactcreateContactB
Create a new contact associated with a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | The customer ID (UUID) to associate this contact with. | |
| first_name | No | First name of the contact. | |
| last_name | No | Last name of the contact. | |
| Yes | Email address of the contact. | ||
| send_contract | No | Whether to send contracts to this contact. | |
| send_invoice | No | Whether to send invoices to this contact. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Contract name (required). | |
| description | No | Contract description (optional). | |
| status | No | Contract status (required, typically 'draft' for new contracts). | draft |
| currency | No | Currency code for the contract (e.g., 'USD', 'EUR'). | USD |
| start_date | Yes | Contract start date in ISO 8601 format (e.g., '2025-01-01T00:00:00.000000'). | |
| end_date | No | Contract end date in ISO 8601 format (e.g., '2025-12-31T23:59:59.999999'). Optional — omit for open-ended contracts. | |
| anchor_date | No | Anchor date for billing cycles in ISO 8601 format (defaults to start_date). | |
| customer_id | Yes | The ID of the customer for this contract (required, UUID format). | |
| renewal_policy | No | Contract renewal policy. Currently only 'do_not_renew' is supported at runtime. | do_not_renew |
| bill_parent_customer | No | Whether to bill the parent customer (defaults to false). | |
| phases | No | Array 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. | |
| source | No | Source information for the contract (e.g., {source_type: 'ai', source_id: 'uuid'}). | |
| custom_attributes | No | Custom attributes for the contract as key-value pairs. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to add a phase to. | |
| name | Yes | Name for this contract phase (e.g. 'Add-On Phase', 'Expansion Phase'). | |
| start_date | No | Phase start date in ISO 8601 format. | |
| end_date | No | Phase end date in ISO 8601 format. | |
| phase_type | No | Type of phase: active, pause, or trial. | |
| description | No | Description of this phase. | |
| pricings | No | Array of pricing configurations for this phase. | |
| source_plan_phase_id | No | UUID of the plan phase template this was derived from. | |
| phase_metadata | No | Additional metadata for this phase as key-value pairs. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract. | |
| phaseId | Yes | The unique identifier (UUID) of the phase to add pricing to. | |
| pricing_id | No | UUID of an existing product pricing to reference. Either this or inline pricing must be provided. | |
| product_id | No | UUID of the product this pricing is for. | |
| pricing | No | Inline pricing configuration object. Either this or pricing_id must be provided. | |
| product | No | Inline product definition object (name, description, sku, tax_codes, etc.). | |
| start_date | No | Pricing start date in ISO 8601 format. | |
| end_date | No | Pricing end date in ISO 8601 format. | |
| anchor_date | No | Billing anchor date for this pricing. | |
| external_id | No | External identifier for this pricing entry. | |
| custom_data | No | Custom metadata for this pricing. | |
| description | No | Description for this pricing entry. | |
| plan_id | No | UUID of the plan template this pricing derives from. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt_name | Yes | Identifier for this prompt template (e.g., 'Standard Contract Extraction', 'SaaS Subscription v2'). Used to look up / version-track the prompt. | |
| prompt_text | Yes | AI 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_schema | No | Optional schema name pinning the expected output shape (e.g., 'billing_schema', 'subscription_schema'). Null lets the AI infer. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createCustomAttributecreateCustomAttributeC
Create a new custom attribute definition for an entity type.
| Name | Required | Description | Default |
|---|---|---|---|
| attribute_key_name | Yes | Key name of the custom attribute (used as the field key). | |
| display_name | Yes | Display name for the custom attribute. | |
| module | Yes | Module/entity type this attribute applies to. Allowed values: 'customers', 'contracts', 'invoices', 'payments', 'products', 'plans'. | |
| data_type | Yes | Data type of the attribute. Valid values: 'STRING', 'INTEGER', 'FLOAT', 'BOOLEAN', 'LIST_STRING', 'ENUM', 'JSON', 'DATE'. | |
| default_value | No | Default value for the attribute. | |
| enum_choices | No | Array of allowed values for enum-type attributes. | |
| is_required | No | Whether the attribute is required. | |
| description | No | Description of the custom attribute. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| external_id | No | External customer ID (optional). | |
| customer_name | Yes | Customer name (required). | |
| No | Customer primary email address (optional). | ||
| phone_number | No | Customer phone number (optional). | |
| address_line1 | No | Address line 1 (optional). | |
| address_line2 | No | Address line 2 (optional). | |
| address_line3 | No | Address line 3 (optional). | |
| address_city | No | Address city (optional). | |
| address_state | No | Address state (optional). | |
| address_zipCode | No | Address zip code (optional). | |
| address_country | No | Address country (optional). | |
| address_country_code | No | Address country code (optional). | |
| ship_to_line1 | No | Shipping address line 1 (optional). | |
| ship_to_line2 | No | Shipping address line 2 (optional). | |
| ship_to_line3 | No | Shipping address line 3 (optional). | |
| ship_to_city | No | Shipping address city (optional). | |
| ship_to_state | No | Shipping address state (optional). | |
| ship_to_zipCode | No | Shipping address zip code (optional). | |
| ship_to_country | No | Shipping address country (optional). | |
| ship_to_country_code | No | Shipping address country code (optional). | |
| communications_enabled | No | Enable/disable communications (defaults to true). | |
| auto_charge_enabled | No | Enable/disable auto-charge (defaults to true). | |
| business_entity_id | No | Business entity ID (UUID format, optional). | |
| custom_data | No | Custom key-value pairs for additional customer info (e.g., {"industry": "saas", "account_tier": "enterprise", "sales_rep": "jane"}). Optional. | |
| tax_info | No | List 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. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createCustomerAddresscreateCustomerAddressB
Add a new address to a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier of the customer. | |
| line1 | Yes | Address line 1. | |
| line2 | No | Address line 2. | |
| city | No | City. | |
| state | No | State/province. | |
| zipCode | No | ZIP/postal code. | |
| country | No | Country name. | |
| country_code | No | ISO country code (e.g., 'US', 'GB'). | |
| line3 | No | Address line 3. | |
| is_default_billing | No | Set as default billing address. Default: false. | |
| is_default_shipping | No | Set as default shipping address. Default: false. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entitlement name (required). | |
| description | No | Entitlement description (optional). | |
| entitlement_type | No | Type of entitlement (e.g., 'Quantity', 'Feature', 'Access'). | |
| units | No | Units for the entitlement (e.g., 'units', 'GB', 'users'). | |
| is_active | No | Whether the entitlement is active (defaults to true). | |
| product_id | No | Associated product ID (UUID format, optional). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique identifier (UUID) of the invoice to charge. | |
| connector | No | Optional payment provider connector config object (e.g., {"name": "stripe", "reference_id": "cus_xxx"}). Backend auto-detects if omitted. | |
| source | No | Optional source identifier for the charge. | |
| payment_method_types | No | Optional list of allowed payment method types (e.g., ["card", "ach"]). | |
| skip_invoice_due_date_check | No | If true, charge proceeds even if the invoice is not yet due. Defaults to false. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique identifier (UUID) of the invoice to create a credit note against. | |
| credit_note_amount | Yes | Amount for the credit note in the invoice's currency (e.g. 25 for $25.00). | |
| reason | Yes | Reason for creating this credit note. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createJournalEntrycreateJournalEntryB
Create a new manual journal entry with debit and credit lines.
| Name | Required | Description | Default |
|---|---|---|---|
| posted_at | No | Posting date of the journal entry in ISO 8601 format (e.g., '2026-01-15T00:00:00'). | |
| description | Yes | Description/memo for the journal entry. | |
| currency | Yes | Three-letter ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP'). | |
| journal_lines | Yes | Array 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_data | No | Additional metadata as key-value pairs. | |
| status_type | No | Journal entry status (default: 'posted'). | posted |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | UUID of the customer making the payment. | |
| amount | Yes | Total payment amount in the smallest currency unit (e.g. cents). | |
| currency_code | Yes | Three-letter ISO 4217 currency code (e.g. USD). | |
| payment_parts | No | Array of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}. Links the payment to one or more invoices. | |
| payment_method | No | Manual payment method. Required when type='payment'; omit for type='tax_withheld'. Supported values match the frontend Add Payment flow. | |
| type | No | Frontend 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 |
| status | No | Payment 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_id | No | External reference ID for this payment. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the plan (required). | |
| status | Yes | Plan status (required). Valid values: 'draft', 'active', 'archived'. New plans almost always start as 'draft' — the user publishes via the UI to activate. | |
| schedule | Yes | Plan-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"}. | |
| description | No | Optional plan description. | |
| phases | Yes | Array 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"}}}]. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createProductcreateProductC
Create a new product in the catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the product. | |
| sku | No | SKU (stock keeping unit) identifier. | |
| description | No | Description of the product. | |
| type | Yes | Product type. Valid values: 'product' (standard product) or 'group' (product group). | |
| is_active | No | Whether the product is active. | |
| tax_codes | No | Tax code mapping object keyed by region/provider (e.g., {"avalara": "PS081282", "stripe": "txcd_99999999"}). | |
| custom_attributes | No | Custom attributes as key-value pairs. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The unique identifier of the product. | |
| name | No | Name of the pricing (optional). | |
| description | No | Description of this pricing configuration. | |
| pricing_data | Yes | Pricing 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). | |
| quantity | Yes | Quantity 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_period | Yes | Billing 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_recurring | No | Whether this pricing is recurring (true) or one-time (false). | |
| return_existing | No | If true, returns existing pricing with matching hash instead of creating a duplicate. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-friendly name for the Usage Event schema (raw metric). | |
| api_slug | Yes | API slug used when ingesting Usage Events (lowercase, underscores). | |
| dataschema | No | Data 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_order | No | Optional ordered list of columns for downstream processing. Locked to ['timestamp'] in production; leave as-is unless backend explicitly requests a schema change. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
createTaxCategorycreateTaxCategoryC
Create a new tax category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the tax category. | |
| external_codes | No | Array of external tax code mappings (e.g., [{ "provider": "avalara", "code": "P0000000" }]). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| aggregateId | Yes | The unique identifier (UUID) of the billable metric (aggregate) to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The unique identifier (UUID) of the contact to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier (UUID) of the customer to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| entitlementId | Yes | The unique identifier (UUID) of the entitlement to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique identifier (UUID) of the draft or upcoming invoice to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The unique identifier (UUID) of the payment to delete. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier (UUID) of the customer. | |
| paymentMethodId | Yes | The unique identifier (UUID) of the payment method to delete. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
downloadInvoicedownloadInvoiceC
Download an invoice in JSON format.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice to download. | |
| invoice_json_key | No | Optional key for invoice JSON. | |
| customer_id | No | Optional customer ID associated with the invoice. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The unique identifier (UUID) of the manual payment to edit. | |
| amount | No | Updated payment amount. | |
| payment_method_details | No | Updated payment method details object. | |
| payment_parts | No | Updated invoice allocations. Array of {invoice_id, amount}. | |
| external_id | No | Updated external reference ID. | |
| timestamp | No | Updated payment timestamp in ISO 8601 format. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract whose pause phase to edit. | |
| start_date | No | New pause start date (ISO 8601). Optional. | |
| end_date | No | Resume date — when the pause ends (ISO 8601). Set this to schedule a future resume. | |
| pause_phase_id | No | UUID 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_policy | No | How to handle the contract end date when unpaused. 'extend' or 'overlap'. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to expire. | |
| expiry_date | No | Date to expire the contract (e.g. 2026-12-31). Defaults to today if not provided. Must not be earlier than contract.start_date. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The 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.'). | |
| name | Yes | A name for the contract being extracted. | |
| organization_id | No | The organization ID for the contract extraction (will be auto-populated from user context if not provided). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes | UUID of the contract to generate the invoice for. | |
| customer_id | Yes | UUID of the customer. | |
| from_date | Yes | Start 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_date | Yes | End of billing period. Accepts ISO-8601 string or UNIX seconds integer. PREFER ISO string copied verbatim from getContractBillingCycles.end_date. | |
| bill_for_date | Yes | REQUIRED. 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_day | Yes | REQUIRED. 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. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
generateInvoicePaymentLinkgenerateInvoicePaymentLinkC
Generate a payment link for a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| amount | No | Custom amount to be charged for the invoice (must be less than the amount due). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | The unique identifier of the account. | |
| as_of | No | Date for the balance snapshot (YYYY-MM-DD). | |
| customer_id | No | Filter the balance to a single customer UUID. | |
| contract_id | No | Filter the balance to a single billing contract UUID (enables per-contract GL balance). | |
| currency | No | Three-letter ISO currency code (e.g. 'USD'). | |
| journal_entry__posted_at__gte | No | Lower bound on parent journal entry posted-at date (inclusive). | |
| journal_entry__posted_at__lte | No | Upper bound on parent journal entry posted-at date (inclusive). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getAggregateByIdgetAggregateByIdB
Get the details of a Billable Metric by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| aggregateId | Yes | The ID of the Billable Metric (aggregate). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getAggregateEstimatesgetAggregateEstimatesC
Get Billable Metric estimates based on the specified criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| aggregate_id | Yes | The ID of the Billable Metric (aggregate). | |
| customer_id | Yes | The ID of the customer. | |
| start_date | Yes | Start date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-15'). NOT datetime. | |
| end_date | Yes | End date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-31'). NOT datetime. | |
| get_single | No | Whether to get a single estimate (defaults to true). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| aggregateId | Yes | The ID of the Billable Metric (aggregate). | |
| start_date | No | Start date for filtering logs (YYYY-MM-DD). | |
| end_date | No | End date for filtering logs (YYYY-MM-DD). | |
| month | No | Filter by month (e.g., 'Apr 2023'). | |
| customer_id | No | Filter by customer ID. | |
| query_limit | No | Limit the number of log entries (defaults to 100). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getAllInvoiceTagsgetAllInvoiceTagsB
Get all available tags for invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date for the balance sheet period (YYYY-MM-DD). | |
| end_date | No | End date for the balance sheet period (YYYY-MM-DD). Defaults to today. | |
| cadence | No | Bucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'. | |
| currency | No | Three-letter ISO currency code to scope the report (e.g. 'USD'). | |
| customer_id | No | Restrict report to a single customer UUID. | |
| contract_id | No | Restrict report to a single billing contract UUID (enables per-contract balance sheet). | |
| account_id__in | No | Filter to a list of GL account UUIDs. | |
| grouping_keys | No | Optional grouping dimensions, e.g. ['customer_id'] or ['contract_id']. | |
| get_changes | No | If true, return period-over-period changes instead of cumulative values. | |
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum rows per page (default 10). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getBusinessEntityByIdgetBusinessEntityByIdB
Retrieve a business entity by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | The unique identifier of the business entity. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getContactByIdgetContactByIdA
Retrieve details for a specific contact by their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The unique ID of the contact to retrieve. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract. | |
| limit | No | Maximum number of cycles to return (default 10). Increase if the contract spans many years. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to retrieve. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| creditNoteId | Yes | The unique identifier (UUID) of the credit note. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getCurrentDateTimegetCurrentDateTimeC
Get the current system date and time in multiple formats for temporal context
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getCustomerByIdgetCustomerByIdC
Retrieve details for a specific customer by their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique ID of the customer to retrieve. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getCustomerPortalConfigurationgetCustomerPortalConfigurationC
Retrieve the customer portal configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getEntitlementByIdgetEntitlementByIdA
Get the details of an entitlement by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| entitlementId | Yes | The unique identifier (UUID) of the entitlement. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date for the income statement period (YYYY-MM-DD). | |
| end_date | No | End date for the income statement period (YYYY-MM-DD). | |
| cadence | No | Bucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'. | |
| currency | No | Three-letter ISO currency code to scope the report (e.g. 'USD'). | |
| customer_id | No | Restrict report to a single customer UUID (enables per-customer P&L). | |
| contract_id | No | Restrict report to a single billing contract UUID (enables per-contract P&L). | |
| account_id__in | No | Filter to a list of GL account UUIDs. | |
| grouping_keys | No | Optional grouping dimensions, e.g. ['customer_id'] or ['contract_id']. | |
| get_changes | No | If true, return period-over-period changes (default true for income statement). | |
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum rows per page (default 10). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceByExternalIdgetInvoiceByExternalIdC
Retrieve details for an invoice using its external ID.
| Name | Required | Description | Default |
|---|---|---|---|
| externalId | Yes | The external ID of the invoice. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceByIdgetInvoiceByIdC
Retrieve details for a specific invoice by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique ID of the invoice to retrieve. | |
| include_line_items | No | Whether to include line items in the response. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceContractJsonActualsgetInvoiceContractJsonActualsB
Get contract actuals in JSON format for a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceGenerationStatusgetInvoiceGenerationStatusC
Get the generation status of a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| contract_id | Yes | The ID of the contract associated with the invoice. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceLineItemsgetInvoiceLineItemsC
Get details about the invoice line items, features, and pricing models.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | No | Organization ID (auto-populated). | |
| invoiceId | Yes | The ID of the invoice to preview. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getInvoiceSummarygetInvoiceSummaryB
Get a summary of a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The ID of the invoice. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getJobByIdgetJobByIdB
Retrieve a specific job by its ID to check status and results.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The unique identifier of the job. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getJournalEntrygetJournalEntryA
Retrieve a journal entry by its ID, including all journal lines.
| Name | Required | Description | Default |
|---|---|---|---|
| journalEntryId | Yes | The unique identifier of the journal entry. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getPaymentByIdgetPaymentByIdB
Retrieve details for a specific payment by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The unique ID of the payment to retrieve. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getPlanByIdgetPlanByIdA
Retrieve a plan by its ID, including phases, products, and pricing configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| planId | Yes | The unique identifier of the plan. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The unique identifier (UUID) of the product. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getProductPricingsgetProductPricingsB
Retrieve all pricing configurations for a specific product.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The unique identifier of the product. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getRawMetricByIdgetRawMetricByIdC
Get Usage Event details by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| rawMetricId | Yes | The ID of the Usage Event resource (raw metric). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
getRawMetricBySluggetRawMetricBySlugB
Get Usage Event details by API slug.
| Name | Required | Description | Default |
|---|---|---|---|
| rawMetricSlug | Yes | The API slug of the Usage Event resource (raw metric). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| rawMetricId | Yes | The ID of the Usage Event resource (raw metric). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| rawMetricSlug | Yes | Slug of the Usage Event resource (raw metric), e.g. api_usage_events. | |
| event | No | Usage 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. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listAccountslistAccountsB
Retrieve a paginated list of accounting accounts (GL accounts) with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of accounts to return per page. | |
| name__ilike | No | Case-insensitive partial match for account name. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listAggregateslistAggregatesB
List Billable Metrics in paginated form, with filtering by ID, name, and data source.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of records to return per page (defaults to 10). | |
| order | No | Order of results (e.g., '-created_at'). | -created_at |
| sort_key | No | Key to sort the results by (e.g., 'id'). | created_at |
| sort_type | No | Sort order type (e.g., 'asc'). | DESC |
| id | No | Filter by aggregate ID. | |
| name__ilike | No | Case-insensitive partial match for aggregate name. | |
| datasource | No | Filter by data source ID. | |
| created_at__gte | No | Filter by creation date greater than or equal to (ISO 8601). | |
| parent_aggregate_id__isnull | No | Whether to include only top-level aggregates (no parent). Defaults to true. | |
| aggregate_type__isnull | No | Whether to include only aggregates without an explicit type. Defaults to true. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of payments to return per page (defaults to 10). | |
| search | No | General search query. | |
| sort_key | No | Key to sort the results by (e.g., 'id'). | |
| sort_type | No | Sort order type (e.g., 'asc'). | |
| order | No | Order of results (e.g., '-created_at'). | -created_at |
| id | No | Filter by payment ID. | |
| customer_id | No | Filter by customer ID. | |
| connector_id | No | Filter by connector ID. | |
| external_id__ilike | No | Case-insensitive partial match for external ID. | |
| payment_method | No | Filter by payment method (e.g., 'card', 'cash', 'bank_transfer'). | |
| type | No | Filter by payment type (e.g., 'payment', 'refund'). | |
| amount__gte | No | Filter by amount greater than or equal to. | |
| amount__lte | No | Filter by amount less than or equal to. | |
| amount_refunded__gte | No | Filter by amount refunded greater than or equal to. | |
| amount_refunded__lte | No | Filter by amount refunded less than or equal to. | |
| currency_code__ilike | No | Case-insensitive partial match for currency code. | |
| receipt_number__ilike | No | Case-insensitive partial match for receipt number. | |
| status | No | Filter by payment status (e.g., 'success', 'failed'). | |
| autocharge | No | Filter by auto-charge status. | |
| parent_id | No | Filter by parent payment ID. | |
| timestamp__gte | No | Filter by timestamp greater than or equal to (Unix time). | |
| timestamp__lte | No | Filter by timestamp less than or equal to (Unix time). | |
| created_at__gte | No | Filter by creation date greater than or equal to (ISO 8601). | |
| created_at__lte | No | Filter by creation date less than or equal to (ISO 8601). | |
| invoice__id | No | Filter by associated invoice ID. | |
| invoice__bill_for_date__gte | No | Filter by invoice billing date greater than or equal to (ISO 8601). | |
| invoice__bill_for_date__lte | No | Filter by invoice billing date less than or equal to (ISO 8601). | |
| invoice__approved_at__gte | No | Filter by invoice approval date greater than or equal to (ISO 8601). | |
| invoice__approved_at__lte | No | Filter by invoice approval date less than or equal to (ISO 8601). | |
| customer__business_entity_id | No | Filter by customer's business entity ID. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listBusinessEntitieslistBusinessEntitiesB
Retrieve a list of business entities configured for the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of entities to return. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listContactslistContactsC
Retrieve a paginated list of contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of contacts to return per page (defaults to 10). | |
| sort_key | No | Key to sort the results by (e.g., 'id'). | |
| sort_type | No | Sort order type (e.g., 'asc'). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination to fetch the next or previous set of records. | |
| limit | No | Maximum number of records to return per page (defaults to 10). | |
| order | No | Order of results (e.g., '-created_at' for descending creation date). | -created_at |
| id | No | Filter by Contract ID (exact match). | |
| id__in | No | Filter by a comma-separated list of Contract IDs. | |
| id__isnull | No | Filter by whether Contract ID is null. | |
| customer_id | No | Filter by Customer ID (exact match). | |
| customer_id__in | No | Filter by a comma-separated list of Customer IDs. | |
| customer_id__isnull | No | Filter by whether Customer ID is null. | |
| name | No | Filter by Contract Name (exact match). | |
| name__ilike | No | Contract Name (case-insensitive partial match). | |
| name__like | No | Contract Name (case-sensitive partial match). | |
| name__in | No | Filter by a comma-separated list of Contract Names. | |
| name__isnull | No | Filter by whether Contract Name is null. | |
| start_date | No | Contract Start Date (exact match, ISO 8601). | |
| start_date__neq | No | Contract Start Date (not equal, ISO 8601). | |
| start_date__gt | No | Contract Start Date (greater than, ISO 8601). | |
| start_date__gte | No | Contract Start Date (greater than or equal to, ISO 8601). | |
| start_date__lt | No | Contract Start Date (less than, ISO 8601). | |
| start_date__lte | No | Contract Start Date (less than or equal to, ISO 8601). | |
| start_date__isnull | No | Filter by whether Contract Start Date is null. | |
| start_date__in | No | Filter by a comma-separated list of Contract Start Dates. | |
| created_at | No | Contract Created At (exact match, ISO 8601). | |
| created_at__neq | No | Contract Created At (not equal, ISO 8601). | |
| created_at__gt | No | Contract Created At (greater than, ISO 8601). | |
| created_at__gte | No | Contract Created At (greater than or equal to, ISO 8601). | |
| created_at__lt | No | Contract Created At (less than, ISO 8601). | |
| created_at__lte | No | Contract Created At (less than or equal to, ISO 8601). | |
| created_at__isnull | No | Filter by whether Contract Created At is null. | |
| created_at__in | No | Filter by a comma-separated list of Contract Creation Dates. | |
| end_date | No | Contract End Date (exact match, ISO 8601). | |
| end_date__neq | No | Contract End Date (not equal, ISO 8601). | |
| end_date__gt | No | Contract End Date (greater than, ISO 8601). | |
| end_date__gte | No | Contract End Date (greater than or equal to, ISO 8601). | |
| end_date__lt | No | Contract End Date (less than, ISO 8601). | |
| end_date__lte | No | Contract End Date (less than or equal to, ISO 8601). | |
| end_date__isnull | No | Filter by whether Contract End Date is null. | |
| end_date__in | No | Filter by a comma-separated list of Contract End Dates. | |
| status | No | Filter contracts by their status. | |
| status__in | No | Filter by a comma-separated list of contract statuses. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listCreditNoteslistCreditNotesB
Retrieve a paginated list of credit notes. Supports cursor-based pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of results per page (defaults to 10). | |
| customer_id | No | Filter by customer UUID. | |
| invoice_id | No | Filter by invoice UUID. | |
| status | No | Filter by status: in_progress, issued, void, or paid. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listCustomAttributeslistCustomAttributesB
Retrieve a list of custom attribute definitions configured for the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Filter by module. Valid values: 'customers', 'contracts', 'invoices', 'payments', 'products', 'plans'. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listCustomerAddresseslistCustomerAddressesB
Retrieve all addresses for a specific customer.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier of the customer. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination to fetch the next or previous set of records. | |
| limit | No | Maximum number of customers to return per page (defaults to 10). | |
| search | No | Advanced 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_id | No | Quick 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. | |
| order | No | Order of results (e.g., '-created_at' for descending creation date). | -created_at |
| sort_key | No | Key to sort the results by (e.g., 'id'). | |
| sort_type | No | Sort order type (e.g., 'asc' for ascending). | |
| expand | No | Fields to expand in the response (e.g., 'contacts'). | |
| id | No | Filter by customer ID (exact match). | |
| id__in | No | Filter by a comma-separated list of customer IDs. | |
| external_id | No | Filter by external ID (exact match). | |
| external_id__ilike | No | Case-insensitive partial match for external ID. | |
| No | Filter by email (exact match). | ||
| email__ilike | No | Case-insensitive partial match for email. | |
| phone_number__ilike | No | Case-insensitive partial match for phone number. | |
| communications_enabled | No | Filter by communications enabled status. | |
| auto_charge_enabled | No | Filter by auto-charge enabled status. | |
| created_at__gte | No | Filter by creation date greater than or equal to (ISO 8601 format). | |
| created_at__lte | No | Filter by creation date less than or equal to (ISO 8601 format). | |
| customer_name__ilike | No | Case-insensitive partial match for customer name. | |
| business_entity_id | No | Filter by business entity ID (exact match). | |
| invoice__customer_id | No | Filter by invoice customer ID. | |
| invoice__status | No | Filter by invoice status. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of records to return per page (defaults to 50). | |
| order | No | Order of results (e.g., '-created_at'). | -created_at |
| sort_key | No | Key to sort the results by. | created_at |
| sort_type | No | Sort order type ('ASC' or 'DESC'). | DESC |
| search | No | Text search across entitlement fields. | |
| id | No | Filter by entitlement ID. | |
| name__ilike | No | Case-insensitive partial match for entitlement name. | |
| entitlement_type | No | Filter by entitlement type. | |
| is_active | No | Filter by active status. | |
| product_id | No | Filter by associated product ID. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | Filter invoices by a specific customer ID. | |
| customer__external_id | No | Filter invoices by a customer's external ID (nested filter). | |
| status | No | Filter invoices by their status (e.g., 'draft', 'approved', 'paid', 'void', 'partially_paid', 'upcoming'). | |
| status__in | No | Filter invoices by multiple statuses (comma-separated, e.g., 'draft,approved,paid,partially_paid,upcoming,void'). | |
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of invoices to return per page (defaults to 10). | |
| contract_id | No | Filter by contract ID. | |
| external_id | No | Filter by invoice external ID. | |
| invoice_total__gte | No | Filter by invoice total greater than or equal to. | |
| invoice_total__lte | No | Filter by invoice total less than or equal to. | |
| amount_due__gte | No | Filter by amount due greater than or equal to. | |
| amount_due__lte | No | Filter by amount due less than or equal to. | |
| due_date__gte | No | Filter by due date greater than or equal to (ISO 8601). | |
| due_date__lte | No | Filter by due date less than or equal to (ISO 8601). | |
| created_at__gte | No | Filter by creation date greater than or equal to (ISO 8601). | |
| created_at__lte | No | Filter by creation date less than or equal to (ISO 8601). | |
| invoice_number__like | No | Partial match for invoice number. | |
| customer__customer_name__ilike | No | Case-insensitive partial match for customer name associated with the invoice. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listJobslistJobsB
Retrieve a paginated list of async jobs (invoice generation, revenue recognition, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of jobs to return per page. | |
| search | No | Search query to filter jobs. Format: 'field=value'. | |
| resource__neq | No | Exclude 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 |
| __userContext | No | Internal 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=).
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of journal entries to return per page. | |
| search_query | No | Search query to filter journal entries. | |
| order | No | Sort order. Prefix with '-' for descending. Defaults to '-created_at'. | |
| id | No | Filter by journal entry UUID (exact match). | |
| posted_at__gte | No | Posted-at date lower bound (inclusive). Accepts ISO date YYYY-MM-DD or full datetime. | |
| posted_at__lte | No | Posted-at date upper bound (inclusive). | |
| status_type | No | Filter by status. Common values: 'posted', 'draft'. | |
| description__ilike | No | Case-insensitive partial match on description. | |
| job_id | No | Filter by originating job UUID (e.g. revenue recognition batch). | |
| lines__account_id | No | Filter entries having a line on this account UUID. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of journal lines to return per page. | |
| search_query | No | Search query to filter journal lines. | |
| order | No | Sort order. Prefix with '-' for descending. Defaults to '-created_at'. | |
| customer_id | No | Filter by customer UUID. | |
| contract_id | No | Filter by billing contract UUID. | |
| account_id | No | Filter by GL account UUID. | |
| journal_entry_id | No | Filter by parent journal entry UUID. | |
| revenue_contract_id | No | Filter by revenue recognition contract UUID (distinct from billing contract_id). | |
| performance_obligation_id | No | Filter by performance obligation UUID. | |
| invoice_id | No | Filter by invoice UUID. | |
| currency | No | Three-letter ISO currency code (e.g. 'USD'). | |
| journal_entry__posted_at__gte | No | Parent entry posted-at lower bound (inclusive). YYYY-MM-DD or ISO datetime. | |
| journal_entry__posted_at__lte | No | Parent entry posted-at upper bound (inclusive). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listPaymentMethodslistPaymentMethodsB
Retrieve all payment methods for a specific customer.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier of the customer. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of plans to return per page. | |
| name__ilike | No | Case-insensitive partial match for plan name. | |
| status | No | Filter by plan status. Valid values: draft, active, archived. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of results per page (defaults to 10). | |
| name__ilike | No | Case-insensitive partial match for product name. | |
| type | No | Filter by product object type. Defaults to 'product' (excludes plans, addons, etc.). | product |
| product_category__isnull | No | Whether to include only products without a category. Defaults to true. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listRawMetricslistRawMetricsC
List Usage Events. Supports filtering by ID, name, and API slug.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor for pagination. | |
| limit | No | Maximum number of records to return per page (defaults to 10). | |
| order | No | Order of results (e.g., '-created_at'). | -created_at |
| sort_key | No | Key to sort the results by (e.g., 'created_at'). | created_at |
| sort_type | No | Sort order type (e.g., 'asc'). | DESC |
| search | No | General search query. | |
| id | No | Filter by usage event ID. | |
| name__ilike | No | Case-insensitive partial match for usage event name. | |
| api_slug__ilike | No | Case-insensitive partial match for API slug. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| limit | No | Maximum number of revenue postings to return per page. | |
| order | No | Sort order. Prefix with '-' for descending. Defaults to '-created_at'. | |
| contract_id | No | Filter by billing contract UUID. | |
| revenue_contract_id | No | Filter by revenue recognition contract UUID. | |
| revenue_contract_item_id | No | Filter by revenue contract item UUID. | |
| performance_obligation_id | No | Filter by performance obligation UUID. | |
| posting_date__gte | No | Posting date lower bound (inclusive, YYYY-MM-DD). | |
| posting_date__lte | No | Posting date upper bound (inclusive, YYYY-MM-DD). | |
| currency | No | Three-letter ISO currency code (e.g. 'USD'). | |
| journal_entry_id__isnull | No | If true, return only postings not yet posted to a journal entry. If false, return only postings already journalised. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
listTaxCategorieslistTaxCategoriesB
Retrieve a list of tax categories configured for the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to pause. | |
| start_date | Yes | Date 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_policy | Yes | How 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_date | No | Optional date when the pause ends and contract auto-resumes (ISO 8601). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | The payment payload. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date for revenue recognition in YYYY-MM-DD format (required). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes | Billing contract UUID (required). | |
| revenue_contract_id | Yes | Revenue recognition contract UUID (required). | |
| revenue_contract_item_id | Yes | Revenue contract item UUID (required). | |
| performance_obligation_id | Yes | Performance obligation UUID (required). | |
| posting_date | Yes | Posting date in YYYY-MM-DD format (required). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The unique identifier (UUID) of the payment to refund. | |
| refund_amount | Yes | Refund 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_destination | Yes | Where 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_invoices | Yes | If true, the invoice(s) linked to this payment are marked written off (no further collection). Set false to leave invoice balance owing after refund. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to resume. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| aggregateId | Yes | The unique identifier (UUID) of the billable metric (aggregate) to update. | |
| name | No | Updated name of the billable metric. | |
| dataschema | No | Updated data schema (JSON string). | |
| aggregation_query | No | Updated aggregate query (SQL/Jinja template). | |
| cust_agg_query | No | Updated customer aggregate query (SQL/Jinja template). | |
| visual_query_builder | No | Updated visual query builder configuration. | |
| datasource | No | Updated data source UUID. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
updateBusinessEntityupdateBusinessEntityC
Update an existing business entity's details.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | The unique identifier of the business entity to update. | |
| name | No | Updated name of the business entity. | |
| address | No | Updated address object with line1, line2, city, state, zipCode, country, country_code. | |
| tax_config | No | Tax configuration object (e.g., { "tax_id": "...", "tax_provider": "..." }). | |
| No | Updated email address. | ||
| phone_number | No | Updated phone number (max 20 chars). Include country code (e.g., +1-555-0100). | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
updateContactupdateContactB
Update an existing contact's details. Supports partial updates.
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The unique identifier of the contact to update. | |
| customer | No | The customer ID (UUID) this contact belongs to. | |
| first_name | No | Updated first name. | |
| last_name | No | Updated last name. | |
| No | Updated email address. | ||
| send_contract | No | Whether to send contracts to this contact. | |
| send_invoice | No | Whether to send invoices to this contact. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| contractId | Yes | The unique identifier (UUID) of the contract to update. | |
| name | Yes | Human-readable name for the contract. | |
| status | Yes | Contract status: draft, active, paused, or disputed. Cannot set to 'expired' via update. | |
| currency | Yes | Three-letter ISO 4217 currency code (e.g. USD, EUR, GBP). | |
| start_date | Yes | Contract start date in ISO 8601 format (e.g. 2026-01-01T00:00:00). | |
| customer_id | Yes | UUID of the customer associated with this contract. | |
| description | No | Detailed description of the contract terms. | |
| end_date | No | Contract end date in ISO 8601 format. | |
| anchor_date | No | Reference date for billing cycle calculations. | |
| is_last_day_of_month | No | When true, billing cycles always end on the last day of the month. | |
| custom_attributes | No | Key-value pairs for organization-specific metadata (e.g. automatic_renewal flag). | |
| phases | No | Array 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_policy | No | Contract renewal behavior: renew_with_default_contract, renew_with_existing, or do_not_renew. | |
| contract_link | No | URL to external contract document or signed agreement. | |
| bill_parent_customer | No | When true and customer has a parent relationship, invoices are sent to the parent. | |
| invoice_payer_customer_id | No | Optional customer UUID who will receive and pay invoices for this contract. | |
| include_in_renewal | No | When true, this contract is eligible for renewal processes. | |
| tags | No | List of tags for categorizing and filtering contracts. | |
| source | No | Metadata about the originating system (e.g. {source_type: 'hubspot', source_id: 'deal_123'}). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier (UUID) of the customer to update. | |
| customer_name | No | Updated customer name. | |
| No | Updated email address. | ||
| phone_number | No | Updated phone number. | |
| external_id | No | Updated external identifier. | |
| address_line1 | No | Address line 1. | |
| address_line2 | No | Address line 2. | |
| address_city | No | City. | |
| address_state | No | State. | |
| address_zipCode | No | ZIP/postal code. | |
| address_country | No | Country. | |
| address_country_code | No | Country code (e.g. US, GB). | |
| communications_enabled | No | Enable/disable invoice email communications. | |
| auto_charge_enabled | No | Enable/disable auto-charge for this customer. | |
| business_entity_id | No | UUID of the business entity to associate with. | |
| address_line3 | No | Address line 3. | |
| ship_to_line1 | No | Shipping address line 1. | |
| ship_to_line2 | No | Shipping address line 2. | |
| ship_to_line3 | No | Shipping address line 3. | |
| ship_to_city | No | Shipping address city. | |
| ship_to_state | No | Shipping address state. | |
| ship_to_zipCode | No | Shipping address ZIP/postal code. | |
| ship_to_country | No | Shipping address country. | |
| ship_to_country_code | No | Shipping address country code (e.g. US, GB). | |
| custom_data | No | Custom key-value pairs for additional customer info (e.g., {"industry": "saas", "account_tier": "enterprise"}). | |
| tax_info | No | List 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. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
updateCustomerAddressupdateCustomerAddressC
Update an existing customer address.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | The unique identifier of the customer. | |
| addressId | Yes | The unique identifier of the address to update. | |
| line1 | No | Updated address line 1. | |
| line2 | No | Updated address line 2. | |
| city | No | Updated city. | |
| state | No | Updated state/province. | |
| zipCode | No | Updated ZIP/postal code. | |
| country | No | Updated country name. | |
| country_code | No | Updated ISO country code. | |
| line3 | No | Updated address line 3. | |
| is_default_billing | No | Set as default billing address. | |
| is_default_shipping | No | Set as default shipping address. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| entitlementId | Yes | The unique identifier (UUID) of the entitlement to update. | |
| name | Yes | Updated entitlement name. | |
| description | No | Updated entitlement description. | |
| entitlement_type | No | Updated type of entitlement. | |
| units | No | Updated units for the entitlement (e.g., 'units', 'GB', 'users'). | |
| is_active | No | Whether the entitlement is active. | |
| product_id | No | Updated associated product ID (UUID format). | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The unique identifier (UUID) of the payment to update. | |
| payment_parts | Yes | Updated array of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}. This field is required by the API. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
updateProductupdateProductC
Update an existing product's details.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The unique identifier of the product to update. | |
| name | No | Updated name of the product. | |
| sku | No | Updated SKU. | |
| description | No | Updated description. | |
| is_active | No | Whether the product is active. | |
| tax_codes | No | Updated tax codes array. | |
| custom_attributes | No | Updated custom attributes. | |
| __userContext | No | Internal 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.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The unique identifier (UUID) of the invoice to void. | |
| __userContext | No | Internal user context for multi-tenant authentication and approval workflow |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
114 tool updates
v2.2.4- First observed
approveInvoice - First observed
attachPaymentMethod - First observed
createAccount - First observed
createAggregate - First observed
createBusinessEntity - First observed
createContact - First observed
createContract - First observed
createContractPhase - First observed
createContractPhasePricing - First observed
createContractPrompt - First observed
createCustomAttribute - First observed
createCustomer - First observed
createCustomerAddress - First observed
createEntitlement - First observed
createInvoiceCharge - First observed
createInvoiceCreditNote - First observed
createJournalEntry - First observed
createPayment - First observed
createPlan - First observed
createProduct - First observed
createProductPricing - First observed
createRawMetric - First observed
createTaxCategory - First observed
deleteAggregate - First observed
deleteContact - First observed
deleteContract - First observed
deleteCustomer - First observed
deleteEntitlement - First observed
deleteInvoice - First observed
deleteManualPayment - First observed
deletePaymentMethod - First observed
downloadInvoice - First observed
editManualPayment - First observed
editPauseContract - First observed
expireContract - First observed
extractContractFromRaw - First observed
generateInvoice - First observed
generateInvoicePaymentLink - First observed
getAccountBalance - First observed
getAggregateById - First observed
getAggregateEstimates - First observed
getAggregateLogs - First observed
getAggregateSchemas - First observed
getAllInvoiceTags - First observed
getBalanceSheet - First observed
getBusinessEntityById - First observed
getChartOfAccounts - First observed
getContactById - First observed
getContractAmendments - First observed
getContractBillingCycles - First observed
getContractById - First observed
getCreditNoteById - First observed
getCurrentDateTime - First observed
getCustomerById - First observed
getCustomerPortalConfiguration - First observed
getEntitlementById - First observed
getIncomeStatement - First observed
getInvoiceByExternalId - First observed
getInvoiceById - First observed
getInvoiceContractJsonActuals - First observed
getInvoiceGenerationStatus - First observed
getInvoiceLineItems - First observed
getInvoicePayments - First observed
getInvoicePaymentsById - First observed
getInvoicePaymentsWithoutRefunds - First observed
getInvoicePreviewHtml - First observed
getInvoiceSummary - First observed
getJobById - First observed
getJournalEntry - First observed
getPaymentById - First observed
getPlanById - First observed
getProductById - First observed
getProductPricings - First observed
getRawMetricById - First observed
getRawMetricBySlug - First observed
getRawMetricLogs - First observed
ingestRawMetricEvent - First observed
listAccounts - First observed
listAggregates - First observed
listAllPayments - First observed
listBusinessEntities - First observed
listContacts - First observed
listContracts - First observed
listCreditNotes - First observed
listCustomAttributes - First observed
listCustomerAddresses - First observed
listCustomers - First observed
listEntitlements - First observed
listInvoices - First observed
listJobs - First observed
listJournalEntries - First observed
listJournalLines - First observed
listPaymentMethods - First observed
listPlans - First observed
listProducts - First observed
listRawMetrics - First observed
listRevenuePostings - First observed
listTaxCategories - First observed
pauseContract - First observed
payInvoice - First observed
recogniseRevenue - First observed
refreshRevenuePostings - First observed
refundPayment - First observed
resumeContract - First observed
updateAggregate - First observed
updateBusinessEntity - First observed
updateContact - First observed
updateContract - First observed
updateCustomer - First observed
updateCustomerAddress - First observed
updateEntitlement - First observed
updatePayment - First observed
updateProduct - First observed
voidInvoice
TDQS
Scored across 114 tools
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.
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.
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.
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
Related MCP Connectors
Query your books, company data, business health, and ship invoices from your AI assistant.
Query and manage Amberflo metering & billing: customers, meters, usage, plans, invoices, prepaid.
Ask your accounts-receivable portfolio anything. Read-only, scoped to your account.
FinOps assistant: query AWS, GCP and Azure cost, commitments, budgets and reports.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseAqualityDmaintenanceEnables AI assistants to query and manage QuickBooks Online data through natural language, including customers, invoices, bills, vendors, accounts, and financial reports.7MIT
- -licenseNot gradedqualityDmaintenanceEnables interaction with Xero accounting API for financial reporting, sales analysis, grant tracking, and bill management using natural language.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Zoho Books accounting tasks such as invoices, contacts, expenses, and sales orders through natural language.38MIT