How to fix: For Claude directory submission, declare the applicable annotations.readOnlyHint or annotations.destructiveHint value as a boolean on every tool.
How to fix: On each tool, declare annotations.readOnlyHint, annotations.destructiveHint, and annotations.openWorldHint as booleans. The policy review separately assesses whether their values match the tool's actual behavior.
How to fix: Set the top-level tool.title to a short human-readable label (for example, "Search catalog"). Claude directory submission requires tool titles; annotations.title remains accepted only as a legacy fallback.
Add a human-readable title so users do not have to interpret the tool identifier.
Description76/100
Search the available documentation for pages related to a user's query and return a list of related content matching the search criteria.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
question
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "search-documentation",
"description": "Search the available documentation for pages related to a user's query and return a list of related content matching the search criteria.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"minLength": 1
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description45/100
List bill line items
Describe the concrete operation and its scope instead of restating the tool name.
Inputs75/100
12 of 15 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
amount_min
Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
amount_max
Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_bill_line_items",
"description": "List bill line items",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"date",
"amount"
],
"type": "string",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema24"
},
{
"$ref": "#/definitions/__schema25"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"amount_max": {
"anyOf": [
{
"$ref": "#/definitions/__schema21"
},
{
"$ref": "#/definitions/__schema22"
},
{
"$ref": "#/definitions/__schema23"
}
],
"title": "Amount Max",
"description": "Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"amount_min": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
},
{
"$ref": "#/definitions/__schema20"
}
],
"title": "Amount Min",
"description": "Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "number"
},
"__schema19": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema20": {
"type": "null"
},
"__schema21": {
"type": "number"
},
"__schema22": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema23": {
"type": "null"
},
"__schema24": {
"type": "array",
"items": {
"type": "string",
"const": "vendor_bill"
}
},
"__schema25": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description42/100
List customers
Describe the concrete operation and its scope instead of restating the tool name.
Inputs73/100
10 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Clear enough to supply this argument.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_customers",
"description": "List customers",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"type": "string",
"const": "date",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "array",
"items": {
"enum": [
"invoices",
"payments"
],
"type": "string"
}
},
"__schema19": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description41/100
List invoices
Describe the concrete operation and its scope instead of restating the tool name.
Inputs75/100
13 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
amount_min
Inclusive lower bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
amount_max
Inclusive upper bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
status
Record statuses to include (repeat the key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_invoices",
"description": "List invoices",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"date",
"dueDate",
"issuedDate",
"paidDate",
"uncollectibleDate",
"total",
"status"
],
"type": "string",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema26"
},
{
"$ref": "#/definitions/__schema27"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"status": {
"anyOf": [
{
"$ref": "#/definitions/__schema24"
},
{
"$ref": "#/definitions/__schema25"
}
],
"title": "Status",
"description": "Record statuses to include (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"amount_max": {
"anyOf": [
{
"$ref": "#/definitions/__schema21"
},
{
"$ref": "#/definitions/__schema22"
},
{
"$ref": "#/definitions/__schema23"
}
],
"title": "Amount Max",
"description": "Inclusive upper bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`."
},
"amount_min": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
},
{
"$ref": "#/definitions/__schema20"
}
],
"title": "Amount Min",
"description": "Inclusive lower bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "number"
},
"__schema19": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema20": {
"type": "null"
},
"__schema21": {
"type": "number"
},
"__schema22": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema23": {
"type": "null"
},
"__schema24": {
"type": "array",
"items": {
"enum": [
"paid",
"voided",
"drafted",
"open",
"uncollectible"
],
"type": "string"
}
},
"__schema25": {
"type": "null"
},
"__schema26": {
"type": "array",
"items": {
"enum": [
"customer",
"line_items",
"payments"
],
"type": "string"
}
},
"__schema27": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description37/100
List line items
Describe the concrete operation and its scope instead of restating the tool name.
Inputs77/100
12 of 15 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
amount_min
Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
amount_max
Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Clear enough to supply this argument.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_line_items",
"description": "List line items",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"date",
"endDate",
"startDate",
"amount"
],
"type": "string",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema24"
},
{
"$ref": "#/definitions/__schema25"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"amount_max": {
"anyOf": [
{
"$ref": "#/definitions/__schema21"
},
{
"$ref": "#/definitions/__schema22"
},
{
"$ref": "#/definitions/__schema23"
}
],
"title": "Amount Max",
"description": "Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"amount_min": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
},
{
"$ref": "#/definitions/__schema20"
}
],
"title": "Amount Min",
"description": "Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "number"
},
"__schema19": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema20": {
"type": "null"
},
"__schema21": {
"type": "number"
},
"__schema22": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema23": {
"type": "null"
},
"__schema24": {
"type": "array",
"items": {
"type": "string",
"const": "invoice"
}
},
"__schema25": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description42/100
List payments
Describe the concrete operation and its scope instead of restating the tool name.
Inputs73/100
13 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
amount_min
Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
amount_max
Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Record statuses to include (repeat the key).
Explain the meaning of this value, not just its name.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Clear enough to supply this argument.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_payments",
"description": "List payments",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"date",
"succeededDate",
"amount",
"status"
],
"type": "string",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema26"
},
{
"$ref": "#/definitions/__schema27"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"status": {
"anyOf": [
{
"$ref": "#/definitions/__schema24"
},
{
"$ref": "#/definitions/__schema25"
}
],
"title": "Status",
"description": "Record statuses to include (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"amount_max": {
"anyOf": [
{
"$ref": "#/definitions/__schema21"
},
{
"$ref": "#/definitions/__schema22"
},
{
"$ref": "#/definitions/__schema23"
}
],
"title": "Amount Max",
"description": "Inclusive upper bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"amount_min": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
},
{
"$ref": "#/definitions/__schema20"
}
],
"title": "Amount Min",
"description": "Inclusive lower bound: decimal string, in the record's own currency, compared against `amount`. Requires exactly one value in `currencies`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "number"
},
"__schema19": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema20": {
"type": "null"
},
"__schema21": {
"type": "number"
},
"__schema22": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema23": {
"type": "null"
},
"__schema24": {
"type": "array",
"items": {
"enum": [
"pending",
"failed",
"succeeded"
],
"type": "string"
}
},
"__schema25": {
"type": "null"
},
"__schema26": {
"type": "array",
"items": {
"enum": [
"customer",
"invoice"
],
"type": "string"
}
},
"__schema27": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description45/100
List vendor bills
Describe the concrete operation and its scope instead of restating the tool name.
Inputs78/100
13 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Clear enough to supply this argument.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
amount_min
Inclusive lower bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
amount_max
Inclusive upper bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`.
Clear enough to supply this argument.
status
Record statuses to include (repeat the key).
Clear enough to supply this argument.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Clear enough to supply this argument.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_vendor_bills",
"description": "List vendor bills",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"date",
"dueDate",
"paidDate",
"voidedDate",
"total",
"status"
],
"type": "string",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema26"
},
{
"$ref": "#/definitions/__schema27"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"status": {
"anyOf": [
{
"$ref": "#/definitions/__schema24"
},
{
"$ref": "#/definitions/__schema25"
}
],
"title": "Status",
"description": "Record statuses to include (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"amount_max": {
"anyOf": [
{
"$ref": "#/definitions/__schema21"
},
{
"$ref": "#/definitions/__schema22"
},
{
"$ref": "#/definitions/__schema23"
}
],
"title": "Amount Max",
"description": "Inclusive upper bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`."
},
"amount_min": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
},
{
"$ref": "#/definitions/__schema20"
}
],
"title": "Amount Min",
"description": "Inclusive lower bound: decimal string, in the record's own currency, compared against `total`. Requires exactly one value in `currencies`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "number"
},
"__schema19": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema20": {
"type": "null"
},
"__schema21": {
"type": "number"
},
"__schema22": {
"type": "string",
"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
},
"__schema23": {
"type": "null"
},
"__schema24": {
"type": "array",
"items": {
"enum": [
"open",
"voided",
"drafted",
"paid"
],
"type": "string"
}
},
"__schema25": {
"type": "null"
},
"__schema26": {
"type": "array",
"items": {
"enum": [
"vendor",
"line_items"
],
"type": "string"
}
},
"__schema27": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description36/100
List vendors
Describe the concrete operation and its scope instead of restating the tool name.
Inputs69/100
10 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_ids
Exact external ids to return (repeat the key). At most 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currencies
ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms
Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`.
Clear enough to supply this argument.
platform_object_ids
The source platform's own ids for the records (e.g. a Stripe `in_…` id).
Clear enough to supply this argument.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Opaque cursor from the previous page's `next_cursor`. Omit for the first page.
Clear enough to supply this argument.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
include_total
Not provided
Missing description. Explain what this value means and how to supply it.
order
Sort direction.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date_from
Inclusive lower bound on the record's `date`.
Clear enough to supply this argument.
date_to
Inclusive upper bound on the record's `date`.
Clear enough to supply this argument.
sort
Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order.
Clear enough to supply this argument.
expand
Linked records to include under `expanded` (repeat the key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "list_vendors",
"description": "List vendors",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"type": "string",
"const": "date",
"title": "Sort",
"description": "Field to sort by. Amount sorts use each record's value in the entity's functional currency, so records in different currencies can look out of order; filter by one currency for a strict amount order."
},
"limit": {
"allOf": [
{
"$ref": "#/definitions/__schema12"
}
],
"title": "Limit",
"default": 50
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"title": "Order",
"description": "Sort direction."
},
"cursor": {
"anyOf": [
{
"$ref": "#/definitions/__schema10"
},
{
"$ref": "#/definitions/__schema11"
}
],
"title": "Cursor",
"description": "Opaque cursor from the previous page's `next_cursor`. Omit for the first page."
},
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema18"
},
{
"$ref": "#/definitions/__schema19"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"date_to": {
"anyOf": [
{
"$ref": "#/definitions/__schema16"
},
{
"$ref": "#/definitions/__schema17"
}
],
"title": "Date To",
"description": "Inclusive upper bound on the record's `date`."
},
"date_from": {
"anyOf": [
{
"$ref": "#/definitions/__schema14"
},
{
"$ref": "#/definitions/__schema15"
}
],
"title": "Date From",
"description": "Inclusive lower bound on the record's `date`."
},
"platforms": {
"anyOf": [
{
"$ref": "#/definitions/__schema5"
},
{
"$ref": "#/definitions/__schema6"
}
],
"title": "Platforms",
"description": "Source platforms the records were ingested from (e.g. `stripe`, `ramp`). Customer-inserted records carry the platform they declared, or `api`."
},
"currencies": {
"anyOf": [
{
"$ref": "#/definitions/__schema3"
},
{
"$ref": "#/definitions/__schema4"
}
],
"title": "Currencies",
"description": "ISO 4217 codes (repeat the key). Matches the record's own currency, not the entity's functional currency."
},
"external_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema2"
}
],
"title": "External Ids",
"description": "Exact external ids to return (repeat the key). At most 100."
},
"include_total": {
"allOf": [
{
"$ref": "#/definitions/__schema13"
}
],
"title": "Include Total",
"default": false
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema9"
}
],
"title": "Include Deleted",
"default": false
},
"platform_object_ids": {
"anyOf": [
{
"$ref": "#/definitions/__schema7"
},
{
"$ref": "#/definitions/__schema8"
}
],
"title": "Platform Object Ids",
"description": "The source platform's own ids for the records (e.g. a Stripe `in_…` id)."
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"$ref": "#/definitions/__schema1"
},
"maxItems": 100
},
"__schema1": {
"type": "string"
},
"__schema2": {
"type": "null"
},
"__schema3": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema4": {
"type": "null"
},
"__schema5": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema6": {
"type": "null"
},
"__schema7": {
"type": "array",
"items": {
"type": "string"
}
},
"__schema8": {
"type": "null"
},
"__schema9": {
"type": "boolean",
"description": "Include records act has since deleted. They carry `customFields.t0_deleted_at`. Default false: deleted records are omitted."
},
"__schema10": {
"type": "string"
},
"__schema11": {
"type": "null"
},
"__schema12": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum records per page (1-200). A page can hold fewer while `next_cursor` is still set; iterate until it is null."
},
"__schema13": {
"type": "boolean",
"description": "Also return `total`, the number of matching records before the deleted overlay."
},
"__schema14": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema15": {
"type": "null"
},
"__schema16": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"__schema17": {
"type": "null"
},
"__schema18": {
"type": "array",
"items": {
"type": "string",
"const": "vendor_bills"
}
},
"__schema19": {
"type": "null"
}
}
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description47/100
Get one Vendor
Describe the concrete operation and its scope instead of restating the tool name.
Inputs42/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
external_id
The record's external id.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
expand
Linked records to include under `expanded` (repeat the key).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
include_deleted
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations0/100
Declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint based on the tool’s actual behavior.
Not declared
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": "get_one_vendor",
"description": "Get one Vendor",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"external_id"
],
"properties": {
"expand": {
"anyOf": [
{
"$ref": "#/definitions/__schema0"
},
{
"$ref": "#/definitions/__schema1"
}
],
"title": "Expand",
"description": "Linked records to include under `expanded` (repeat the key)."
},
"external_id": {
"type": "string",
"title": "External Id",
"description": "The record's external id."
},
"include_deleted": {
"allOf": [
{
"$ref": "#/definitions/__schema2"
}
],
"title": "Include Deleted",
"default": false
}
},
"definitions": {
"__schema0": {
"type": "array",
"items": {
"type": "string",
"const": "vendor_bills"
}
},
"__schema1": {
"type": "null"
},
"__schema2": {
"type": "boolean",
"description": "Return the record even if act has deleted it; it then carries `customFields.t0_deleted_at`."
}
}
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Search documentationSearch the available documentation for pages related to a user's query and return a list of related content matching the search criteria.
02List invoices
03List customers
04List payments
05List line items
Want to run these tasks against your MCP server with us?
t0 setup, tools, quality score, publishing readiness, and alternatives.
How do I add t0 to Claude, ChatGPT, or Cursor?
Add t0 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://docs.t0.ai/mcp.
Is t0 MCP ready for ChatGPT and Claude?
As of October 15, 2026, t0 scores 82/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and does not yet meet Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is t0's MCP tool documentation?
As of October 15, 2026, t0 scores 44/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 23 of 23 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to t0?
As of October 15, 2026, alternatives to t0 in financial-services on the Manufact MCP catalog include Contract-Factory — Sociétés & SIREN, Kavara Kirk, CeylonCharts, Ramp Data, and Trade It.
How can t0 improve its MCP documentation?
search-documentation is the lowest-scoring reviewed tool at 28/100. 0 of 1 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.