Autumn MCP by usefulapi
Server Details
MCP server for Autumn — read customers, plans, balances & invoices; track usage and attach plans.
- Status
- Healthy
- Uptime
- 76.5% over 73 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 18 tools
Most tools are cleanly separated by resource+action, and the descriptions explicitly neutralize the riskiest pairs (attach_plan vs preview_attach, check vs track_usage, get_customer vs get_or_create_customer). The main residual overlap is autumn_request, a read-only escape hatch that can duplicate any get_/list_/check tool, and the get vs get_or_create boundary requires reading descriptions rather than names alone.
All names share the autumn_ prefix and snake_case, and almost all follow verb_noun (get_customer, list_plans, create_entity, track_usage). Two names — autumn_check and autumn_request — omit the noun object, but overall the pattern is predictable and readable.
18 tools is on the heavy side of the sweet spot but each maps to a distinct Autumn API endpoint and earns its place across customers, entities, features, plans, invoices, and billing actions. Nothing looks redundant or padding.
Customer and read paths are well covered, but the write surface has clear holes: no entity update/delete, no feature or plan creation, no detach/cancel subscription, no single-invoice get, and no balance listing. The escape hatch only allows read/preview paths, so agents cannot work around these gaps and must fall back to the raw API.
Available Tools
18 toolsautumn_attach_planAttach a planADestructiveInspect
MUTATES Autumn billing data — attaches (subscribes) a plan to a customer; may create an invoice / return a payment URL. Autumn API: POST /v1/billing.attach. Returns { customer_id, invoice, payment_url, required_action }.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The ID of the plan. | |
| version | No | The version of the plan to attach. | |
| customize | No | Optional plan overrides (price, items, licenses, free trial). | |
| entity_id | No | The ID of the entity to attach the plan to. | |
| customer_id | Yes | The ID of the customer to attach the plan to. | |
| success_url | No | URL to redirect to after a successful checkout. | |
| invoice_mode | No | Invoice-mode configuration object (send an invoice instead of auto-charging). | |
| redirect_mode | No | Checkout redirect mode: always, if_required, or never. | |
| feature_quantities | No | Prepaid feature quantities: array of { feature_id, quantity?, adjustable? }. | |
| checkout_session_params | No | Extra Stripe checkout session params (can carry metadata). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond destructiveHint=true by disclosing concrete side effects ('may create an invoice / return a payment URL') and the response shape including required_action, which signals possible 3DS/SCA flow. It does not cover idempotency, repeated-attach behavior, or error conditions for a destructive billing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the mutation warning and the resource front-loaded, then the endpoint and return shape. Nothing is padded or repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter destructive mutation with no output schema, the description supplies the return fields and the key side effect (invoice/payment URL) an agent needs. It leaves gaps around checkout flow branches (redirect_mode vs invoice_mode) and failure handling, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries meaning for all 10 parameters, and the baseline 3 applies. The description adds no parameter-level nuance such as how redirect_mode interacts with invoice_mode or what customize overrides are permitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('attaches (subscribes) a plan to a customer') and front-loads the MUTATES marker, which implicitly separates it from the read-only sibling autumn_preview_attach. It stops short of naming that alternative explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the 'subscribes' gloss, but there is no explicit guidance on when to choose this over autumn_preview_attach, nor any prerequisite such as the plan needing to exist first. An agent still has to infer the when-not condition from the MUTATES banner.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_checkCheck feature access / balanceARead-onlyInspect
READ-ONLY entitlement check: does a customer have access to (or enough balance of) a feature? Autumn API: POST /v1/balances.check. This tool never records usage — it does not expose send_event or lock.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | No | Entity id for entity-scoped balances (e.g. per-seat limits). | |
| feature_id | Yes | The ID of the feature to check. | |
| customer_id | Yes | The ID of the customer. | |
| with_preview | No | Include upgrade/upsell (paywall) info in the response when access is denied. | |
| required_balance | No | Minimum balance required for access. Returns allowed:false if below. Defaults to 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces it while adding genuine context: no usage is recorded and no send_event/lock behavior is exposed. It does not spell out the response shape (e.g. what allowed/balance fields come back) or error behavior, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the read-only guarantee and the endpoint front-loaded, followed by the negative-scope clarification. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only check with no output schema, the description conveys the decision semantics (allowed vs. not enough balance, paywall preview via with_preview) well enough to call correctly. A brief return-value hint would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented in-schema, including required_balance's default and with_preview's paywall purpose. The description adds only the loose 'enough balance of' phrasing, so the schema is doing the heavy lifting and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('READ-ONLY entitlement check: does a customer have access to ... a feature?') and pins the API operation (POST /v1/balances.check). The 'never records usage — does not expose send_event or lock' line cleanly separates it from the sibling that would do that (autumn_track_usage).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only/no-usage-recording framing makes the selection context clear: check access here, record consumption elsewhere. It stops short of naming autumn_track_usage explicitly as the alternative, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_create_entityCreate an entityADestructiveInspect
MUTATES Autumn billing data — creates an entity (e.g. a seat) under a customer, tied to a feature. Autumn API: POST /v1/entities.create.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the entity. | |
| entity_id | Yes | The ID of the entity. | |
| feature_id | Yes | The ID of the feature this entity is associated with. | |
| customer_id | Yes | The ID of the customer to create the entity for. | |
| billing_controls | No | Optional billing controls for the entity (spend/usage limits). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already announces that this is a write with destructive potential, and 'MUTATES Autumn billing data' is consistent with that. The description adds the REST endpoint as useful context, but says nothing about idempotency of entity_id, required API permissions, or error behavior when the entity already exists — which is the information an agent actually lacks for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the mutation warning front-loaded before the resource explanation and the endpoint. Every clause carries information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation with a nested, unconstrained billing_controls object and no output schema, the definition covers identity and endpoint but not outcomes. An agent still does not know what the call returns or what happens on duplicate entity_id, leaving a meaningful gap for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters including customer_id, entity_id, feature_id, name and billing_controls are already documented in the schema. The description's mention of 'under a customer, tied to a feature' largely restates the schema and adds no format, constraint, or shape detail — notably none for the free-form billing_controls object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('creates an entity') plus the domain relationships — under a customer, tied to a feature — and gives the backing endpoint POST /v1/entities.create. The create verb plus the '(e.g. a seat)' example clearly separates it from autumn_get_entity and autumn_list_entities in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (provisioning a per-seat entity against a feature for a known customer) but never states it explicitly. There is no guidance on preconditions such as looking up the customer first via autumn_get_customer, no mention of what happens if the entity_id already exists, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_get_customerGet a customerARead-onlyInspect
Fetch a single Autumn customer by id, optionally expanding related data (invoices, entities, subscriptions, balances). Autumn API: POST /v1/customers.get.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Related data to expand, e.g. invoices, entities, subscriptions.plan, purchases.plan, balances.feature. | |
| customer_id | Yes | Your unique identifier for the customer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read, so the description's burden is lower. It adds useful context about optional expansion of related data and the underlying endpoint, but says nothing about not-found behavior, permissions, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and the endpoint as trailing technical detail. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read with full schema coverage and annotation-declared safety, this is nearly sufficient. The only missing piece is what happens when the id doesn't resolve, which matters for error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both customer_id and expand are already documented; baseline 3 applies. The description restates the expand capability but adds no syntax or format detail beyond the schema's own examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (a single Autumn customer by id) plus the endpoint. The word 'single' implicitly separates it from autumn_list_customers, but it does not name any sibling explicitly, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The single-by-id scope implies when to use it versus the list variant, but there is no explicit guidance on alternatives. Notably it never distinguishes itself from the sibling autumn_get_or_create_customer, which is the ambiguous case an agent most needs resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_get_entityGet an entityARead-onlyInspect
Fetch a single entity (e.g. a seat) belonging to a customer. Autumn API: POST /v1/entities.get.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Related data to expand, e.g. invoices, entities, subscriptions.plan, purchases.plan, balances.feature. | |
| entity_id | Yes | The ID of the entity. | |
| customer_id | Yes | The ID of the customer that owns the entity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe non-mutating read, so the description's burden is lighter. It adds the ownership scoping (the entity belongs to a customer) and the underlying endpoint, but says nothing about not-found behavior, cross-customer access rules, or what the response contains beyond the expand hint in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose, with no padding. The trailing REST endpoint reference is mildly redundant for an agent but small enough not to hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with a fully described 3-parameter schema and readOnlyHint annotations, this is essentially sufficient. The only real gap is error/absence handling (what happens when the entity does not exist or belongs to another customer), which the absence of an output schema makes slightly more relevant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (expand, entity_id, customer_id) are already documented in the schema, which sets the baseline at 3. The description reinforces the customer/entity ownership relationship but adds no syntax, format, or selection guidance beyond the schema's own expand examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (a single entity belonging to a customer), with a concrete example (a seat) that clarifies what an entity is. The word "single" implicitly separates it from autumn_list_entities, but no sibling is named explicitly, so a tiny bit of inference is required.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'single entity' suggests it is the direct-lookup counterpart to autumn_list_entities, and the required customer_id/entity_id pair implies you must already know both IDs. There is no explicit when-to-use, when-not, or pointer to the list/attach alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_get_featureGet a featureARead-onlyInspect
Fetch a single feature by id. Autumn API: POST /v1/features.get.
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | Yes | The ID of the feature. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the underlying endpoint (POST /v1/features.get), which is mildly useful since a read implemented as a POST could otherwise confuse an agent, but it says nothing about not-found behavior or error semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope. The endpoint sentence is low-value for an agent but short enough not to be a real cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the essentials are present: what is returned (a feature) and how it is identified. Minor gaps remain around not-found handling and what fields a feature object contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter and schema coverage is 100%, so the schema already documents feature_id. The description's "by id" merely restates the parameter without adding format, source, or validation detail — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Fetch a single feature by id" gives a specific verb (fetch), resource (feature), and cardinality (single), which implicitly contrasts with the sibling autumn_list_features. It does not name that sibling explicitly, but the get/list split is still legible to an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "by id" signals that a feature ID must already be known, which suggests listing first, but the description never states when to prefer this over autumn_list_features or what to do if the ID is unknown. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_get_or_create_customerGet or create a customerADestructiveInspect
MUTATES Autumn billing data — fetches a customer by id, creating them if they do not exist. Autumn API: POST /v1/customers.get_or_create.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Customer's name. | |
| No | Customer's email address. | ||
| expand | No | Related data to expand, e.g. invoices, entities, subscriptions.plan, purchases.plan, balances.feature. | |
| currency | No | Currency to bill this customer in (e.g. usd, eur). | |
| metadata | No | Arbitrary key/value metadata for the customer. | |
| stripe_id | No | Existing Stripe customer id, if any. | |
| customer_id | Yes | Your unique identifier for the customer (null to create an anonymous customer). | |
| fingerprint | No | Unique identifier to detect duplicate customers / prevent free-trial abuse. | |
| create_in_stripe | No | Whether to create the customer in Stripe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly flags 'MUTATES Autumn billing data', which is consistent with destructiveHint=true and adds useful emphasis for a get-named tool. However, it omits key upsert behavior: whether the supplied name/email/currency are applied when the customer already exists, whether the call is idempotent, and which fields are ignored on the create branch. With only one annotation present, these gaps are material.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the mutation warning front-loaded before the mechanics and the API endpoint appended for traceability. Efficient, with no filler, though the endpoint path is arguably reference noise rather than selection aid.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adds context beyond the schema's parameter docs: it names the API operation (POST /v1/customers.get_or_create) and exposes the create-on-miss behavior, both of which the schema alone does not convey. It doesn't explain what the call returns (existing vs. newly created customer), but with no output schema the absence is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters including the null-able customer_id, expand, and create_in_stripe are already documented in the schema. The description adds only 'by id', which restates the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair and resource ('fetches a customer by id, creating them if they do not exist'), which is precise enough to distinguish an upsert from a pure read. It does not explicitly name autumn_get_customer or autumn_update_customer as the alternatives, so sibling differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'creating them if they do not exist' clause implies the use case (when existence is unknown), but there is no explicit guidance such as 'use autumn_get_customer when you know the customer exists' and no note on what to prefer over autumn_update_customer. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_get_planGet a planBRead-onlyInspect
Fetch a single plan by id (optionally a specific version). Autumn API: POST /v1/plans.get.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The ID of the plan to retrieve. | |
| version | No | The plan version to get. Defaults to the latest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, and the description adds only the raw endpoint path (POST /v1/plans.get) – a transport detail with little decision value. It says nothing about behavior on a missing plan id, error shape, or that the POST is a semantic read despite the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the purpose. The trailing API endpoint note is low-value filler for an agent but does not bloat or bury the main statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial two-parameter read with full schema coverage and a readOnly annotation, this is nearly sufficient, but with no output schema the description never hints at what a plan object contains or what happens when the id is unknown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including the 'defaults to the latest' semantics for version, so the description's 'optionally a specific version' merely restates the schema. Baseline 3 applies since the schema does all the parameter work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a single plan by id') and the parenthetical version qualifier makes clear it is a point lookup rather than a listing. This implicitly separates it from autumn_list_plans, though that sibling is never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'single plan by id' hints at when this is preferred over a list call, but there is no explicit when-to-use, no prerequisites (e.g., plan must exist), and no named alternative for browsing plans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_list_customersList customersARead-onlyInspect
List/filter customers with cursor pagination. Autumn API: POST /v1/customers.list. Returns { list, next_cursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-5000. Default 50. | |
| plans | No | Filter by plan: array of { id, versions? } objects. | |
| search | No | Search customers by id, name, or email. | |
| processors | No | Filter by processor type: stripe, revenuecat, vercel. | |
| start_cursor | No | Pagination cursor from a prior response's `next_cursor` (omit / empty for first page). | |
| subscription_status | No | Filter by status: "active" or "scheduled". Defaults to both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, and the description adds real value beyond them: it discloses the transport endpoint and, crucially, the return shape { list, next_cursor } despite there being no output schema. What's missing is pagination termination behavior and whether limit caps server-side results beyond the schema's 5000 ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose, endpoint, return shape. Every element earns its place and the purpose is front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six optional filter parameters, the description adequately frames the tool: filters are enumerable from the schema, the return envelope is disclosed, and cursor semantics are mentioned. Without an output schema it carries the return-shape burden well, though it could say more about total counts or empty-list behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, search, plans, processors, start_cursor, and subscription_status are all documented in the schema itself. The description only adds the generic framing 'cursor pagination' and doesn't clarify ambiguous cases like the plans object shape or the default-both subscription_status behavior. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List/filter customers') plus the backing endpoint (POST /v1/customers.list), which makes the operation unambiguous and distinguishes it from get_customer. It stops short of naming siblings explicitly, so it lands just below the top of the scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'filter' signals the tool's role, and the pagination note implies repeated-call usage, but nothing states when to prefer this over autumn_get_customer (single lookup) or autumn_list_entities. Usage must be inferred from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_list_entitiesList entitiesARead-onlyInspect
List a customer's entities with cursor pagination and optional filters. Autumn API: POST /v1/entities.list. Returns { list, next_cursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-5000. Default 50. | |
| plans | No | Filter by plan: array of { id, versions? } objects. | |
| search | No | Search entities by id or name. | |
| processors | No | Filter by parent customer processor: stripe, revenuecat, vercel. | |
| customer_id | Yes | Restrict the response to entities owned by this customer id. | |
| start_cursor | No | Pagination cursor from a prior response's `next_cursor` (omit / empty for first page). | |
| subscription_status | No | Filter by status: "active" or "scheduled". Defaults to both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that: the concrete endpoint (POST /v1/entities.list) and the return shape { list, next_cursor }, which clarifies pagination mechanics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then endpoint and return shape. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description partially compensates by naming the return shape. Params are fully covered by schema, so an agent has enough to call it correctly; only run-time behaviors like rate limits are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter including filters, limit bounds, and cursor semantics is already documented in the schema. The description adds no per-parameter meaning beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a customer's entities') plus scope qualifiers (cursor pagination, optional filters). It clearly contrasts with get_entity/create_entity by phrasing, but does not explicitly name a sibling to differentiate from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'with optional filters' and the pagination note, but there is no explicit statement of when to use this versus autumn_get_entity or autumn_list_customers, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_list_featuresList featuresARead-onlyInspect
List all features in the current environment. Autumn API: POST /v1/features.list. Returns { list }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower; the description still adds useful context by naming the underlying endpoint and the return shape ({ list }), which matters because there is no output schema. It stops short of saying anything about result size, ordering, or environment scoping semantics beyond 'current environment'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, nothing redundant: the purpose and scope come first, followed by the endpoint and return shape. Every clause carries information an agent can use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool, the definition covers purpose, scope, endpoint, and return container. The absence of any note on result volume or pagination is the only remaining gap, and it is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the 100% schema coverage baseline applies. No parameter guidance is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (features) with an explicit scope: 'in the current environment'. That scope detail distinguishes it from a global listing and pairs naturally with the singular autumn_get_feature sibling, though the description never names that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'List all features' — an agent can infer this is the enumeration entry point. There is no explicit statement of when to prefer this over autumn_get_feature or autumn_list_plans, and no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_list_invoicesList invoicesARead-onlyInspect
List invoices with cursor pagination and optional filters. Autumn API: POST /v1/invoices.list. Returns { list, next_cursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-5000. Default 50. | |
| status | No | Filter by invoice status: draft, open, paid, void, uncollectible. | |
| entity_id | No | Filter to a single entity by id (must be paired with customer_id). | |
| customer_id | No | Filter to a single customer by id. | |
| start_cursor | No | Pagination cursor from a prior response's `next_cursor` (omit / empty for first page). | |
| processor_types | No | Filter by processor: stripe, revenuecat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe read-only profile, lowering the description's burden. The description adds useful context by disclosing cursor pagination behavior, the underlying POST endpoint, and the return shape '{ list, next_cursor }', but it does not cover auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with the core action front-loaded. Each sentence contributes useful information: purpose, endpoint, and return shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by stating the return shape '{ list, next_cursor }'. With 100% schema coverage for parameters and a readOnlyHint annotation, the description is nearly complete for an agent to call the tool correctly, though it could mention auth or rate-limit context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description mentions cursor pagination and optional filters but does not add per-parameter meaning beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List invoices', and adds pagination and optional filtering scope. It is clear which resource is being listed, though it does not explicitly differentiate from sibling list tools such as autumn_list_customers or autumn_list_plans.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'with cursor pagination and optional filters', which tells an agent this is a paginated listing operation. However, it does not explicitly state when to use this tool versus alternatives or mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_list_plansList plansARead-onlyInspect
List all plans (products) in the current environment. Autumn API: POST /v1/plans.list. Returns { list }.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | No | Entity id for entity-scoped plans. | |
| customer_id | No | Include eligibility info (trial availability, attach scenario) for this customer. | |
| all_versions | No | If true, include all plan versions. | |
| include_archived | No | If true, include archived plans. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, but the description adds value beyond annotations: it names the backing endpoint (POST /v1/plans.list) and, with no output schema available, discloses the return envelope '{ list }'. It stops short of stating default filtering (archived/versions excluded?) or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded clauses with no filler; the purpose statement comes first. The endpoint clause is implementation detail of marginal selection value, but it costs very few tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool the definition is nearly sufficient, and the return envelope compensates for the missing output schema. However, it omits default behavior when no parameters are supplied (are archived plans and old versions included by default?) and says nothing about pagination, which an agent needs to reason about for a 'list all' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four optional parameters (entity_id, customer_id, all_versions, include_archived) are already documented in the schema. The description adds no additional semantics for them, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all plans (products) in the current environment'), and the parenthetical 'products' resolves the domain ambiguity of 'plans'. It contrasts implicitly with the singular sibling autumn_get_plan, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb 'list' and the phrase 'all plans'. There is no statement of when to prefer this over autumn_get_plan, autumn_list_features, or when the entity_id/customer_id scoping variants are appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_open_customer_portalOpen customer billing portalADestructiveInspect
MUTATES Autumn billing data — creates a Stripe billing-portal session for a customer to manage their subscription. Autumn API: POST /v1/billing.open_customer_portal. Returns { customer_id, url }.
| Name | Required | Description | Default |
|---|---|---|---|
| return_url | No | URL to redirect to when the back button is clicked in the portal. | |
| customer_id | Yes | The ID of the customer to open the billing portal for. | |
| configuration_id | No | Stripe billing-portal configuration id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description adds that the mutation is the creation of an external Stripe session and discloses the return shape { customer_id, url }. It does not explain what 'destructive' means here (no Autumn data is overwritten) or whether sessions expire, but it adds real context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses: mutation warning front-loaded, then the concrete action, then the API route and return shape. No sentence is filler and the most important safety signal comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema, the description covers purpose, endpoint, and return value, which is enough to invoke it correctly. It stops short of stating preconditions (customer existence, Stripe configuration) or session lifetime.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (customer_id, return_url, configuration_id) are already documented in the schema. The description adds no parameter-level meaning such as default behavior or whether configuration_id falls back to a default config, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'creates a Stripe billing-portal session for a customer,' plus the underlying endpoint POST /v1/billing.open_customer_portal. The action is distinct enough that no sibling (attach_plan, get_customer, etc.) could be confused with it, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but never when to use it in place of alternatives, nor any preconditions (e.g. customer must exist, Stripe must be configured). The phrase 'for a customer to manage their subscription' hints at intent but gives no selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_preview_attachPreview attaching a planARead-onlyInspect
Preview the cost/effect of attaching a plan to a customer WITHOUT charging or changing anything. Read-only. Autumn API: POST /v1/billing.preview_attach.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The ID of the plan. | |
| version | No | The version of the plan to attach. | |
| customize | No | Optional plan overrides (price, items, licenses, free trial). | |
| entity_id | No | The ID of the entity to attach the plan to. | |
| customer_id | Yes | The ID of the customer to attach the plan to. | |
| feature_quantities | No | Prepaid feature quantities: array of { feature_id, quantity?, adjustable? }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the operation is safe, and the description reinforces this with billing-specific language about not charging or changing anything. It does not add details about authentication, rate limits, or exactly what preview data is returned, but it adequately covers the key behavioral risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with the essential scoping and safety information front-loaded. The API endpoint detail adds minor context without disrupting conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex preview tool with nested customization parameters and no output schema, the description explains the main purpose and side-effect behavior. It could say more about the shape of the returned cost/effect preview, but the core information needed to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the input schema. The description adds no parameter-specific meaning beyond the schema, which is acceptable at the baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: previewing the cost/effect of attaching a plan to a customer. It also clarifies the scope by saying this happens WITHOUT charging or changing anything, which distinguishes it from the actual attach sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for dry-run previewing before an actual attach, especially with the phrase 'WITHOUT charging or changing anything.' However, it does not explicitly name autumn_attach_plan as the alternative or state when not to use this preview tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_requestRaw read requestARead-onlyInspect
Power-user escape hatch: POST to any Autumn read/preview endpoint not wrapped by a dedicated tool. READ-ONLY — the path is validated to only allow .get / .list / .check / .preview_* actions; write actions are rejected. Autumn API: POST {path}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body object to POST (the endpoint's params). | |
| path | Yes | Full API path, e.g. "/v1/customers.get". Only read/preview suffixes are allowed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, but the description adds real value beyond that: it discloses that the path is validated server-side to allow only .get/.list/.check/.preview_* actions and that write actions are rejected. That enforcement mechanism is genuine behavioral context an agent could not infer from the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the escape-hatch framing followed by the safety constraint and the API shape. Every sentence carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and since this is a generic passthrough the return shape is inherently arbitrary, so the description reasonably focuses on what's controllable: the path constraint and read-only guarantee. It could note that responses mirror the underlying Autumn endpoint, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both the path (with example format and suffix constraint) and the body object are already documented in the schema. The description restates the POST {path} pattern and the allowed suffixes, adding little beyond the structured fields, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: POST to any Autumn read/preview endpoint, framed as a power-user escape hatch. It distinguishes itself from siblings by scoping to endpoints 'not wrapped by a dedicated tool', which is exactly the differentiator against the 17 dedicated tools listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly conveys the usage condition (only when no dedicated tool covers the endpoint) and enforces the read-only boundary. However, it never explicitly names an alternative or states a 'prefer the dedicated tool' directive in when/when-not form, so the routing guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_track_usageTrack usageADestructiveInspect
MUTATES Autumn billing data — records a usage event (deducts/credits a feature balance). Provide EITHER feature_id OR event_name. Autumn API: POST /v1/balances.track.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Amount of usage to record. Defaults to 1. Negative values credit the balance. | |
| entity_id | No | Entity id for entity-scoped balances. | |
| timestamp | No | Unix timestamp (ms) for the event. Defaults to now. | |
| event_name | No | Event name to track usage for. Provide this OR feature_id. | |
| feature_id | No | The feature to track usage for. Provide this OR event_name. | |
| properties | No | Additional properties to attach to the usage event. | |
| customer_id | Yes | The ID of the customer. | |
| idempotencyKey | No | Optional key to dedupe retried events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give destructiveHint=true; the description adds real value on top by declaring this MUTATES billing data, that it can deduct or credit a balance, and the exact API route being hit. It doesn't cover error behavior or what happens if the customer has no balance, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the mutation warning, then the call constraint, then the endpoint. Nothing is wasted and the highest-risk information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive billing mutation with eight params and no output schema, the description covers the critical facts: that it mutates, that it adjusts balances, and the feature_id/event_name branch. It could say more about what the response returns (resulting balance, dedupe behavior) since no output schema exists, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all eight parameters are already documented, including the feature_id/event_name exclusivity. The description restates that alternation but adds no new syntax, defaults, or interaction detail beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (records a usage event), the business effect (deducts/credits a feature balance), and the underlying endpoint (POST /v1/balances.track). No sibling does this, so the agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only routing guidance is the parameter constraint 'Provide EITHER feature_id OR event_name', which is a call-shape rule rather than when-to-use guidance. Nothing says when to pick this over autumn_check or when not to call it (e.g., test vs production customers), so usage is only implied by the name and effect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autumn_update_customerUpdate a customerADestructiveInspect
MUTATES Autumn billing data — partially updates a customer. Only provided fields change. Autumn API: POST /v1/customers.update.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Customer's name. | |
| No | Customer's email address. | ||
| currency | No | Currency to bill this customer in (e.g. usd, eur). | |
| metadata | No | Arbitrary key/value metadata for the customer. | |
| stripe_id | No | Stripe customer id. | |
| customer_id | Yes | ID of the customer to update. | |
| fingerprint | No | Duplicate-detection fingerprint. | |
| new_customer_id | No | New id for the customer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, and the description adds useful partial-update semantics: only supplied fields are changed. However, it does not explain consequences of changing new_customer_id, permission requirements, irreversibility, or error behavior, so it only moderately extends the annotation-provided safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with zero waste. It front-loads the mutation warning and then states the partial-update behavior and endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool, the description covers the essential operation and partial-update behavior. It still omits important implications such as ID changes via new_customer_id, side effects, and failure modes, though the full schema and destructive annotation reduce the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all eight parameters are already documented in the schema. The description adds the cross-cutting rule that only provided fields change, but it does not add per-parameter meaning such as the effect of new_customer_id or metadata merging behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('partially updates a customer') and clarifies that this is a mutation of Autumn billing data. It also gives the underlying API endpoint, making the tool's operation unambiguous relative to get/list/create siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the update context and notes that only provided fields change, which helps an agent decide to use it for partial updates. It does not explicitly compare against alternatives such as autumn_get_or_create_customer or autumn_create_entity, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
34 tool updates
- Removed
attach_plan - Added
autumn_attach_plan - Added
autumn_check - Added
autumn_create_entity - Added
autumn_get_customer - Added
autumn_get_entity - Added
autumn_get_feature - Added
autumn_get_or_create_customer - Added
autumn_get_plan - Added
autumn_list_customers - Added
autumn_list_entities - Added
autumn_list_features - Added
autumn_list_invoices - Added
autumn_list_plans - Added
autumn_open_customer_portal - Added
autumn_preview_attach - Added
autumn_track_usage - Added
autumn_update_customer - Removed
check - Removed
create_entity - Removed
get_customer - Removed
get_entity - Removed
get_feature - Removed
get_or_create_customer - Removed
get_plan - Removed
list_customers - Removed
list_entities - Removed
list_features - Removed
list_invoices - Removed
list_plans - Removed
open_customer_portal - Removed
preview_attach - Removed
track_usage - Removed
update_customer
Related MCP Connectors
MCP server for Recurly — accounts, subscriptions, invoices, plans; cancel & pause subs.
MCP server for Codat — companies, connections, invoices, bills and financial statements.
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn unofficial MCP server that provides an interface to access the Autumn pricing API for managing customers, entitlements, invoices, and generating billing portal links.9MIT
- AlicenseAqualityBmaintenanceMCP server wrapping the Chargebee REST API to manage customers, subscriptions, invoices, and transactions.10Apache 2.0
- AlicenseBqualityCmaintenanceMCP server for the DataGate billing platform API, providing read-only tools to manage customers, invoices, products, agreements, sites, and payments.13MIT
- FlicenseNot gradedqualityCmaintenanceMCP server providing guarded access to a B2B SaaS billing database (customers, subscriptions, invoices, credit notes) and live ECB exchange rates, with read-only tools and one capped, idempotent write for issuing credit notes.-
Glama MCP Gateway
Add one secure layer between your agents and this server.