How to fix: Use a ui:// URI and text/html;profile=mcp-app. For mcp-use v1, use widgetMetadata.metadata.widgetDescription; for v2, use the bound tool's view.description. The current description check reads _meta.ui.widgetDescription or _meta["openai/widgetDescription"] on resource contents or linked tools, not resource.description. Consequently, v2 view.description alone may leave this warning: report the checker compatibility gap instead of adding unsupported v1 fields or claiming the warning is fixed.
All view resources are readable and use ui:// with a supported MCP Apps HTML MIME type
Tool invocation metadata present
3 tool(s) missing openai/toolInvocation metadata
How to fix: For tools that render a UI resource, add openai/toolInvocation with string fields invoking and invoked (present-tense labels shown while the tool runs and after it finishes, e.g. "Searching…" / "Searched").
How to fix: For ChatGPT submission, set one exact HTTPS origin such as "https://app.example.com" on every view via _meta.ui.domain (or openai/widgetDomain). Paths are not valid and all views in one app must share the origin.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Discover and accept Solo extra events, Founders or Startup, prepare its invoice, and recover purchase status and open invoices. A full-access agent acting for the owner may accept the exact offer; wallet policy governs payment. Pay a saved card explicitly with action=pay and method=card. For MPP or x402, prepare with a returned method, then pay separately at paymentUrl using OAuth Bearer [redacted] plus Payment (MPP) or PAYMENT-SIGNATURE (x402), or follow browserFallback. On prepare, optionally supply fundingAccountId for a live USD account for Link/Stripe or company-owned token wallet for direct Tempo in the customer books; otherwise wallet activation can finish while customer payment bookkeeping waits for that account choice. Correct the choice on prepare until the buyer payment commits. Never put payment credentials in tool arguments. Retry the original blocked command with its original idempotency key after activation.
The description explains the capability, when to use it, and what to expect.
Inputs6/100
1 of 12 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
plan
Not provided
Missing description. Explain what this value means and how to supply it.
interval
Not provided
Missing description. Explain what this value means and how to supply it.
offerId
Not provided
Missing description. Explain what this value means and how to supply it.
invoiceId
Not provided
Missing description. Explain what this value means and how to supply it.
fundingAccountId
Not provided
Missing description. Explain what this value means and how to supply it.
invoiceCursor
Not provided
Missing description. Explain what this value means and how to supply it.
offerCid
Not provided
Missing description. Explain what this value means and how to supply it.
capacity
Not provided
Missing description. Explain what this value means and how to supply it.
authorized
Not provided
Missing description. Explain what this value means and how to supply it.
method
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "platform_purchase",
"title": "Purchase a platform plan",
"description": "Discover and accept Solo extra events, Founders or Startup, prepare its invoice, and recover purchase status and open invoices. A full-access agent acting for the owner may accept the exact offer; wallet policy governs payment. Pay a saved card explicitly with action=pay and method=card. For MPP or x402, prepare with a returned method, then pay separately at paymentUrl using OAuth Bearer [redacted] plus Payment (MPP) or PAYMENT-SIGNATURE (x402), or follow browserFallback. On prepare, optionally supply fundingAccountId for a live USD account for Link/Stripe or company-owned token wallet for direct Tempo in the customer books; otherwise wallet activation can finish while customer payment bookkeeping waits for that account choice. Correct the choice on prepare until the buyer payment commits. Never put payment credentials in tool arguments. Retry the original blocked command with its original idempotency key after activation.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"plan": {
"enum": [
"founders",
"team",
"events"
],
"type": "string"
},
"action": {
"enum": [
"offer",
"accept",
"prepare",
"status",
"pay"
],
"type": "string"
},
"method": {
"enum": [
"card",
"mpp",
"x402"
],
"type": "string"
},
"offerId": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"capacity": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"interval": {
"enum": [
"month",
"year"
],
"type": "string"
},
"offerCid": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"invoiceId": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"authorized": {
"type": "boolean"
},
"invoiceCursor": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"fundingAccountId": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Purchase a platform plan",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Find public vendor plans, read exact versions and sources, inspect history, supersession and governing agreements. Connection-wide; no business argument. Read-only: adopt with contracts.adopt, publish a business's own plans with plan_publications.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 21 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
action
Not provided
Missing description. Explain what this value means and how to supply it.
q
Not provided
Missing description. Explain what this value means and how to supply it.
group
Not provided
Missing description. Explain what this value means and how to supply it.
domain
Not provided
Missing description. Explain what this value means and how to supply it.
sender
Not provided
Missing description. Explain what this value means and how to supply it.
descriptor
Not provided
Missing description. Explain what this value means and how to supply it.
shelf
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
slug
Not provided
Missing description. Explain what this value means and how to supply it.
include
Not provided
Missing description. Explain what this value means and how to supply it.
cid
Not provided
Missing description. Explain what this value means and how to supply it.
plan
Not provided
Missing description. Explain what this value means and how to supply it.
effectiveOn
Not provided
Missing description. Explain what this value means and how to supply it.
from
Not provided
Missing description. Explain what this value means and how to supply it.
to
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
doc
Not provided
Missing description. Explain what this value means and how to supply it.
publisher
Not provided
Missing description. Explain what this value means and how to supply it.
status
Not provided
Missing description. Explain what this value means and how to supply it.
cids
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Publish this business's on-sale plans and patterns to the public vendor catalog, like commits: preview the exact public bundle and CID, publish it, list published versions, and withdraw a version from new adoptions (adopters keep it). A version is never edited; publish a new one with supersedes and summary to change or reinstate a plan. The business owner publishes, in person or through an agent connected interactively with public.manage. Optionally prove a domain with domain and method on publish.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
list this business's published versions; preview the exact public bundle and CID; publish a previewed bundle; withdraw a version from new adoptions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
templateId
preview/publish: the active on-sale template to publish.
Explain the meaning of this value, not just its name.
planKey
preview/publish: the plan's stable key in the catalog. Default plan.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
effectiveFrom
preview/publish: YYYY-MM-DD the prices apply from. Default today (UTC).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
readOn
preview/publish: YYYY-MM-DD the pricing page was read. Default today (UTC); publish with the value preview returned.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pricingUrl
preview/publish: the public https:// pricing page these prices come from.
Clear enough to supply this argument.
shelf
preview/publish: vendors (a plan customers adopt) or patterns (a business model pattern). Default vendors.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
supersedes
preview/publish: the CID of the version this one replaces. Requires summary. A withdrawn version can be superseded.
Clear enough to supply this argument.
summary
preview/publish: what changed from the superseded version.
Clear enough to supply this argument.
expectedCid
publish: the cid preview returned; publishing fails if the bundle changed since.
Clear enough to supply this argument.
domain
publish: a domain to prove control of, re-checked on every publication.
Clear enough to supply this argument.
method
publish: how the domain proves it. Default well-known.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
vendor
publish: the catalog vendor the domain claim selects. Default from the domain.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cid
withdraw: the version CID to withdraw.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
reason
withdraw: why, shown on the version. Default Withdrawn by publisher.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
after
list: the cursor of the previous page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
list: 1-100, default 20.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"title": "Publish plans to the vendor catalog",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "plan_publications",
"title": "Publish plans to the vendor catalog",
"description": "Publish this business's on-sale plans and patterns to the public vendor catalog, like commits: preview the exact public bundle and CID, publish it, list published versions, and withdraw a version from new adoptions (adopters keep it). A version is never edited; publish a new one with supersedes and summary to change or reinstate a plan. The business owner publishes, in person or through an agent connected interactively with public.manage. Optionally prove a domain with domain and method on publish.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"cid": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "withdraw: the version CID to withdraw."
},
"after": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "list: the cursor of the previous page."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "list: 1-100, default 20."
},
"shelf": {
"enum": [
"vendors",
"patterns"
],
"type": "string",
"description": "preview/publish: vendors (a plan customers adopt) or patterns (a business model pattern). Default vendors."
},
"action": {
"enum": [
"list",
"preview",
"publish",
"withdraw"
],
"type": "string",
"description": "list this business's published versions; preview the exact public bundle and CID; publish a previewed bundle; withdraw a version from new adoptions."
},
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "publish: a domain to prove control of, re-checked on every publication."
},
"method": {
"enum": [
"dns",
"well-known"
],
"type": "string",
"description": "publish: how the domain proves it. Default well-known."
},
"readOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "preview/publish: YYYY-MM-DD the pricing page was read. Default today (UTC); publish with the value preview returned."
},
"reason": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "withdraw: why, shown on the version. Default Withdrawn by publisher."
},
"vendor": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "publish: the catalog vendor the domain claim selects. Default from the domain."
},
"planKey": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "preview/publish: the plan's stable key in the catalog. Default plan."
},
"summary": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "preview/publish: what changed from the superseded version."
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"pricingUrl": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "preview/publish: the public https:// pricing page these prices come from."
},
"supersedes": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "preview/publish: the CID of the version this one replaces. Requires summary. A withdrawn version can be superseded."
},
"templateId": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "preview/publish: the active on-sale template to publish."
},
"expectedCid": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "publish: the cid preview returned; publishing fails if the bundle changed since."
},
"effectiveFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "preview/publish: YYYY-MM-DD the prices apply from. Default today (UTC)."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Publish plans to the vendor catalog",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Upload, replace, list and delete this business's own public logo images (PNG, JPEG or WebP, up to 262144 bytes and 1024 pixels per side). An upload returns a link: set it as logoUrl with parties.create or parties.update. Uploading this image makes it public until the business deletes it. Anyone with its link can view it. Exact bytes, including EXIF metadata such as GPS location, are retained; downloaded copies may remain after deletion, and cached copies can be served for about five minutes after it. Upload and replace need publish: true. Replace publishes the new image and deletes the one named by cid; after replacing, set the new link on each party that showed the old one. Uploading needs party-management authority; replacing and deleting need parties.update.
The description explains the capability, when to use it, and what to expect.
Inputs79/100
5 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
content_base64
The image's exact bytes, base64, for upload and replace.
Clear enough to supply this argument.
publish
true acknowledges that the image becomes public; upload and replace.
Clear enough to supply this argument.
cid
The image to delete or replace, from an upload or list.
Clear enough to supply this argument.
after
list: continue after this CID (next).
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Upload and manage logo images",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "logos",
"title": "Upload and manage logo images",
"description": "Upload, replace, list and delete this business's own public logo images (PNG, JPEG or WebP, up to 262144 bytes and 1024 pixels per side). An upload returns a link: set it as logoUrl with parties.create or parties.update. Uploading this image makes it public until the business deletes it. Anyone with its link can view it. Exact bytes, including EXIF metadata such as GPS location, are retained; downloaded copies may remain after deletion, and cached copies can be served for about five minutes after it. Upload and replace need publish: true. Replace publishes the new image and deletes the one named by cid; after replacing, set the new link on each party that showed the old one. Uploading needs party-management authority; replacing and deleting need parties.update.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"cid": {
"type": "string",
"description": "The image to delete or replace, from an upload or list."
},
"after": {
"type": "string",
"description": "list: continue after this CID (next)."
},
"action": {
"enum": [
"list",
"upload",
"replace",
"delete"
],
"type": "string"
},
"publish": {
"type": "boolean",
"description": "true acknowledges that the image becomes public; upload and replace."
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"content_base64": {
"type": "string",
"description": "The image's exact bytes, base64, for upload and replace."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Upload and manage logo images",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
List businesses you can access and the separate permissions approved for this application. Membership discovery includes new memberships only when you consented to it.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
audience
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Discover public business commands. List first, then describe a name to obtain its input/result schemas, examples, sourceDocumentKinds (what source_document_id may name; empty means none), credential (interactive: refused to a headless client credential) and principalFields (inputs that must name a principal this platform knows). Execute it with commands. Entries reflect your current approved permissions. Use action permissions for the exact resource constraints.
The description explains the capability, when to use it, and what to expect.
Inputs25/100
1 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
name
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "catalog",
"title": "Discover commands",
"description": "Discover public business commands. List first, then describe a name to obtain its input/result schemas, examples, sourceDocumentKinds (what source_document_id may name; empty means none), credential (interactive: refused to a headless client credential) and principalFields (inputs that must name a principal this platform knows). Execute it with commands. Entries reflect your current approved permissions. Use action permissions for the exact resource constraints.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"name": {
"type": "string"
},
"action": {
"enum": [
"list",
"describe",
"permissions"
],
"type": "string"
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Discover commands",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Execute one public business command discovered through catalog. Supply its exact input, a UTC (Z) ISO effective_at timestamp and a stable idempotency_key. Retrying a key returns the original receipt; reusing it for a different command is refused. A domain no-op is not an error: it returns {code: "no_change", message, details} in place of a receipt. Name the business for this operation; the connection and token must both approve it.
The description explains the capability, when to use it, and what to expect.
Inputs29/100
2 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
name
Not provided
Missing description. Explain what this value means and how to supply it.
idempotency_key
Not provided
Missing description. Explain what this value means and how to supply it.
effective_at
Not provided
Missing description. Explain what this value means and how to supply it.
source_document_id
A registered document that caused this command. Only for a command whose sourceDocumentKinds (catalog describe) names the document's kind; refused otherwise.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Email a coworker an invitation with reader, bookkeeper or administrator access. Only the owner can invite; ownership is never granted. Access starts after sign-in and acceptance. Invitations expire after seven days; retries reuse the same invitation.
The description explains the capability, when to use it, and what to expect.
Inputs58/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
email
The coworker's email address.
Clear enough to supply this argument.
access
reader: read books; bookkeeper: keep books; administrator: administer books and sharing.
Clear enough to supply this argument.
idempotency_key
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Invite a member by email",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "members_invite",
"title": "Invite a member by email",
"description": "Email a coworker an invitation with reader, bookkeeper or administrator access. Only the owner can invite; ownership is never granted. Access starts after sign-in and acceptance. Invitations expire after seven days; retries reuse the same invitation.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"email",
"access",
"idempotency_key"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"minLength": 3,
"description": "The coworker's email address."
},
"access": {
"enum": [
"reader",
"bookkeeper",
"administrator"
],
"type": "string",
"description": "reader: read books; bookkeeper: keep books; administrator: administer books and sharing."
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"idempotency_key": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Invite a member by email",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
List this business's pending member invitations: the address, access and expiry of each. Accepted, revoked and expired invitations are not listed; members appear in the roster instead.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Revoke a pending member invitation so it can no longer be accepted. Only the business owner can revoke. It does not remove a member who already accepted.
The description explains the capability, when to use it, and what to expect.
Inputs55/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Clear enough to supply this argument.
invitation_id
From members_invite or member_invitations.
Clear enough to supply this argument.
idempotency_key
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Revoke a member invitation",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "members_revoke_invitation",
"title": "Revoke a member invitation",
"description": "Revoke a pending member invitation so it can no longer be accepted. Only the business owner can revoke. It does not remove a member who already accepted.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"invitation_id",
"idempotency_key"
],
"properties": {
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"invitation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "From members_invite or member_invitations."
},
"idempotency_key": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Revoke a member invitation",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Run a financial or management report. List first: it names every kind with its parameters, which are required and a runnable example. This schema is the union of every kind's parameters, so run takes kind plus that kind's own; a parameter another kind declares is refused, naming the ones this kind takes. Every date parameter takes a date (YYYY-MM-DD) or a UTC timestamp. Dates are UTC days, and a date includes that whole day, whether it starts or ends the report: for September pass from 2026-09-01 and until 2026-09-30. A timestamp is taken as given: as_of, until and period_end count what comes before it, and through includes it. What an existing date parameter means will not change silently: a change would come as a new parameter or a new version. Amounts are decimal integer strings in minor units. No journal entries or other commands are created. Saved reports: action definitions lists published custom reports (cursor pages); action run_definition takes id and optional version and draws the fixed queries and explanation; action preview takes definition and draws a report that is not published yet, recording nothing (check it first with the report_format tool). When no built-in kind answers the question, write SQL with the report_sql tool.
The description explains the capability, when to use it, and what to expect.
Inputs62/100
73 of 94 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
provider_party_id
Payroll provider party to filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum rows per page, up to 100 (default 100).
Clear enough to supply this argument.
after
Opaque nextCursor from the preceding report page with the same filters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
from_month
First month, YYYY-MM.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
through_month
Last month, YYYY-MM (default: this month).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
person_party_id
Stable person party to filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currency
Ledger currency (default: the functional currency active for the report period).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contract_id
Resolved activity-contract subject ID.
Explain the meaning of this value, not just its name.
from
Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
until
End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
unbilled_after
unbilledNextCursor from the preceding page's unbilled estimates.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
unmatched_after
unmatchedNextCursor from the preceding page's unmatched invoice lines.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
group_by
Attribution dimension to show (default customer).
Clear enough to supply this argument.
attribution_value
Select this exact customer id, holder, team or project in group_by.
Clear enough to supply this argument.
view
running includes estimates and reconciled cost; billed keeps closed usage periods (default running).
Clear enough to supply this argument.
usage_after
The contract row's usageNextCursor; requires contract_id and the same report filters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
unused_days
Days without use that make a paid contract unused (default 60).
Clear enough to supply this argument.
through
End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day; a timestamp includes everything up to and including that moment.
Clear enough to supply this argument.
cursor
Opaque cursor returned by the previous deadlines page.
Explain the meaning of this value, not just its name.
base
Source ISO 4217 currency code.
Explain the meaning of this value, not just its name.
quote
Destination ISO 4217 currency code; defaults to functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date
Requested rate day (YYYY-MM-DD or UTC RFC 3339 instant); defaults to the runtime day. Future days are refused.
Clear enough to supply this argument.
as_of
The date (YYYY-MM-DD) or UTC timestamp (RFC 3339) the report is taken at. A date is a UTC day and includes everything on it; a timestamp includes everything before that moment.
Clear enough to supply this argument.
activity_key
Activity binding key within the contract.
Clear enough to supply this argument.
party_id
Party subject ID.
Clear enough to supply this argument.
ledger_id
Native ledger ID.
Explain the meaning of this value, not just its name.
account_code
Native chart account code.
Clear enough to supply this argument.
party_ids
One or more party ids, comma-separated, e.g. pty_a,pty_b (at most 50; spaces around commas are ignored).
Clear enough to supply this argument.
contract_value_only
true returns only party/side/unit identity and contractValue, using maintained effective-time totals for list reads; cannot be combined with by_contract. valueSource describes maintained, mixed or computed fallback reads.
Clear enough to supply this argument.
by_contract
true splits each row by contract, adding contractId, contractName and annualised (the row holds an open-ended right's one year rather than only a committed term); the rows add up to those without it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
open
true returns only the party's claims still open now (needs party_id; no as_of).
Clear enough to supply this argument.
occurrence_key
Stable occurrence key for exact billing claim identities; omitted previews use an unrecorded preview identity.
Clear enough to supply this argument.
effective_at
Effective date (YYYY-MM-DD) or RFC 3339 instant for activity evaluation and balances.
Clear enough to supply this argument.
facts
Named observed facts: integer amounts as decimal strings, dates and text. Required names and units come from the bound activity.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
package_id
Exact immutable reporting-profile package ID; no jurisdiction fallback.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
presentation › rate_event_id
Not provided
Missing description. Explain what this value means and how to supply it.
window
Instead of from/until: all, YYYY, YYYY-Qn, YYYY-MM, or ytd / qtd / mtd (to the moment the report runs).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
months
How many monthly columns, 2–24 (default 6).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
period_start
Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
period_end
End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
document_id
An invoice or bill document. Priced rights follow its obligation through recognition; right-scoped refunds without document attribution refuse this filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
bill_cursor
The previous vendor bill page's next_cursor; requires include_settled=true, direction=payable and party_id.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
include_settled
A vendor page: with direction=payable and party_id, return up to 50 recent bills including settled bills and their actual payment account; next_cursor and truncated signal another page; pass bill_cursor to continue.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
direction
receivable (default) or payable.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
year
Calendar year (not the business fiscal year); quarter is a calendar quarter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
month
Month; exclusive with quarter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
quarter
Quarter; exclusive with month.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
trend
true adds a 12-month series per supported metric ending at the month (month granularity only).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
period
YYYY-MM.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cash_minor_units
What-if: cash in minor units (integer string) instead of the books'.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
monthly_revenue_minor_units
What-if: monthly revenue in minor units (integer string).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
monthly_expenses_minor_units
What-if: monthly expenses in minor units (integer string).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
monthly_growth_rate
What-if: month-over-month revenue growth as a decimal, e.g. 0.12 for 12%.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
exclude_startup_credits
true adds back promotional/startup credits applied this month (5950).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › company
Not provided
Missing description. Explain what this value means and how to supply it.
model › sells
What the company sells, to whom, and how it is delivered.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › key
The plan's id in this proposal; customers name it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › name
Not provided
Missing description. Explain what this value means and how to supply it.
model › plans › items › price
Minor units as an integer string: 4900 is $49.00.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › currency
Supported ISO currency; defaults to the report currency.
Clear enough to supply this argument.
model › plans › items › pricing
Variable or tiered price terms; omit price when unknown.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › cadence
When it bills: usage is priced per unit.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › includes
Not provided
Missing description. Explain what this value means and how to supply it.
model › plans › items › overage
Not provided
Missing description. Explain what this value means and how to supply it.
model › plans › items › template
The template this plan will become.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › plans › items › source
Not provided
Missing description. Explain what this value means and how to supply it.
model › customers › items › name
Not provided
Missing description. Explain what this value means and how to supply it.
model › customers › items › plan
A plan key.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › customers › items › since
YYYY-MM-DD.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › customers › items › price
Only when it differs from the plan's list price.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › customers › items › status
Not provided
Missing description. Explain what this value means and how to supply it.
model › customers › items › source
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › name
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › for
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › amount
Per cadence; omit when unknown, never substitute zero.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › vendors › items › currency
Supported ISO currency; defaults to the report currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › vendors › items › status
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › amount_basis
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › tax
Observed tax terms; no tax or recoverability is inferred.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › vendors › items › cadence
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › paid_by
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › account
Expense account code in the chart.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model › vendors › items › function
Not provided
Missing description. Explain what this value means and how to supply it.
model › vendors › items › drivers
The product actions that drive this vendor's cost (the service-call map).
Clear enough to supply this argument.
model › vendors › items › source
Not provided
Missing description. Explain what this value means and how to supply it.
vesting_party_id
Include this party's declared vesting calendars and next scheduled dates; quantities remain scheduled, not vested. Supply as_of. Instrument totals remain business-wide.
Clear enough to supply this argument.
safe_party_id
Include this party's explicitly declared SAFE terms and post-money ownership estimates at the cap, separately from issued equity. Partial settlement or conversion leaves the estimate unknown.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
params
run_definition and preview: values for the report's declared parameters, by name (a month as YYYY-MM, a date as YYYY-MM-DD, a range as name_from and name_to). Out of bounds falls back to the default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
Not provided
Missing description. Explain what this value means and how to supply it.
version
Not provided
Missing description. Explain what this value means and how to supply it.
fresh
run_definition only. True runs the saved report again instead of reusing an answer computed within the last hour at the same state of the books.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "reports",
"title": "Run reports",
"description": "Run a financial or management report. List first: it names every kind with its parameters, which are required and a runnable example. This schema is the union of every kind's parameters, so run takes kind plus that kind's own; a parameter another kind declares is refused, naming the ones this kind takes. Every date parameter takes a date (YYYY-MM-DD) or a UTC timestamp. Dates are UTC days, and a date includes that whole day, whether it starts or ends the report: for September pass from 2026-09-01 and until 2026-09-30. A timestamp is taken as given: as_of, until and period_end count what comes before it, and through includes it. What an existing date parameter means will not change silently: a change would come as a new parameter or a new version. Amounts are decimal integer strings in minor units. No journal entries or other commands are created. Saved reports: action definitions lists published custom reports (cursor pages); action run_definition takes id and optional version and draws the fixed queries and explanation; action preview takes definition and draws a report that is not published yet, recording nothing (check it first with the report_format tool). When no built-in kind answers the question, write SQL with the report_sql tool.",
"inputSchema": {
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business"
],
"properties": {
"id": {
"type": "string",
"pattern": "^rpt_[0-9A-HJKMNP-TV-Z]{26}$"
},
"base": {
"type": "string",
"minLength": 1,
"description": "Source ISO 4217 currency code."
},
"date": {
"type": "string",
"minLength": 1,
"description": "Requested rate day (YYYY-MM-DD or UTC RFC 3339 instant); defaults to the runtime day. Future days are refused."
},
"from": {
"type": "string",
"minLength": 1,
"description": "Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day."
},
"kind": {
"enum": [
"payroll_provider",
"people_costs",
"concessions",
"usage_estimates",
"usage_cost",
"vendor_utilization",
"contract_deadlines",
"fx_rate",
"activity_balances",
"party_contract_values",
"activity_claims",
"contract_books",
"activity_plan",
"pipeline",
"activity_capacity",
"activity_effects",
"owner_balance",
"balances",
"mapped_trial_balance",
"balance_sheet",
"capital_accounts",
"income_statement",
"income_statement_periods",
"revenue_summary",
"recognition",
"amortization",
"aging",
"saas_metrics",
"default_alive",
"unit_economics",
"platform_fees",
"model_preview",
"cap_table"
],
"type": "string"
},
"open": {
"type": "boolean",
"description": "true returns only the party's claims still open now (needs party_id; no as_of)."
},
"view": {
"enum": [
"running",
"billed"
],
"type": "string",
"description": "running includes estimates and reconciled cost; billed keeps closed usage periods (default running)."
},
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Calendar year (not the business fiscal year); quarter is a calendar quarter."
},
"after": {
"type": "string",
"minLength": 1,
"description": "Opaque nextCursor from the preceding report page with the same filters."
},
"as_of": {
"type": "string",
"minLength": 1,
"description": "The date (YYYY-MM-DD) or UTC timestamp (RFC 3339) the report is taken at. A date is a UTC day and includes everything on it; a timestamp includes everything before that moment."
},
"facts": {
"type": "object",
"properties": {},
"description": "Named observed facts: integer amounts as decimal strings, dates and text. Required names and units come from the bound activity.",
"maxProperties": 100,
"additionalProperties": {
"type": "string"
}
},
"fresh": {
"type": "boolean",
"description": "run_definition only. True runs the saved report again instead of reusing an answer computed within the last hour at the same state of the books."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Maximum rows per page, up to 100 (default 100)."
},
"model": {
"type": "object",
"required": [
"plans"
],
"properties": {
"plans": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"name",
"cadence"
],
"properties": {
"key": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "The plan's id in this proposal; customers name it."
},
"name": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"price": {
"type": "string",
"description": "Minor units as an integer string: 4900 is $49.00."
},
"source": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"cadence": {
"enum": [
"month",
"year",
"one_time",
"usage"
],
"type": "string",
"description": "When it bills: usage is priced per unit."
},
"overage": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"pricing": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Variable or tiered price terms; omit price when unknown."
},
"currency": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Supported ISO currency; defaults to the report currency."
},
"includes": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"template": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "The template this plan will become."
}
},
"additionalProperties": false
},
"maxItems": 50
},
"sells": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "What the company sells, to whom, and how it is delivered."
},
"company": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"vendors": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"for",
"cadence"
],
"properties": {
"for": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"tax": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Observed tax terms; no tax or recoverability is inferred."
},
"name": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"amount": {
"type": "string",
"description": "Per cadence; omit when unknown, never substitute zero."
},
"source": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"status": {
"enum": [
"active",
"ended"
],
"type": "string"
},
"account": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Expense account code in the chart."
},
"cadence": {
"enum": [
"month",
"year",
"one_time",
"usage"
],
"type": "string"
},
"drivers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"maxItems": 20,
"description": "The product actions that drive this vendor's cost (the service-call map)."
},
"paid_by": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"currency": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Supported ISO currency; defaults to the report currency."
},
"function": {
"enum": [
"cost_of_revenue",
"research_and_development",
"sales_and_marketing",
"general_and_administrative",
"other"
],
"type": "string"
},
"amount_basis": {
"enum": [
"tax_inclusive",
"tax_exclusive"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"customers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"plan"
],
"properties": {
"name": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"plan": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "A plan key."
},
"price": {
"type": "string",
"description": "Only when it differs from the plan's list price."
},
"since": {
"type": "string",
"description": "YYYY-MM-DD."
},
"source": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"status": {
"enum": [
"active",
"ended"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 500
}
},
"description": "The proposal: plans (key, name, cadence, optional price, currency, pricing), customers (name, plan key, since, price when not list), vendors (name, for, cadence, optional amount, currency, status, amount_basis, tax, account, function, drivers). Known amounts are minor-unit integer strings; omit unknown amounts.",
"additionalProperties": false
},
"month": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Month; exclusive with quarter."
},
"quote": {
"type": "string",
"minLength": 1,
"description": "Destination ISO 4217 currency code; defaults to functional currency."
},
"trend": {
"type": "boolean",
"description": "true adds a 12-month series per supported metric ending at the month (month granularity only)."
},
"until": {
"type": "string",
"minLength": 1,
"description": "End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment."
},
"action": {
"enum": [
"list",
"run",
"definitions",
"run_definition",
"preview"
],
"type": "string",
"default": "run"
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque cursor returned by the previous deadlines page."
},
"months": {
"type": "integer",
"maximum": 24,
"minimum": 2,
"description": "How many monthly columns, 2–24 (default 6)."
},
"params": {
"type": "object",
"description": "run_definition and preview: values for the report's declared parameters, by name (a month as YYYY-MM, a date as YYYY-MM-DD, a range as name_from and name_to). Out of bounds falls back to the default.",
"propertyNames": {
"type": "string",
"maxLength": 64
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "number"
}
]
}
},
"period": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$",
"minLength": 1,
"description": "YYYY-MM."
},
"window": {
"type": "string",
"minLength": 1,
"description": "Instead of from/until: all, YYYY, YYYY-Qn, YYYY-MM, or ytd / qtd / mtd (to the moment the report runs)."
},
"quarter": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "Quarter; exclusive with month."
},
"through": {
"type": "string",
"minLength": 1,
"description": "End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day; a timestamp includes everything up to and including that moment."
},
"version": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"currency": {
"type": "string",
"minLength": 1,
"description": "Ledger currency (default: the functional currency active for the report period)."
},
"group_by": {
"enum": [
"customer",
"holder",
"team",
"project"
],
"type": "string",
"description": "Attribution dimension to show (default customer)."
},
"party_id": {
"type": "string",
"minLength": 1,
"description": "Party subject ID."
},
"direction": {
"enum": [
"receivable",
"payable"
],
"type": "string",
"description": "receivable (default) or payable."
},
"ledger_id": {
"type": "string",
"minLength": 1,
"description": "Native ledger ID."
},
"party_ids": {
"type": "string",
"minLength": 1,
"description": "One or more party ids, comma-separated, e.g. pty_a,pty_b (at most 50; spaces around commas are ignored)."
},
"definition": {
"type": "object",
"description": "preview only: a custom report definition, as report_definitions.publish takes.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"from_month": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$",
"minLength": 1,
"description": "First month, YYYY-MM."
},
"package_id": {
"type": "string",
"minLength": 1,
"description": "Exact immutable reporting-profile package ID; no jurisdiction fallback."
},
"period_end": {
"type": "string",
"minLength": 1,
"description": "End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment."
},
"bill_cursor": {
"type": "string",
"minLength": 1,
"description": "The previous vendor bill page's next_cursor; requires include_settled=true, direction=payable and party_id."
},
"by_contract": {
"type": "boolean",
"description": "true splits each row by contract, adding contractId, contractName and annualised (the row holds an open-ended right's one year rather than only a committed term); the rows add up to those without it."
},
"contract_id": {
"type": "string",
"minLength": 1,
"description": "Resolved activity-contract subject ID."
},
"document_id": {
"type": "string",
"minLength": 1,
"description": "An invoice or bill document. Priced rights follow its obligation through recognition; right-scoped refunds without document attribution refuse this filter."
},
"unused_days": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Days without use that make a paid contract unused (default 60)."
},
"usage_after": {
"type": "string",
"minLength": 1,
"description": "The contract row's usageNextCursor; requires contract_id and the same report filters."
},
"account_code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Native chart account code."
},
"activity_key": {
"type": "string",
"minLength": 1,
"description": "Activity binding key within the contract."
},
"effective_at": {
"type": "string",
"minLength": 1,
"description": "Effective date (YYYY-MM-DD) or RFC 3339 instant for activity evaluation and balances."
},
"period_start": {
"type": "string",
"minLength": 1,
"description": "Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day."
},
"presentation": {
"type": "object",
"required": [
"rate_event_id"
],
"properties": {
"rate_event_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
},
"description": "Reference to one exact evidenced source-to-national-currency rate event when the selected statutory package requires a presentation currency different from the native ledger.",
"additionalProperties": false
},
"safe_party_id": {
"type": "string",
"minLength": 1,
"description": "Include this party's explicitly declared SAFE terms and post-money ownership estimates at the cap, separately from issued equity. Partial settlement or conversion leaves the estimate unknown."
},
"through_month": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}$",
"minLength": 1,
"description": "Last month, YYYY-MM (default: this month)."
},
"occurrence_key": {
"type": "string",
"minLength": 1,
"description": "Stable occurrence key for exact billing claim identities; omitted previews use an unrecorded preview identity."
},
"unbilled_after": {
"type": "string",
"minLength": 1,
"description": "unbilledNextCursor from the preceding page's unbilled estimates."
},
"include_settled": {
"type": "boolean",
"description": "A vendor page: with direction=payable and party_id, return up to 50 recent bills including settled bills and their actual payment account; next_cursor and truncated signal another page; pass bill_cursor to continue."
},
"person_party_id": {
"type": "string",
"minLength": 1,
"description": "Stable person party to filter."
},
"unmatched_after": {
"type": "string",
"minLength": 1,
"description": "unmatchedNextCursor from the preceding page's unmatched invoice lines."
},
"cash_minor_units": {
"type": "string",
"minLength": 1,
"description": "What-if: cash in minor units (integer string) instead of the books'."
},
"vesting_party_id": {
"type": "string",
"minLength": 1,
"description": "Include this party's declared vesting calendars and next scheduled dates; quantities remain scheduled, not vested. Supply as_of. Instrument totals remain business-wide."
},
"attribution_value": {
"type": "string",
"minLength": 1,
"description": "Select this exact customer id, holder, team or project in group_by."
},
"provider_party_id": {
"type": "string",
"minLength": 1,
"description": "Payroll provider party to filter."
},
"contract_value_only": {
"type": "boolean",
"description": "true returns only party/side/unit identity and contractValue, using maintained effective-time totals for list reads; cannot be combined with by_contract. valueSource describes maintained, mixed or computed fallback reads."
},
"monthly_growth_rate": {
"type": "number",
"maximum": 5,
"description": "What-if: month-over-month revenue growth as a decimal, e.g. 0.12 for 12%.",
"exclusiveMinimum": -1
},
"exclude_startup_credits": {
"type": "boolean",
"description": "true adds back promotional/startup credits applied this month (5950)."
},
"monthly_revenue_minor_units": {
"type": "string",
"minLength": 1,
"description": "What-if: monthly revenue in minor units (integer string)."
},
"monthly_expenses_minor_units": {
"type": "string",
"minLength": 1,
"description": "What-if: monthly expenses in minor units (integer string)."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Run reports",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Answer a question no built-in report covers. Action schema describes what a query can read: the views and tables, their columns, the conventions for money, dates and currencies, and the limits on an answer; read it first. Action query runs one read-only SELECT (or WITH … SELECT) given as sql, with params for its ? placeholders in order, and returns typed columns and rows; columns named *_minor are money in minor units, as integer strings. Prefer a built-in report (the reports tool) where one fits: it applies recognition, rates and mapping that raw journal lines do not. Nothing is recorded.
The description explains the capability, when to use it, and what to expect.
Inputs56/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
sql
query only: one read-only SELECT (or WITH … SELECT) over the report schema's views.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
params
query only: the values for the ? placeholders in sql, in order.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Query the books with SQL",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "report_sql",
"title": "Query the books with SQL",
"description": "Answer a question no built-in report covers. Action schema describes what a query can read: the views and tables, their columns, the conventions for money, dates and currencies, and the limits on an answer; read it first. Action query runs one read-only SELECT (or WITH … SELECT) given as sql, with params for its ? placeholders in order, and returns typed columns and rows; columns named *_minor are money in minor units, as integer strings. Prefer a built-in report (the reports tool) where one fits: it applies recognition, rates and mapping that raw journal lines do not. Nothing is recorded.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"sql": {
"type": "string",
"description": "query only: one read-only SELECT (or WITH … SELECT) over the report schema's views."
},
"action": {
"enum": [
"schema",
"query"
],
"type": "string"
},
"params": {
"type": "array",
"items": {
"type": [
"string",
"number",
"null"
]
},
"description": "query only: the values for the ? placeholders in sql, in order."
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Query the books with SQL",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Work on a custom report without publishing it. Start with action guide, which takes nothing and returns how a report is written: the block types, parameters, money, chart and layout rules, the limits and two worked definitions. Action check takes definition and applies the checks report_definitions.publish applies to it: no version is made, nothing is recorded, and a refusal names the block at fault. Action source takes id and optional version and returns a published report's definition as stored, to change and publish again. Action versions takes id and lists that report's versions, newest first. To see a draft drawn, use the reports tool with action preview.
The description explains the capability, when to use it, and what to expect.
Inputs56/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
id
source and versions: the report's rpt_ id.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
version
source only: a version to read.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Retrieve the portable ledger event history and document manifest with authenticated download URLs and verification metadata. Remains available while suspended or closed. The export is the raw content-addressed DAG-CBOR blocks and is not redacted: unlike the events read, ingestion.* payloads keep the captured delegation (authority) and each upload's tokenHash, so treat an export as sensitive.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export",
"title": "Export ledger",
"description": "Retrieve the portable ledger event history and document manifest with authenticated download URLs and verification metadata. Remains available while suspended or closed. The export is the raw content-addressed DAG-CBOR blocks and is not redacted: unlike the events read, ingestion.* payloads keep the captured delegation (authority) and each upload's tokenHash, so treat an export as sensitive.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business"
],
"properties": {
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export ledger",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Get document intake status, immutable source references and provenance, attachment status, processing revisions and financial execution by id. delivery describes processing; recordingDelivery describes automatic financial delivery, including exhausted failures requiring an operator retry. Pending uploads are independent of the primary source. This read does not return upload URLs or captured permissions; an upload URL appears only in the live response of the command that issued it — call ingestions.reissue_upload for a fresh one. A revision's extraction carries its exact retained text only when include_text is true (default false), which reads it from storage on every call; otherwise the extraction carries textBytes and its derived CID only, so a status poll stays cheap. Requires business read access for frozen identity context and document read access to every registered source and pending attachment kind.
The description explains the capability, when to use it, and what to expect.
Inputs19/100
1 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
include_text
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "ingestions",
"title": "Inspect document intake",
"description": "Get document intake status, immutable source references and provenance, attachment status, processing revisions and financial execution by id. delivery describes processing; recordingDelivery describes automatic financial delivery, including exhausted failures requiring an operator retry. Pending uploads are independent of the primary source. This read does not return upload URLs or captured permissions; an upload URL appears only in the live response of the command that issued it — call ingestions.reissue_upload for a fresh one. A revision's extraction carries its exact retained text only when include_text is true (default false), which reads it from storage on every call; otherwise the extraction carries textBytes and its derived CID only, so a status poll stays cheap. Requires business read access for frozen identity context and document read access to every registered source and pending attachment kind.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action",
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"action": {
"type": "string",
"const": "get"
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"include_text": {
"type": "boolean"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Inspect document intake",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Read immutable document metadata and exact bytes. Every row carries label (the founder word: Invoice, Bill, Payment receipt, Charge, Plan, Contract, …) and title; a statement also carries counterpartyId and, when its first effect is money, its headline amount (integer minor units) and currency. An activity, template or contract version also carries record, the type and id of the record it is a version of. Relations rows carry fromLabel, fromTitle, toLabel and toTitle (null when that document is missing). Get requires id and returns contentBase64; a source_document or image also carries size, its exact registered byte count. List supports kind, external_id, label and ids filters with an exclusive document-ID after cursor; ids takes 1–500 document ids and returns those the book holds, in id order (a repeat counts once). Label takes a record type's founder word (Invoice, Payment receipt, Bill, Bill payment, Refund, Credit note, Cancellation or Activity statement) and refuses any other word, so filter catalog documents by kind. Relations requires id and pages by the exclusive numeric after_id relation cursor.
The description explains the capability, when to use it, and what to expect.
Inputs8/100
1 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
ids
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
external_id
Not provided
Missing description. Explain what this value means and how to supply it.
label
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
after_id
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "documents",
"title": "Read documents",
"description": "Read immutable document metadata and exact bytes. Every row carries label (the founder word: Invoice, Bill, Payment receipt, Charge, Plan, Contract, …) and title; a statement also carries counterpartyId and, when its first effect is money, its headline amount (integer minor units) and currency. An activity, template or contract version also carries record, the type and id of the record it is a version of. Relations rows carry fromLabel, fromTitle, toLabel and toTitle (null when that document is missing). Get requires id and returns contentBase64; a source_document or image also carries size, its exact registered byte count. List supports kind, external_id, label and ids filters with an exclusive document-ID after cursor; ids takes 1–500 document ids and returns those the book holds, in id order (a repeat counts once). Label takes a record type's founder word (Invoice, Payment receipt, Bill, Bill payment, Refund, Credit note, Cancellation or Activity statement) and refuses any other word, so filter catalog documents by kind. Relations requires id and pages by the exclusive numeric after_id relation cursor.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 500,
"minItems": 1
},
"kind": {
"type": "string",
"minLength": 1
},
"after": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"action": {
"enum": [
"list",
"get",
"relations"
],
"type": "string"
},
"after_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"external_id": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read documents",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Read event history and provenance. Every row carries commandName and the documents the event produced, each with its founder label (Invoice, Bill, Contract, …); a document.related row also carries relatedDocuments, the from and to documents its payload relates, each with id, kind, label and title (null when that document is missing). List is oldest first and pages by an exclusive numeric after cursor; with order desc it is newest first and pages by an exclusive numeric before cursor instead. Get requires id. List accepts footprint_contract_id to select only events with postings attributed to that contract by the ledger footprint, including independent payment allocations and reversals, under events.read authority. claim_contract_id instead selects only the events that posted to one of that contract's claims (its bills, invoices and refunds, and the payments, allocations, unallocations and reversals against them), found on the claim index, driven from the contract's claims to each event by id, so a page costs the contract's own postings, never the rest of the book's history; a contract that does not exist selects no events. payment_direction (in or out) selects only the payment.recorded events of payments in that direction that no reversal took back, on an index of payments by direction, so a page costs the page, never the book's history. A subject_id filter also needs its subject_type. kind_prefix narrows to event kinds in one or more namespaces, comma-separated (party.,party_contact.), which selects the business, document, party and financial-account events that carry no subject. Payload amounts are integer strings. An ingestion.* payload omits the delegation captured at intake (authority) and each upload's tokenHash, as the ingestions read does. No verification sweep is triggered.
The description explains the capability, when to use it, and what to expect.
Inputs6/100
1 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
before
Not provided
Missing description. Explain what this value means and how to supply it.
order
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
subject_type
Not provided
Missing description. Explain what this value means and how to supply it.
subject_id
Not provided
Missing description. Explain what this value means and how to supply it.
kind_prefix
Not provided
Missing description. Explain what this value means and how to supply it.
footprint_contract_id
Not provided
Missing description. Explain what this value means and how to supply it.
claim_contract_id
Not provided
Missing description. Explain what this value means and how to supply it.
payment_direction
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "events",
"title": "Read event history",
"description": "Read event history and provenance. Every row carries commandName and the documents the event produced, each with its founder label (Invoice, Bill, Contract, …); a document.related row also carries relatedDocuments, the from and to documents its payload relates, each with id, kind, label and title (null when that document is missing). List is oldest first and pages by an exclusive numeric after cursor; with order desc it is newest first and pages by an exclusive numeric before cursor instead. Get requires id. List accepts footprint_contract_id to select only events with postings attributed to that contract by the ledger footprint, including independent payment allocations and reversals, under events.read authority. claim_contract_id instead selects only the events that posted to one of that contract's claims (its bills, invoices and refunds, and the payments, allocations, unallocations and reversals against them), found on the claim index, driven from the contract's claims to each event by id, so a page costs the contract's own postings, never the rest of the book's history; a contract that does not exist selects no events. payment_direction (in or out) selects only the payment.recorded events of payments in that direction that no reversal took back, on an index of payments by direction, so a page costs the page, never the book's history. A subject_id filter also needs its subject_type. kind_prefix narrows to event kinds in one or more namespaces, comma-separated (party.,party_contact.), which selects the business, document, party and financial-account events that carry no subject. Payload amounts are integer strings. An ingestion.* payload omits the delegation captured at intake (authority) and each upload's tokenHash, as the ingestions read does. No verification sweep is triggered.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"after": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string"
},
"action": {
"enum": [
"list",
"get",
"head"
],
"type": "string"
},
"before": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"subject_id": {
"type": "string",
"minLength": 1
},
"kind_prefix": {
"type": "string",
"minLength": 1
},
"subject_type": {
"type": "string",
"minLength": 1
},
"claim_contract_id": {
"type": "string",
"minLength": 1
},
"payment_direction": {
"enum": [
"in",
"out"
],
"type": "string"
},
"footprint_contract_id": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read event history",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Read derived lifecycle state. Call types first: it lists every subject type with its statuses and the filters its list accepts. List and get require type; get requires id. List supports status, the type's declared filters (email, code, contract_id, activity_key, document_id, record_type, plan, kind, party_id, activity_document_id, template_document_id), ids (1–500 subject ids of the type, those it holds in id order) and an exclusive subject-ID after cursor; a filter the type does not declare is refused. The contract kind filter accepts customer, vendor, investment or other, derived from its saved roles and rights; it returns busy while bounded historical index catch-up is pending, and requires schema 27. On contracts, party_id lists those naming a party in any role, activity_document_id those binding a right's document version and template_document_id those made from a template or plan document version; each of these two also takes a list of 1–500 versions and matches a contract on any of them, with no other filter; otherwise filters combine. Activity and template rows carry versions, every document the record has been, oldest first. An activity_occurrence's state carries recordType (invoice, payment_receipt, bill, bill_payment, refund, credit_note, cancellation or activity_statement), and record_type filters by it. Types carry a founder label and note; activity, template, contract and activity_occurrence rows carry label and title (an occurrence also counterpartyId and, when its headline effect is money, amount, currency and decimals). An invoice, bill or receipt is titled by its occurrence key; a recording that moved nothing (an acceptance, a delivery) by the name of the activity it ran; correlate on state.occurrenceKey, never on title.
The description explains the capability, when to use it, and what to expect.
Inputs11/100
3 of 20 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
type
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
effective_at
Not provided
Missing description. Explain what this value means and how to supply it.
status
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
ids
Not provided
Missing description. Explain what this value means and how to supply it.
email
Not provided
Missing description. Explain what this value means and how to supply it.
code
Not provided
Missing description. Explain what this value means and how to supply it.
contract_id
Not provided
Missing description. Explain what this value means and how to supply it.
activity_key
Not provided
Missing description. Explain what this value means and how to supply it.
document_id
Not provided
Missing description. Explain what this value means and how to supply it.
record_type
Not provided
Missing description. Explain what this value means and how to supply it.
plan
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
party_id
Not provided
Missing description. Explain what this value means and how to supply it.
activity_document_id
One document version, or a list of 1–500 to match a contract on any of them.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
template_document_id
One document version, or a list of 1–500 to match a contract on any of them.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "subjects",
"title": "Read lifecycle state",
"description": "Read derived lifecycle state. Call types first: it lists every subject type with its statuses and the filters its list accepts. List and get require type; get requires id. List supports status, the type's declared filters (email, code, contract_id, activity_key, document_id, record_type, plan, kind, party_id, activity_document_id, template_document_id), ids (1–500 subject ids of the type, those it holds in id order) and an exclusive subject-ID after cursor; a filter the type does not declare is refused. The contract kind filter accepts customer, vendor, investment or other, derived from its saved roles and rights; it returns busy while bounded historical index catch-up is pending, and requires schema 27. On contracts, party_id lists those naming a party in any role, activity_document_id those binding a right's document version and template_document_id those made from a template or plan document version; each of these two also takes a list of 1–500 versions and matches a contract on any of them, with no other filter; otherwise filters combine. Activity and template rows carry versions, every document the record has been, oldest first. An activity_occurrence's state carries recordType (invoice, payment_receipt, bill, bill_payment, refund, credit_note, cancellation or activity_statement), and record_type filters by it. Types carry a founder label and note; activity, template, contract and activity_occurrence rows carry label and title (an occurrence also counterpartyId and, when its headline effect is money, amount, currency and decimals). An invoice, bill or receipt is titled by its occurrence key; a recording that moved nothing (an acceptance, a delivery) by the name of the activity it ran; correlate on state.occurrenceKey, never on title.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 500,
"minItems": 1
},
"code": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"customer",
"vendor",
"investment",
"other"
],
"type": "string"
},
"plan": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"minLength": 1
},
"after": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"action": {
"enum": [
"types",
"list",
"get"
],
"type": "string"
},
"status": {
"type": "string",
"minLength": 1
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"party_id": {
"type": "string",
"minLength": 1
},
"contract_id": {
"type": "string",
"minLength": 1
},
"document_id": {
"type": "string",
"minLength": 1
},
"record_type": {
"type": "string",
"minLength": 1
},
"activity_key": {
"type": "string",
"minLength": 1
},
"effective_at": {
"type": "string",
"minLength": 1
},
"activity_document_id": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 500,
"minItems": 1
}
],
"description": "One document version, or a list of 1–500 to match a contract on any of them."
},
"template_document_id": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 500,
"minItems": 1
}
],
"description": "One document version, or a list of 1–500 to match a contract on any of them."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read lifecycle state",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Read native-unit ledger metadata, balances and posting statements. Get, balances and statement require ledger_id. Balances returns one ledger's per-(account, sub-key) debits, credits and balance in its own unit — the balance read for usage meters, prepaid capacity and share classes as well as currency ledgers; account_code (and, with it, sub_key) narrows it to that account's rows, summed on the account index; an optional as_of limits it to postings up to that point (a YYYY-MM-DD date includes that whole UTC day; a UTC timestamp counts postings before it), sub-keys intact. Statement pages postings by the exclusive numeric after_id cursor and can be narrowed to one account_code and, with it, one sub_key (the statement's own subKey string). List pages by the exclusive string ledger-ID after cursor. Currencies names each currency the business's GAAP ledgers hold real postings in, once, and in ledgers the ledger that holds it now (the open one, else the most recently closed; a functional-currency change or an incorporation succeeds a currency's ledger). A business starts with its selected functional-currency ledger (USD when omitted); other canonical currency ledgers open when a contract first binds them. Amounts remain exact strings and are never summed across units. Transaction requires occurrence_id (an invoice, bill or payment record) and returns every posting of every event that touched its claims (the record itself, the payments, credits and corrections against it, with each correction's reversal), in effective order, each with the record it came from, plus otherClaims: other invoices or bills those events also settled. Footprint takes exactly one of party_id, contract_id or occurrence_id and returns every posting of every recording on that party's contracts, on that contract, or in that record's transaction, in effective order, each attributed to its record (occurrenceId, occurrenceKey), activity, pattern and party the way the activity_balances report attributes it, with its ledger's unit and decimals; plus contracts, the contracts it spans. Null when the party, contract or record does not exist.
The description explains the capability, when to use it, and what to expect.
Inputs6/100
1 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
ledger_id
Not provided
Missing description. Explain what this value means and how to supply it.
occurrence_id
Not provided
Missing description. Explain what this value means and how to supply it.
party_id
Not provided
Missing description. Explain what this value means and how to supply it.
contract_id
Not provided
Missing description. Explain what this value means and how to supply it.
account_code
Not provided
Missing description. Explain what this value means and how to supply it.
event_id
Not provided
Missing description. Explain what this value means and how to supply it.
sub_key
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
after_id
Not provided
Missing description. Explain what this value means and how to supply it.
as_of
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "ledgers",
"title": "Read ledgers and balances",
"description": "Read native-unit ledger metadata, balances and posting statements. Get, balances and statement require ledger_id. Balances returns one ledger's per-(account, sub-key) debits, credits and balance in its own unit — the balance read for usage meters, prepaid capacity and share classes as well as currency ledgers; account_code (and, with it, sub_key) narrows it to that account's rows, summed on the account index; an optional as_of limits it to postings up to that point (a YYYY-MM-DD date includes that whole UTC day; a UTC timestamp counts postings before it), sub-keys intact. Statement pages postings by the exclusive numeric after_id cursor and can be narrowed to one account_code and, with it, one sub_key (the statement's own subKey string). List pages by the exclusive string ledger-ID after cursor. Currencies names each currency the business's GAAP ledgers hold real postings in, once, and in ledgers the ledger that holds it now (the open one, else the most recently closed; a functional-currency change or an incorporation succeeds a currency's ledger). A business starts with its selected functional-currency ledger (USD when omitted); other canonical currency ledgers open when a contract first binds them. Amounts remain exact strings and are never summed across units. Transaction requires occurrence_id (an invoice, bill or payment record) and returns every posting of every event that touched its claims (the record itself, the payments, credits and corrections against it, with each correction's reversal), in effective order, each with the record it came from, plus otherClaims: other invoices or bills those events also settled. Footprint takes exactly one of party_id, contract_id or occurrence_id and returns every posting of every recording on that party's contracts, on that contract, or in that record's transaction, in effective order, each attributed to its record (occurrenceId, occurrenceKey), activity, pattern and party the way the activity_balances report attributes it, with its ledger's unit and decimals; plus contracts, the contracts it spans. Null when the party, contract or record does not exist.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"after": {
"type": "string",
"minLength": 1
},
"as_of": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"action": {
"enum": [
"list",
"get",
"balances",
"statement",
"currencies",
"transaction",
"footprint"
],
"type": "string"
},
"sub_key": {
"type": "string",
"minLength": 1
},
"after_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
},
"event_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"party_id": {
"type": "string",
"minLength": 1
},
"ledger_id": {
"type": "string",
"minLength": 1
},
"contract_id": {
"type": "string",
"minLength": 1
},
"account_code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"occurrence_id": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read ledgers and balances",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Read dated team membership, work arrangements and named service identities. Uses party-read permission, returns no monetary data. as_of defaults to the adapter clock; periods are half-open.
The description explains the capability, when to use it, and what to expect.
Inputs8/100
1 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
as_of
Not provided
Missing description. Explain what this value means and how to supply it.
status
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
person_party_id
Not provided
Missing description. Explain what this value means and how to supply it.
vendor_party_id
Not provided
Missing description. Explain what this value means and how to supply it.
account_id
Not provided
Missing description. Explain what this value means and how to supply it.
holder
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Read counterparties and contacts. Get requires id. List uses an exclusive party-ID after cursor and includes archived records; category narrows it to parties playing that role (customer, vendor, founder, investor, provider, employee), and vendor also matches providers; ids (1–500 party ids) narrows it to those, in id order. Categories returns the relationship categories in use.
The description explains the capability, when to use it, and what to expect.
Inputs11/100
1 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
category
Not provided
Missing description. Explain what this value means and how to supply it.
ids
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read registered financial accounts, their currency, provider, brand color, logo and default status. Get, activity, overview and summary require id. Summary also requires month (YYYY-MM, UTC); summaries takes 1–100 ids and month and returns the same figures in an items array. Both return exact balance and spending integer strings without movements (spent is null for ambiguous manual journals); transfers, funding, card repayments, customer refunds and collected-tax remittances are excluded. Activity returns the account's recent recorded payment effects and provider fees with their exact total. Overview returns what the account's page shows: the GL account it is held on (2135 keyed to the owner for a person's own card, whose balance is what the company owes that person across all their own accounts) and its balance; the latest movements (limit caps them, newest first; count is the total), each signed by the account's normal balance with its counterparty, running balance, counter accounts and, through a settled bill, the expense accounts it landed on; totals by month, counter account, expense account and counterparty; and its payment endpoints with full payto/CAIP-10 URIs and rails. List uses an exclusive financial-account-ID after cursor and includes archived accounts; ids (1–100 account ids) narrows it to those, in id order.
The description explains the capability, when to use it, and what to expect.
Inputs11/100
1 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
ids
Not provided
Missing description. Explain what this value means and how to supply it.
month
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "accounts",
"title": "Read financial accounts",
"description": "Read registered financial accounts, their currency, provider, brand color, logo and default status. Get, activity, overview and summary require id. Summary also requires month (YYYY-MM, UTC); summaries takes 1–100 ids and month and returns the same figures in an items array. Both return exact balance and spending integer strings without movements (spent is null for ambiguous manual journals); transfers, funding, card repayments, customer refunds and collected-tax remittances are excluded. Activity returns the account's recent recorded payment effects and provider fees with their exact total. Overview returns what the account's page shows: the GL account it is held on (2135 keyed to the owner for a person's own card, whose balance is what the company owes that person across all their own accounts) and its balance; the latest movements (limit caps them, newest first; count is the total), each signed by the account's normal balance with its counterparty, running balance, counter accounts and, through a settled bill, the expense accounts it landed on; totals by month, counter account, expense account and counterparty; and its payment endpoints with full payto/CAIP-10 URIs and rails. List uses an exclusive financial-account-ID after cursor and includes archived accounts; ids (1–100 account ids) narrows it to those, in id order.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business",
"action"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 100,
"minItems": 1
},
"after": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$"
},
"action": {
"enum": [
"list",
"get",
"activity",
"overview",
"summary",
"summaries"
],
"type": "string"
},
"business": {
"type": "string",
"minLength": 1,
"description": "Explicit business slug, obtained from businesses"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read financial accounts",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Quote eligible outbound or inbound payment methods from active payment endpoints and provider-contract fee schedules. Pure read; does not move money. Amount and costs are exact minor-unit strings.
The description explains the capability, when to use it, and what to expect.
Inputs8/100
1 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
direction
Not provided
Missing description. Explain what this value means and how to supply it.
amount_minor
Not provided
Missing description. Explain what this value means and how to supply it.
party_id
Not provided
Missing description. Explain what this value means and how to supply it.
assets
Not provided
Missing description. Explain what this value means and how to supply it.
rails
Not provided
Missing description. Explain what this value means and how to supply it.
max_eta_seconds
Not provided
Missing description. Explain what this value means and how to supply it.
optimize
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Read configured tax codes: role (output, input, reverse_charge, imported_services, non_recoverable), rate in parts per million, effective period, the liability it credits and the sales-tax regime that seeded it. Get requires id. List includes inactive codes and pages by exclusive tax-code-ID cursor.
The description explains the capability, when to use it, and what to expect.
Inputs15/100
1 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
List this business's capability links (shared views): every share ever created, revoked ones included with their revoking event, oldest first, with the token each resolves at /e/{slug}/share/{token} on this server. Pages by the exclusive view-ID after cursor. Create and revoke through the shared_views.create and shared_views.revoke commands.
The description explains the capability, when to use it, and what to expect.
Inputs15/100
1 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
after
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Read the selected business profile (get), preview a fiscal-year change (fiscal_year_change_preview with effective_at and year_end), list eligible sales-tax regimes (sales_tax_regimes), read the current plan (plan), monthly event allowance and usage (meter), or historical import allowance (imports). Does not change the business.
The description explains the capability, when to use it, and what to expect.
Inputs30/100
2 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
business
Explicit business slug, obtained from businesses
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
action
Not provided
Missing description. Explain what this value means and how to supply it.
effective_at
Not provided
Missing description. Explain what this value means and how to supply it.
target_plan
Not provided
Missing description. Explain what this value means and how to supply it.
year_end
Proposed fiscal year end as MM-DD, e.g. 06-30.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
economico setup, tools, quality score, publishing readiness, and alternatives.
How do I add economico to Claude, ChatGPT, or Cursor?
Add economico to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://economi.co/mcp.
Is economico MCP ready for ChatGPT and Claude?
As of November 12, 2026, economico scores 88/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is economico's MCP tool documentation?
As of November 12, 2026, economico scores 65/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 29 of 29 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to economico?
As of November 12, 2026, alternatives to economico in financial-services on the Manufact MCP leaderboard include SHVL credit control, BankConv, paidfor: x402 seller reliability, CoinGecko, and Coverage Cat Insurance.
How can economico improve its MCP documentation?
businesses is the lowest-scoring reviewed tool at 54/100. 0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.