Ryft MCP
The Ryft MCP server is a Model Context Protocol interface for Ryft's payments API, enabling full lifecycle management of financial resources across multiple deployment options (stdio, HTTP, AWS Lambda).
Customer Management – Create, retrieve, update, delete, and list customers; list stored payment methods.
Payment Sessions – Create, retrieve, update, capture, void, and refund (full or partial) payment sessions; continue payments after 3DS authentication; list and retrieve associated transactions.
Subscriptions – Create, retrieve, update, cancel, and list subscriptions; retrieve associated payment sessions.
Accounts – Create, retrieve, update, and verify business/individual/hosted accounts; generate authorization links and temporary account links for hosted sub-accounts.
Payment Methods – Retrieve, update billing address, and delete payment methods.
Webhooks – Create, retrieve, update, delete, and list webhook endpoints.
Persons – Create, retrieve, update, delete, and list persons associated with business accounts.
Payout Methods & Payouts – Manage payout methods (bank accounts); create, list, and retrieve payouts.
Transfers – Create, list, and retrieve transfers between accounts.
Files – Upload (Evidence, VerificationDocument, Report), retrieve, and list files.
Platform Fees – List and retrieve platform fees and their refunds.
Events – List and retrieve Ryft events with optional account scoping.
Disputes – List, retrieve, accept, or challenge disputes; add and delete evidence.
Balances – List balances by currency and list balance transactions.
Health Monitoring – Check server configuration state without exposing secrets.
Authentication is handled via environment variables, with support for optional default account scoping.
Enables serverless deployment of the Ryft MCP server to AWS Lambda for stateless MCP over HTTPS, providing a dedicated Lambda handler entrypoint, build scripts for generating deployment artifacts, and configuration support for running as a serverless function with environment variable-based authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ryft MCPlist my 10 most recent payouts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ryft MCP
ryft-mcp is a Model Context Protocol server for the Ryft API.
It gives MCP clients a clean interface for working with Ryft resources such as customers, payment sessions, subscriptions, webhooks, accounts, payouts, disputes, files, and more.
Quick Start (Hosted)
The Ryft MCP server is deployed and ready to use. Add it to your MCP client with your Ryft secret key.
Important: Your Ryft secret key may contain special characters such as
/and+. Make sure to copy the full key exactly — truncating or escaping these characters will cause authentication failures (403 errors). After adding the server, restart your MCP client to pick up the new configuration.
Claude Desktop
Claude Desktop does not support custom authentication headers for remote MCP servers via config file. Use the stdio transport instead:
Clone this repository and install dependencies:
git clone https://github.com/bkawk/ryft-mcp.git
cd ryft-mcp
npm install
npm run buildOpen Claude Desktop
Go to Settings (gear icon in the top-right)
Click Developer in the sidebar
Click Edit Config to open
claude_desktop_config.jsonAdd the following (replace the path and key with your own):
{
"mcpServers": {
"ryft": {
"command": "node",
"args": ["/absolute/path/to/ryft-mcp/dist/index.js"],
"env": {
"RYFT_SECRET_KEY": "YOUR_RYFT_SECRET_KEY"
}
}
}
}Save the file and restart Claude Desktop
Claude Code (CLI)
Claude Code supports remote MCP servers with custom headers. Run this command in your terminal (all on one line):
claude mcp add ryft --transport http https://ryft-mcp.bkawk.com/mcp --header "Authorization: Bearer YOUR_RYFT_SECRET_KEY"Warning: Do not split this command across multiple lines. Line breaks inside the
--headervalue will be embedded in the token and cause silent authentication failures.
After running this command, start a new claude session (or type /mcp in an existing session) for the server to become available. You can verify it was saved correctly by running:
claude mcp listCheck that the Authorization header value shows Bearer sk_sandbox_... with no line breaks or extra whitespace.
To remove the server later:
claude mcp remove ryftChatGPT
ChatGPT connectors currently only support OAuth or no-auth for remote MCP servers — custom Authorization headers are not supported. To use Ryft MCP with ChatGPT today:
Go to Settings → Apps & Connectors → Advanced settings and enable Developer mode
Go to Settings → Connectors → Create
Enter a name (e.g. "Ryft") and the server URL:
https://ryft-mcp.bkawk.com/mcpChatGPT will attempt to connect without authentication
Note: Because ChatGPT cannot send a Bearer token, requests will be rejected with a 401 error. Full ChatGPT support requires adding OAuth to the MCP server — this is planned for a future release.
Codex (OpenAI CLI)
Open or create the file
~/.codex/config.tomlAdd the Ryft MCP server:
[mcp_servers.ryft]
url = "https://ryft-mcp.bkawk.com/mcp"
http_headers = { "Authorization" = "Bearer YOUR_RYFT_SECRET_KEY" }Or to keep the key out of the config file, use an environment variable:
[mcp_servers.ryft]
url = "https://ryft-mcp.bkawk.com/mcp"
env_http_headers = { "Authorization" = "RYFT_AUTH_HEADER" }Then set export RYFT_AUTH_HEADER="Bearer YOUR_RYFT_SECRET_KEY" in your shell profile.
Save the file. Codex will pick up the server on the next run.
Cursor
Open Cursor and go to Settings > MCP
Click Add new global MCP server
This opens
~/.cursor/mcp.json. Add the following:
{
"mcpServers": {
"ryft": {
"url": "https://ryft-mcp.bkawk.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_RYFT_SECRET_KEY"
}
}
}
}Save the file. The server should appear as connected in the MCP settings panel.
Other MCP Clients
Any MCP client that supports remote Streamable HTTP servers can connect. Use these details:
URL:
https://ryft-mcp.bkawk.com/mcpAuthentication: Bearer token
Token: Your Ryft secret key (e.g.
sk_sandbox_...)
Verify the Connection
Once configured, ask your AI assistant something like "List my Ryft customers" or run the ryft.health tool. If the connection is working, you should see a response with your Ryft data or the list of available tool families.
Troubleshooting
Symptom | Cause | Fix |
401 Unauthorized | Missing or malformed | Ensure the header is |
403 Access Denied | Truncated secret key (often a missing | Re-copy the full key from the Ryft dashboard — it may contain special characters |
403 Access Denied | Newline embedded in the key | Re-run |
AI says "no Ryft tools" | MCP server not connected or stale tool list | Start a new |
"not valid MCP server" in Claude Desktop | Claude Desktop does not support remote MCP with custom headers via config file | Use the stdio setup for Claude Desktop (see above) or use Claude Code CLI instead |
Config saved but tools missing | Config was saved to a different project scope | Run |
Related MCP server: MCP Stripe Server
Tool Coverage
Available tool families:
customers— create, get, list, update, delete, list payment methodspaymentSessions— create, get, list, update, close, capture, refundsubscriptions— create, get, list, update, cancelfiles— upload, get, listaccounts— create, get, list, updateaccountLinks— create, get, list, deletepaymentMethods— create, get, list, update, deletewebhooks— create, get, list, update, deletepersons— create, get, list, update, deletepayoutMethods— create, get, list, update, deletepayouts— create, get, list, updatetransfers— create, get, listplatformFees— create, get, listevents— get, listdisputes— get, list, updatebalances— get, listapplePay— initiate, complete, decryptinPerson— in-person payment operations
Self-Hosting
If you prefer to run your own instance, there are three deployment options.
Option 1: Local stdio (for development)
npm install
npm run build
RYFT_SECRET_KEY=your_secret_key npm startMCP client configuration for stdio:
{
"mcpServers": {
"ryft": {
"command": "node",
"args": ["/absolute/path/to/ryft-mcp/dist/index.js"],
"env": {
"RYFT_SECRET_KEY": "your_secret_key"
}
}
}
}Option 2: Local HTTP server
RYFT_SECRET_KEY=your_secret_key PORT=8787 npm run dev:httpHealth check: curl http://127.0.0.1:8787/health
Option 3: AWS Lambda via CDK
The infra/ directory contains a CDK stack that deploys:
Lambda function (Node.js 20, arm64)
API Gateway HTTP API with CORS
ACM certificate (DNS-validated)
Custom domain with Route 53 alias record
Prerequisites:
AWS CLI configured with appropriate permissions
An existing Route 53 hosted zone for your domain
Node.js 20+
Setup:
# Create your .env from the template
cp .env.example .env
# Edit .env with your values:
# AWS_PROFILE=your-profile
# CDK_DEFAULT_ACCOUNT=123456789012
# CDK_DEFAULT_REGION=us-east-1
# DOMAIN_NAME=mcp.yourdomain.com
# HOSTED_ZONE_NAME=yourdomain.com
# Build the Lambda bundle
npm install
npm run build:lambda:zip
# Deploy
cd infra
npm install
export $(grep -v '^#' ../.env | xargs)
npx cdk deployThe deployed server authenticates per-request — each caller passes their own Ryft secret key in the Authorization: Bearer header. No secrets are stored in the Lambda environment.
Environment Variables
Variable | Required | Default | Description |
| stdio only | — | Ryft API secret key (stdio mode reads from env) |
| No |
| Ryft API base URL |
| No | — | Default |
Features
stdio and remote Streamable HTTP transports
AWS Lambda handler for stateless MCP over HTTPS
per-request authentication via
Authorization: Bearerheader (hosted mode)structured Ryft API error responses
account-scoped requests with optional default account
multipart file uploads
DELETE-with-body support for endpoints that require it
Development
npm install # install dependencies
npm run check # typecheck
npm run lint # lint
npm test # run tests
npm run build # build all entry pointsSecurity
In hosted mode, the server does not store any API credentials. Each request must include a valid Ryft secret key in the Authorization header. Requests without a valid Bearer token receive a 401 response.
In stdio mode (local), the server reads RYFT_SECRET_KEY from the environment and exits immediately if it is missing.
License
MIT
Available Tools
69 toolsaccountLinks.generateTemporaryC
Generate a temporary Ryft account link for a hosted sub-account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| redirectUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds context by specifying the link is 'temporary' (time-bounded) and for a 'hosted sub-account' (specific account type), but lacks critical behavioral details like expiration duration, security implications, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence structure is efficient and front-loaded with the action, but the brevity is inappropriate given the complexity (zero schema descriptions, no annotations, no output schema), resulting in underspecification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero schema descriptions, no annotations, and no output schema, the description is incomplete. It fails to document parameters, explain the temporary link's lifecycle, or describe the return value, leaving the agent with insufficient information to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate. It provides implicit context for 'accountId' via 'hosted sub-account', but offers no explanation for 'redirectUrl' semantics, acceptable formats, or examples, leaving significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate'), resource ('Ryft account link'), and scope ('temporary', 'hosted sub-account'), distinguishing it from generic account operations. However, it does not explicitly differentiate from the sibling tool 'accounts.createAuthorizationLink'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., accounts.createAuthorizationLink) or prerequisites for invocation. The description only states what the tool does, not when to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts.createD
Create a Ryft account.
| Name | Required | Description | Default |
|---|---|---|---|
| onboardingFlow | No | ||
| No | |||
| entityType | Yes | ||
| business | No | ||
| individual | No | ||
| metadata | No | ||
| settings | No | ||
| termsOfService | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose idempotency, side effects (e.g., confirmation emails), error conditions, or conditional logic (e.g., that 'business' and 'individual' payloads are mutually exclusive based on 'entityType').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (4 words), it suffers from under-specification rather than efficient information density. No effort is made to front-load critical constraints or structure the description to guide the agent through the complex parameter requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely inadequate for the tool's complexity. Fails to explain the entityType enum implications, required conditional sub-objects, metadata usage, settings structure, or TOS acceptance requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and a complex nested structure (8 top-level parameters including conditional business/individual objects), the description adds zero semantic meaning beyond the property names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the basic verb ('Create') and resource ('Ryft account'), which matches the tool name, but offers no specificity about account types (Business/Individual/Hosted) or scope beyond the minimal CRUD operation. The inclusion of 'Ryft' provides some platform context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus sibling tools like `accounts.createAuthorizationLink`, prerequisites (e.g., email uniqueness checks), or post-creation steps (verification).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts.createAuthorizationLinkC
Create a Ryft account authorization link for a registered account email.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| redirectUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Zero annotations provided, so description carries full burden. Fails to disclose what the returned link contains/expiry, what the redirectUrl parameter actually does (where user lands post-authorization), side effects (e.g., invalidates previous links?), or error cases (unregistered email).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with zero redundancy. However, extreme brevity is inappropriate given 0% schema coverage and lack of annotations, suggesting insufficient information density rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and undocumented parameters, the description is insufficient. Critical gaps include: the link's return format/content, redirectUrl behavior, authorization flow mechanics, and error handling—information an agent needs to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description partially compensates by constraining email to 'registered account,' but completely omits explanation of redirectUrl's purpose despite the high compensation burden. An agent cannot infer redirectUrl semantics from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Create) and resource (Ryft account authorization link), but 'authorization link' is vague regarding the flow type (OAuth, verification, etc.). 'For a registered account email' hints at prerequisite but doesn't explicitly differentiate from sibling accountLinks.generateTemporary or clarify when to use versus accounts.verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies a prerequisite (email must belong to a registered account) which distinguishes from accounts.create, but provides no explicit when-to-use guidance, no mention of the authorization flow steps, and no comparison to accountLinks.generateTemporary which appears to serve a similar purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts.getC
Get a Ryft account by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet description adds no behavioral disclosure beyond the implicit verb. Missing: idempotency, safety guarantees, what happens on missing ID, or return value structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action verb. Efficient structure with no redundancy, though brevity contributes to information gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate given zero schema coverage and no output schema. A retrieval tool with undocumented return values and parameter semantics requires more than 'Get X by id' to be invocation-ready.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description mentions 'by id' but fails to describe the ID format, valid values, examples, or constraints beyond the schema's minLength.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Provides clear verb ('Get') and resource ('Ryft account') with specific lookup mechanism ('by id'), but fails to distinguish from siblings like `accounts.verify` or clarify what constitutes a Ryft account versus customer accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus alternatives, prerequisites (API keys, permissions), or conditions for errors like 'account not found'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts.updateC
Update a Ryft account by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| entityType | No | ||
| business | No | ||
| individual | No | ||
| metadata | No | ||
| settings | No | ||
| termsOfService | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States 'Update' implying mutation but lacks critical behavioral details: whether updates are partial or destructive, error handling for invalid IDs, side effects on linked resources (persons, balances), or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (5 words) with no wasted words, but undersized for a tool with 7 complex parameters including nested conditional objects. Conciseness becomes under-specification given the schema complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a complex update operation with deep nesting (business/individual structures), conditional polymorphism via entityType, and 6 optional parameter groups. Description covers less than 10% of what an agent needs to construct valid requests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet description only mentions the 'id' parameter. Fails to explain the conditional structure (business vs individual objects based on entityType enum), the purpose of metadata/settings objects, or document upload requirements in the documents arrays.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb (Update) and resource (Ryft account) and identifies the key parameter (by id), but fails to distinguish from sibling update tools like persons.update or customers.update, or clarify what makes this different from accounts.create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus accounts.create, accounts.verify, or other account management workflows. No mention of prerequisites (e.g., whether the account must exist) or partial vs full update semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts.verifyC
Request account verification for a Ryft account.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Request' implies a write operation, the description lacks details on side effects (emails sent, review triggered), idempotency, reversibility, or whether this initiates an asynchronous process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no redundant words. However, given the lack of schema documentation and annotations, this brevity may be excessive rather than optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial/account verification tool (likely involving KYC/compliance states), the description is inadequate. With zero schema coverage, no output schema, no annotations, and no explanation of the verification lifecycle or return values, critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (the 'id' parameter is undocumented in the schema). The description mentions 'Ryft account' giving implicit context that 'id' refers to an account ID, but does not explicitly describe the parameter, its format, or constraints beyond what the schema's minLength provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Request') and identifies the resource ('account verification for a Ryft account'), making the core action clear. However, it does not differentiate from sibling tools like 'accounts.update' which could conceivably modify verification status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, prerequisites (e.g., account must exist and be unverified), or expected outcomes. Zero guidance on workflow or state transitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
balances.listC
List Ryft balances for a currency.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It fails to indicate whether this is a read-only operation, what data structure is returned, or pagination behavior. 'List' implies reading but lacks safety or scope details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and front-loaded, but undersized given the complete lack of schema documentation and annotations. It prioritizes brevity over necessary explanatory detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a financial tool with zero schema documentation and no annotations. Missing explanations of the Ryft balance entity, return value structure, and the relationship between accountId and currency parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for both parameters. It implicitly references 'currency' via 'for a currency' but completely omits 'accountId', its optionality, and the 3-character ISO format expectation for the currency code.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('List') and resource ('Ryft balances') with scope ('for a currency'). Implicitly distinguishes from sibling 'balanceTransactions.list' by referencing 'balances' rather than transactions, though explicit differentiation would strengthen it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus 'accounts.get' or 'balanceTransactions.list', nor does it mention prerequisites such as requiring a valid account ID or authorization context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
balanceTransactions.listC
List Ryft balance transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| startsAfter | No | ||
| payoutId | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden of behavioral disclosure. Fails to mention pagination behavior, read-only safety, return format, or chronological ordering implied by 'startsAfter' parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste, but given 4 undocumented parameters and zero annotations, this brevity represents under-specification rather than efficient communication. Structure is adequate but insufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 4 undocumented parameters, no annotations, and no output schema. Description provides only the minimal tautological action statement, leaving critical gaps in agent understanding needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for 4 parameters (limit, startsAfter, payoutId, accountId). Description adds no parameter guidance—what 'startsAfter' cursor format is, whether filters are exclusive, or typical limit defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb 'List' and resource 'Ryft balance transactions'. Implies ledger/history via 'transactions' which distinguishes it from sibling 'balances.list' (likely current totals) and 'payouts.list', though could explicitly clarify this distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus siblings like 'balances.list', 'payouts.list', or 'transfers.list'. No mention of filtering behavior (e.g., whether accountId is required for platform vs. merchant calls).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.createC
Create a Ryft customer.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| firstName | No | ||
| lastName | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure but only implies mutation through the verb 'Create'. It fails to specify idempotency behavior, error handling for duplicate emails, or what the tool returns upon success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief and front-loaded, the single sentence is overly terse to the point of under-specification. It communicates the basic operation but wastes no words, though it fails to earn its place by adding value beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a creation tool with 4 parameters including a nested metadata object. Without annotations, output schema, or schema descriptions, the description should explain the customer creation workflow, return values, and field semantics, none of which are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate by explaining parameters, but it mentions none. Critical details about the metadata object structure, email validation requirements, and optional vs required fields (only email is required) are completely absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the basic action (create) and resource (customer) but fails to differentiate from sibling creation tools like accounts.create or persons.create, which is critical given the large number of similar operations available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives (e.g., accounts.create) or prerequisites (such as email uniqueness constraints). No mention of whether this is for new customers only or if it updates existing ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.deleteC
Delete a Ryft customer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure, yet it fails to mention that this is a destructive operation, whether deletion is permanent, or if it cascades to related entities (e.g., payment methods visible in customers.listPaymentMethods).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The four-word description is efficiently structured and front-loaded with no wasted language, though its extreme brevity contributes to under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema and zero parameter documentation, the description is inadequate. It should disclose irreversibility, side effects, or related data impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate but only implicitly hints that the 'id' parameter refers to a customer ID. It does not document the parameter format, constraints, or that it is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and identifies the resource ('Ryft customer'), distinguishing this from sibling operations like customers.create or customers.update. It is clear but minimal, lacking scope details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like customers.update, nor does it warn about the irreversible nature of deletion or prerequisites (e.g., zero balance requirements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.getB
Get a Ryft customer by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. Beyond 'Get' implying a read operation, it reveals nothing about idempotency, error responses (e.g., 404 if customer not found), required permissions, or the structure of returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at five words with no redundant phrases. The single sentence structure front-loads the action and resource, wasting no space while remaining grammatically complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup tool with no output schema, the description covers the basic operation but is incomplete given the 0% schema coverage. It omits error handling patterns and return value structure that would be necessary for robust agent operation without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the schema provides no documentation for the 'id' parameter. The description partially compensates by referencing 'by id', signaling that the parameter is a customer identifier, but lacks details on format, validation rules, or whether it accepts external vs. internal IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb ('Get'), resource ('Ryft customer'), and lookup method ('by id'), which distinguishes it from siblings like 'customers.list' (collection) and 'customers.create' (mutation). However, it does not explicitly state that this retrieves a single record versus a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied usage through 'by id' — indicating this is for specific record lookups when an identifier is known. However, it lacks explicit guidance on when to prefer 'customers.list' for searches or what to do if the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.listC
List Ryft customers.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description carries the full disclosure burden. While 'List' implies a read-only operation, the description fails to explain pagination behavior (cursor vs offset), filtering logic (partial vs exact match on email), or return value structure despite having six behavioral parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At three words, the description is brief but significantly undersized for the tool's complexity. The single sentence does not earn its place as it merely restates the tool name pattern without adding operational context required for six undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters with no schema descriptions, no annotations, and no output schema, the description is inadequate. It fails to explain the pagination mechanism (limit/startsAfter), timestamp filtering boundaries, or sorting behavior that agents need to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage across six parameters (email, timestamps, pagination controls). The description mentions none of these parameters nor explains their semantics, leaving critical filtering and pagination capabilities completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a clear verb ('List') and resource ('Ryft customers'), distinguishing it from sibling operations like 'get', 'create', or 'delete'. However, it does not explicitly differentiate from 'customers.listPaymentMethods' or clarify scope beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus 'customers.get' for retrieving specific records, or how to effectively use the filtering capabilities. The description stands alone without contextual workflow guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.listPaymentMethodsC
List stored payment methods for a Ryft customer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent so description carries full burden. While 'List' implies read-only semantics, the description fails to confirm idempotency, disclose response format, or explain behavior when a customer has no payment methods (empty array vs error).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with verb-first structure. Efficient length but arguably too terse given the lack of schema annotations and output schema; leaves value on the table by not elaborating on the one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list operation with one parameter, but notable gaps remain: the parameter semantics are implied not stated, no return value description provided, and no differentiation from direct payment method retrieval tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% requiring description compensation. While 'for a Ryft customer' implies the 'id' parameter is the customer identifier, it does not explicitly confirm this mapping or describe the ID format (UUID, string prefix, etc.), leaving the parameter semantics partially undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'List' and resource 'stored payment methods' with scope 'for a Ryft customer'. The phrase 'stored payment methods' distinguishes this from customer profile data (siblings customers.get/customers.list) and implies this operates on customer-scoped resources versus paymentMethods.get which operates on specific payment method IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus paymentMethods.get (which retrieves a specific payment method by its own ID) or prerequisites. No mention of pagination behavior or filtering capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers.updateC
Update a Ryft customer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| firstName | No | ||
| lastName | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet the description fails to disclose mutation specifics: whether updates are partial (PATCH-like) or full replacement, whether changes are reversible, or required permissions. Carries full burden but provides minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (4 words) and front-loaded with the action. However, brevity crosses into under-specification given the complexity (4 parameters including nested objects, 0% schema coverage). No verbosity, but insufficient density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a mutation tool with nested objects and zero schema documentation. No output schema is present, yet description doesn't hint at return values or success/failure indicators. Missing critical context for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It fails to explain the 'id' parameter (customer ID vs other), the purpose of 'metadata' nested object, or constraints on name fields. Only contextualizes that parameters relate to customer updates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb (Update) and resource (Ryft customer), but lacks scope clarification (partial vs full update) and does not differentiate from sibling tools like customers.create or customers.delete beyond the action word.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus customers.create, prerequisites for use (e.g., customer must exist), or error conditions. No alternative workflows mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.acceptC
Accept a Ryft dispute.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose critical behavioral traits: whether this action is final/irreversible, whether it triggers an automatic refund, or what business outcome results from acceptance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (four words) with no filler, but this efficiency comes at the cost of omitting necessary context. Every sentence earns its place, but there should be more sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a state-changing financial operation. With no annotations, no output schema, and 0% parameter coverage, the description fails to explain the dispute lifecycle implications, required inputs, or consequences of the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining the 'id' parameter (e.g., that it is the Dispute ID). While the parameter name is somewhat self-evident, the description adds no semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action ('Accept') and resource ('Ryft dispute'), but offers minimal differentiation from the sibling tool 'disputes.challenge'. Does not explain what 'accepting' means in the dispute resolution workflow (e.g., conceding the dispute, closing in favor of the customer).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use 'accept' versus the sibling 'disputes.challenge', nor does it state prerequisites such as viewing dispute evidence or the dispute status required to perform this action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.addEvidenceC
Add evidence to a Ryft dispute.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| text | No | ||
| files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to clarify key mutation traits: whether evidence is cumulative or replaces existing evidence, validity constraints (e.g., allowed file types, text limits), or whether this action triggers a status change in the dispute.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, appropriately front-loaded sentence with no redundant phrases. However, its extreme breverity (6 words) crosses into under-specification territory given the tool's parameter complexity and lack of schema documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow-sensitive mutation tool with nested object parameters, zero schema coverage, and dependencies on sibling tools (files.create), the description is incomplete. It omits critical context about file upload prerequisites, dispute lifecycle constraints, and return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate for three undocumented parameters including nested objects (text, files). While 'Add evidence' loosely maps to the purpose of text and files parameters, it fails to clarify that 'id' refers to the dispute ID, that files contains IDs (not raw data), or the meaning of 'uncategorized' prefixes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action ('Add') and resource ('evidence') within the 'Ryft dispute' domain. It effectively distinguishes from siblings like disputes.deleteEvidence, disputes.get, and disputes.list. However, it lacks specificity about what 'Ryft' refers to and the nature of the evidence being added.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus disputes.challenge or disputes.accept, nor does it mention prerequisites like uploading files via files.create before referencing their IDs in the uncategorizedFileIds parameter. No workflow context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.challengeC
Challenge a Ryft dispute.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description carries full disclosure burden yet fails to explain mutation semantics (irreversible?), side effects (financial holds, fee changes), or outcome indicators. 'Challenge' implies contestation but doesn't disclose the business process triggered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (four words) avoiding verbosity, but the lone sentence fails to earn its place by delivering minimal information beyond the tool name. Appropriately sized only in word count, not value density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Insufficient for a high-stakes financial operation. Lacks explanation of the parameter, the 'challenge' business process, return values, and prerequisites. The minimalism is inappropriate given the legal/financial weight of disputing transactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description offers no compensation. It fails to specify that the 'id' parameter represents the dispute ID (versus transaction ID or customer ID), leaving critical semantic gaps for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the action ('Challenge') and resource ('Ryft dispute') but remains procedurally vague—it doesn't specify whether this submits evidence, formally contests the dispute, or triggers a specific workflow. It nominally distinguishes from sibling 'disputes.accept' by naming the opposing action, though neither clarifies the underlying mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to select this tool versus alternatives like 'disputes.accept' (presumably for conceding) or 'disputes.addEvidence' (for documentation). Missing prerequisites such as required dispute status, mandatory evidence attachment, or deadlines for challenging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.deleteEvidenceC
Delete evidence from a Ryft dispute.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| text | No | ||
| files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose whether deletion is reversible, if it affects dispute status, or timing restrictions (e.g., only deletable before challenge submitted).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 6 words is appropriately front-loaded, but given the complexity (destructive operation, 3 undocumented parameters), this brevity constitutes underspecification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Destructive operation with 3 parameters, zero schema descriptions, no annotations, and no output schema requires substantial documentation. The 6-word description is inadequate for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description fails to explain what the 'id', 'text', and 'files' parameters represent (e.g., are 'text' and 'files' evidence IDs or content? Is 'id' the dispute ID?). No compensation for undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb 'Delete' and resource 'evidence from a Ryft dispute'. Distinguishes from sibling 'disputes.addEvidence' through inverse action, though does not explicitly name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus disputes.addEvidence, disputes.accept, or disputes.challenge. No mention of prerequisites (e.g., dispute state requirements) or workflow constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.getC
Get a Ryft dispute by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not indicate what happens if the ID is not found (404 vs null), whether the operation is idempotent, or what data the dispute object contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with the action and contains no redundant words. However, it is borderline underspecified for a tool with zero schema documentation and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation without an output schema, the description is minimally adequate. Clear gaps remain regarding error handling, the relationship to sibling dispute tools (accept, challenge, addEvidence), and the scope of returned dispute data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description minimally compensates by mentioning 'by id', indicating the parameter's purpose. However, it lacks details on ID format, examples, or constraints beyond the schema's 'minLength: 1'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and resource ('Ryft dispute') with the lookup mechanism ('by id'). However, it does not explicitly differentiate from the sibling 'disputes.list' tool, though 'by id' implicitly suggests single-record retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus 'disputes.list' or other dispute-related operations. No mention of prerequisites, such as needing the dispute ID from a prior list operation or webhook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disputes.listC
List Ryft disputes.
| Name | Required | Description | Default |
|---|---|---|---|
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to mention pagination behavior (despite 'startsAfter' and 'limit' parameters), filtering capabilities (timestamp range), or what data structure is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately front-loaded with the verb 'List', but three words is insufficient for a tool with 5 optional filtering/pagination parameters and no output schema. It is under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of 5 undocumented parameters and no output schema, the description is inadequate. It provides no context about filtering capabilities (date ranges), pagination tokens, or result ordering that the parameter names imply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across 5 parameters (date range, pagination, sorting), the description completely fails to compensate. It mentions none of the parameters or their meanings, leaving users to infer that startTimestamp/endTimestamp filter by date without any format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Ryft disputes' is essentially a tautology that restates the tool name (disputes.list). While it identifies the resource (Ryft disputes), it fails to distinguish from sibling operations like disputes.get (single retrieval) or explain the listing scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives. Given the existence of disputes.get for single retrieval, the description should explicitly clarify this retrieves multiple disputes, but it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events.getC
Get a Ryft event by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It fails to state whether this is read-only (though implied), what happens if the ID is not found, rate limits, or the structure of the response (no output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently structured and front-loaded with the core action. However, given the complete lack of schema documentation and annotations, the extreme brevity constitutes underspecification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter retrieval tool, the description covers the essential retrieval mechanism but leaves significant gaps: the accountId parameter is unexplained, and without annotations or an output schema, the lack of behavioral context (error handling, return structure) makes it minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for undocumented parameters. It only partially covers the 'id' parameter by mentioning 'by id', but provides no semantic information about the 'accountId' parameter (purpose, optionality implications, or format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), resource ('Ryft event'), and scope ('by id'), making the core function clear. However, it does not explicitly differentiate from sibling tool 'events.list' or explain what constitutes a 'Ryft event' in this domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies usage when a specific event identifier is known, but there is no explicit guidance on when to use this single-item retrieval versus 'events.list' for querying multiple events, nor are prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events.listD
List Ryft events.
| Name | Required | Description | Default |
|---|---|---|---|
| ascending | No | ||
| limit | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, yet provides zero information about pagination behavior, sorting criteria (despite 'ascending' parameter), rate limits, or data retention. It does not indicate whether results are real-time or cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (3 words), this is under-specification rather than effective conciseness. The single sentence fails to earn its place by providing insufficient information for an agent to correctly invoke a tool with 3 parameters and pagination logic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with 3 parameters (including pagination and filtering), zero annotation coverage, and no output schema, the description is grossly inadequate. It lacks filtering logic explanation, pagination model details, and return value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate for undocumented parameters. The description mentions nothing about the 'accountId' filter, 'limit' pagination, or 'ascending' sort order, leaving critical parameter semantics entirely undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Ryft events.' is essentially a tautology restating the tool name (events.list). While it identifies the domain ('Ryft'), it fails to distinguish this tool from sibling 'events.get' and provides no scope clarification (e.g., whether this returns all events or requires filtering).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus the sibling 'events.get' or other related tools. There are no prerequisites, filtering recommendations, or warnings about the unfiltered nature of the list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files.createC
Upload a file to Ryft.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| category | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacking annotations, the description carries the full burden but only discloses that a write/upload occurs. Missing: idempotency, file size limits, storage restrictions, return value structure, and whether the optional accountId parameter affects ownership or visibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (5 words) and front-loaded with the action. While not verbose, it is inappropriately sized given the lack of schema descriptions and annotations; the brevity constitutes underspecification rather than efficient precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a mutation tool handling categorized documents. With no output schema, no annotations, and zero schema descriptions, the description omits critical domain context (e.g., document categories) and operational constraints needed for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fails to compensate. It does not explain filePath (local vs remote?), the enum categories (Evidence, VerificationDocument, Report), or the optional accountId. Only loosely references 'file' which maps to the operation generally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Upload') and resource ('file') with destination ('Ryft'). However, it does not explicitly differentiate from sibling tools like files.get or files.list, though the verb choice implies distinct behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives (e.g., when to upload new files vs. retrieving existing ones), nor any prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files.getC
Get a file by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but fails to disclose behavioral traits such as whether the operation is read-only, what happens if the ID is not found, or what format the file is returned in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief and front-loaded, consisting of a single efficient sentence. However, its extreme brevity contributes to information gaps rather than optimal communication efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero schema descriptions, no annotations, and no output schema, the description fails to provide sufficient context for an agent to understand edge cases, optional parameters, or return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage. While the description mentions 'by id' which semantically clarifies the required id parameter, it completely omits the optional accountId parameter, leaving half the interface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool retrieves a file by identifier, which is clear. However, it minimally restates the tool name (files.get → 'Get a file') and lacks detail about the resource scope or format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like files.list or files.create, nor does it mention prerequisites such as requiring a valid file ID from prior operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files.listC
List files.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It fails to indicate whether this is read-only, what pagination style is used (though parameters suggest cursor-based with startsAfter), or what the return structure contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (2 words), so not verbose, but the single sentence does not earn its place as it merely restates the tool name without adding value. Appropriately sized but empty of content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 undocumented parameters and no output schema, the description should explain filtering, sorting, and pagination mechanics. It fails to provide sufficient context for an agent to construct valid queries or understand the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no compensation. It does not explain what 'category' filters, what 'ascending' sorts by, that 'limit' caps results at 100, or that 'startsAfter' is a pagination cursor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List files' is a tautology that restates the tool name (files.list). While it technically states the action, it fails to distinguish from siblings like files.get (which retrieves a specific file) or files.create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus alternatives. The description does not clarify the difference between listing files (plural) versus getting a specific file (files.get) or creating files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentMethods.deleteC
Delete a Ryft payment method.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States 'Delete' but fails to disclose if this is permanent, if it fails when the method is in use by subscriptions, or required permissions. Minimal safety context for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with active verb. No wasted words. However, extreme brevity leaves critical gaps given lack of annotations and schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a destructive mutation tool. Lacks coverage of error cases (e.g., payment method in use), reversibility, or side effects. With no output schema and 0% param coverage, description should provide more operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (id parameter undocumented). Description mentions 'payment method' but adds no syntax, format, or semantic details about the 'id' parameter itself. Fails to compensate for schema description gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Delete') and resource ('Ryft payment method'), distinguishing it from siblings like customers.delete or payouts.delete. However, it does not differentiate from other payment method operations (update/get).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus detaching a payment method from a customer, or prerequisites like ensuring no active subscriptions use this method. No alternative actions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentMethods.getC
Get a Ryft payment method by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, the description does not confirm this is safe/non-destructive, nor does it disclose error behaviors, authentication requirements, or rate limiting characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is appropriately front-loaded with the action verb and contains no redundant or wasted words. However, given the complete lack of annotations and schema descriptions, the extreme brevity may be insufficient rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero annotation coverage, zero schema descriptions, and no output schema, the description fails to compensate adequately for these documentation gaps. It omits expected return values, error scenarios, and the relationship between this tool and the broader payment methods workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description minimally compensates by indicating the 'id' parameter is used to look up the specific payment method ('by id'). However, it does not describe the ID format, whether it is a UUID, or provide examples to clarify the expected input beyond the schema's type and minLength constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and identifies the specific resource ('Ryft payment method') and scope ('by id'). However, it does not explicitly differentiate from sibling tools like 'customers.listPaymentMethods' or distinguish when to use this direct retrieval versus listing methods via customer endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., customers.listPaymentMethods), prerequisites (such as needing the ID from a previous list call), or error conditions (e.g., what happens if the ID is not found).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentMethods.updateC
Update a Ryft payment method billing address.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| billingAddress | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full disclosure burden. Only indicates mutation occurs ('Update'). Fails to clarify if billingAddress replaces the entire object or merges fields, doesn't describe error handling for invalid IDs, idempotency, or side effects. No mention of required fields within the nested billingAddress object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no wasted words. However, given the high complexity (nested object with 12+ fields) and zero schema documentation, this brevity represents under-specification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for the tool's complexity. With no output schema, 0% parameter coverage, no annotations, and a deeply nested billingAddress structure with ambiguous field names, the minimal description leaves critical gaps in understanding required fields and parameter relationships.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, description fails to compensate adequately. Mentions 'billing address' contextually but doesn't explain the 'id' parameter (presumably payment method ID), nor clarifies the confusing schema duplication (firstLine vs lineOne, secondLine vs lineTwo). Doesn't explain the nested required fields (city, postalCode, country).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Update') and resource ('payment method billing address') identifies the operation precisely. Specifies 'Ryft' as the context/brand, though this is unexplained. Distinguishes from sibling operations like paymentMethods.delete/get by specifying the update operation and billing address scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives (e.g., accounts.update, customers.update), nor prerequisites like needing the payment method ID from paymentMethods.get or customers.listPaymentMethods. No workflow context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.captureD
Capture a manually captured Ryft payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| amount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet the description discloses no behavioral details: it doesn't explain that this moves funds (financial impact), whether it's idempotent, what happens if amount is omitted (full capture?), or error conditions. The phrase 'manually captured' provides no meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief at six words, it is inappropriately terse given the complexity (financial operation) and complete lack of schema documentation. The 'manually captured' phrasing wastes space on confusing redundancy rather than adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely inadequate for a payment operation tool. No output schema, 0% input schema coverage, no annotations, and the description fails to compensate for any of these gaps. Critical context missing includes currency handling, partial vs full capture logic, and success/failure outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, yet the description mentions neither the 'id' parameter (what ID format? is it the session ID?) nor the 'amount' parameter (currency units? optional for full capture?). With zero schema documentation and no description compensation, parameter semantics are completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb ('Capture') and resource ('payment session'), but contains confusing phrasing ('manually captured') that suggests the session is already captured. This creates ambiguity about whether this performs a capture or operates on an already-captured session. It minimally distinguishes from siblings like 'refund' or 'void' by using the specific term 'capture'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like 'paymentSessions.refund', 'paymentSessions.void', or 'paymentSessions.continuePayment'. No mention of prerequisites (e.g., session state requirements) or whether this is for partial captures (implied by optional 'amount' param) versus full captures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.continuePaymentC
Continue a Ryft payment after a required action such as 3DS.
| Name | Required | Description | Default |
|---|---|---|---|
| clientSecret | Yes | ||
| threeDs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but fails to disclose critical behavioral traits: it doesn't state whether this operation is idempotent, what side effects occur (does it charge the card?), error handling for failed 3DS, or the return value structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, but given the 0% schema coverage and complex payment domain, this brevity constitutes under-specification rather than efficient design—it should be earning its place by adding necessary parameter and behavioral details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial operation handling 3DS authentication flows with nested objects and no output schema, the description is inadequate. It omits flow documentation, parameter details, and behavioral expectations necessary for safe agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description mentions '3DS' which loosely maps to the threeDs parameter but provides no semantics for the required clientSecret parameter or the expected structure/format of the threeDs object (additionalProperties: {} offers no guidance).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Continue') and resource ('Ryft payment'), and mentions the 3DS context which distinguishes this from sibling tools like create, capture, or void. However, it could more explicitly clarify the workflow position relative to paymentSessions.create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage timing ('after a required action such as 3DS'), but lacks explicit guidance on when NOT to use this versus alternatives like create or capture, and omits prerequisites like requiring a clientSecret from an initial session creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.createD
Create a Ryft payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| currency | Yes | ||
| customerEmail | No | ||
| customerId | No | ||
| paymentType | No | ||
| entryMode | No | ||
| captureFlow | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the mutation type ('Create'). It omits critical details like whether this initiates an immediate charge, requires subsequent capture calls, supports idempotency, or what errors may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and front-loaded with no waste, but it is inappropriately sized for the tool's complexity (8 parameters, 3 enums, nested objects). It suffers from under-specification rather than verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely inadequate for a complex financial mutation tool with no output schema and zero parameter documentation. The description fails to explain the payment session lifecycle, return values, or integration requirements (e.g., whether follow-up calls to capture/continuePayment are needed).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description fails to compensate by explaining any of the 8 parameters (amount, currency, entryMode enums, captureFlow semantics, metadata structure). It mentions neither required fields nor the purpose of critical business logic parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a Ryft payment session' is essentially a tautology that restates the tool name (paymentSessions.create) with minor spacing and the addition of 'Ryft' (the product name). It fails to distinguish what a payment session represents versus sibling operations like update, capture, or void.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use create versus the numerous sibling session operations (capture, continuePayment, refund, void, update) or prerequisites like customer existence. The description lacks any conditional logic or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.getC
Get a Ryft payment session by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It only indicates a read operation via 'Get' but fails to describe error conditions (e.g., ID not found), return value structure, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no redundant words. 'Ryft' provides useful domain context, and 'by id' maps directly to the required parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation, the description is minimally adequate. However, given the lack of output schema or annotations, it should ideally describe the returned payment session object or reference related operations like create/update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (the 'id' parameter has no description field). The description mentions 'by id' which acknowledges the parameter's existence but provides no additional semantic information such as ID format, constraints, or where the ID originates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('Ryft payment session'), and lookup method ('by id'), distinguishing it from sibling list/create/update operations. However, it lacks context about what a payment session represents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While 'by id' implicitly suggests retrieving a specific record versus listing multiple, there is no explicit guidance on when to use this tool versus paymentSessions.list or what to do if the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.getTransactionC
Get a payment session transaction by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| transactionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'Get' implies read-only but description omits error handling (404 behavior), rate limits, auth requirements, or whether this operation is idempotent. Insufficient for a data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is efficient and front-loaded with no wasted words. However, brevity is inappropriate for the complexity—two undocumented parameters require explanatory expansion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a tool with 2 required parameters and zero schema documentation. Fails to explain parameter relationships, output structure, or distinguish from similar sibling operations. 'Get by id' is insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage with two required ID fields ('id' and 'transactionId'). Description mentions 'by id' (singular) but fails to clarify which parameter is the payment session ID versus the transaction ID, leaving critical ambiguity unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb ('Get') and resource ('payment session transaction') but adds minimal detail beyond the tool name. Does not distinguish from sibling 'paymentSessions.listTransactions' (list vs single get) or clarify relationship to 'paymentSessions.get' (session vs transaction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus 'paymentSessions.listTransactions' or prerequisites like requiring a valid session ID. No 'when-not' or alternative guidance present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.listD
List Ryft payment sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No | ||
| accountId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to mention pagination behavior (despite limit/startsAfter parameters), date-range filtering capabilities (despite timestamp parameters), or what data is returned. Does not clarify if this is real-time or cached data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (4 words), this is under-specification rather than efficient conciseness. The single sentence communicates almost nothing beyond the tool name itself, failing to earn its place by providing actionable context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with 0% schema coverage and no output schema, the description is materially incomplete. It omits critical context about pagination, filtering, return structure, and error conditions required to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 6 parameters (timestamps, pagination, account filtering). The description adds no information about parameter semantics, formats, or relationships (e.g., that startTimestamp/endTimestamp create a range), leaving all inputs undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Ryft payment sessions' restates the tool name (tautology) and fails to distinguish this tool from siblings like paymentSessions.get (single retrieval) or paymentSessions.listTransactions (child resource listing). It mentions 'Ryft' (the provider) but adds no scoping details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this listing tool versus paymentSessions.get for specific session retrieval, or how to handle pagination with the limit/startsAfter parameters. No prerequisites or filtering logic is explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.listTransactionsC
List transactions for a payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. While 'List' implies read-only, it does not confirm non-destructive behavior, disclose pagination limits, explain transaction types returned, or describe the response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (6 words) and front-loaded, but inappropriate brevity given zero schema coverage and lack of annotations. Every sentence must earn its place; this one barely introduces the subject.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a financial transaction tool with zero annotations and no output schema. Missing critical context: parameter semantics, return value structure, pagination behavior, and sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description fails to compensate by explaining the 'id' parameter (presumably the payment session ID). No syntax hints or format examples provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the action ('List') and resource ('transactions for a payment session') but fails to distinguish from sibling tool 'paymentSessions.getTransaction' (singular vs plural/list scope) or clarify relationship to 'paymentSessions.list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus retrieving a specific transaction via 'getTransaction' or when pagination might be needed. No prerequisites or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.refundC
Refund a Ryft payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| amount | No | ||
| reason | No | ||
| refundPlatformFee | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It fails to mention idempotency, synchronous vs. asynchronous processing, reversibility, or financial side effects beyond the implied refund action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence wastes no words, but is insufficiently sized for the tool's complexity (financial operation with multiple optional parameters). It is front-loaded but under-delivers critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Severely inadequate for a high-stakes financial mutation with zero schema coverage and no output schema. Missing: partial refund logic, platform fee implications, idempotency guarantees, and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 4 undocumented parameters, the description must compensate but adds nothing. It doesn't clarify that `amount` enables partial refunds, what `refundPlatformFee` controls, or expected formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the core action (Refund) and resource (Ryft payment session), but fails to distinguish from similar sibling operations like `paymentSessions.void` or clarify refund scope (partial vs. full).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus `void` or `capture`, nor does it indicate that the `amount` parameter enables partial refunds or that `id` refers to the original payment session ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.updateC
Update a Ryft payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| amount | No | ||
| captureFlow | No | ||
| customerEmail | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing full disclosure burden on the description. It fails to mention behavioral traits such as whether updates trigger new authorizations, if amount changes require re-verification, or whether manual capture flows can be switched to automatic mid-session. No mutation warnings or prerequisites are documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is grammatically complete and contains no redundant words. However, extreme brevity results in under-specification rather than elegant conciseness. The structure is front-loaded but insufficiently dense for a 5-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 5-parameter mutation operation with 0% schema coverage and no output schema, the description is materially incomplete. It omits updatable field names, validation constraints (e.g., exclusiveMinimum for amount), and operational constraints that would be necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (5 undocumented parameters: id, amount, captureFlow, customerEmail, metadata). The description compensates by mentioning zero parameters. Critical semantics like 'captureFlow' enum values (Automatic vs Manual), 'metadata' key-value restrictions, or that 'id' is the session identifier are entirely absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Provides basic verb ('Update') and resource ('Ryft payment session'), establishing the core operation. However, it fails to distinguish from sibling tools like capture, refund, void, or continuePayment, which all modify payment session state in different ways. It also omits which specific fields can be updated (amount, captureFlow, customerEmail, metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains no guidance on when to use this tool versus siblings such as paymentSessions.capture, refund, or void. For a payment platform with multiple session-modifying operations, the description should clarify that this modifies session parameters (like amount or metadata) before final capture, but it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paymentSessions.voidC
Void a Ryft payment session.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to indicate whether the operation is reversible, idempotent, asynchronous, or what status changes occur to the payment session. For a financial mutation tool, this absence of safety and state-change information is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (5 words) and front-loaded with the action. While not wasteful, its extreme brevity contributes to informational inadequacy rather than efficient communication—it leaves critical gaps that sentences should have filled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial mutation tool with zero schema documentation, no annotations, and no output schema, the description is inadequately thin. It provides only the operation name without addressing side effects, error conditions, or return value structure necessary for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the description provides no parameter semantics whatsoever. While the single 'id' parameter is somewhat inferable from the tool name, the description does not compensate for the schema's lack of documentation by specifying what ID is required (format, source) or providing examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Void') and resource ('Ryft payment session'), clearly identifying the operation's target. However, it fails to differentiate from the sibling tool 'paymentSessions.refund', which is crucial for payment operations where void and refund have distinct temporal and financial implications (pre vs post-settlement).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like 'paymentSessions.refund', 'paymentSessions.cancel', or when a session is eligible to be voided (e.g., authorization vs captured state). The description lacks prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payoutMethods.createC
Create a Ryft payout method for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| type | Yes | ||
| displayName | No | ||
| currency | Yes | ||
| country | Yes | ||
| bankAccount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions creation but fails to clarify persistence, reversibility (despite 'payoutMethods.delete' existing), idempotency, validation rules, or what the operation returns. This leaves significant behavioral gaps for a financial mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and free of redundancy. However, given the complexity of the nested banking schema, the description is arguably undersized—though this impacts completeness more than conciseness. The sentence itself earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex financial tool with nested objects (bankAccount containing address fields), zero schema descriptions, no annotations, and no output schema, a single sentence is inadequate. It lacks explanation of what a 'payout method' entails, valid 'type' values, or banking standards supported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description completely fails to compensate. It does not mention any parameters (accountId, type, currency, nested bankAccount structure) or explain what values are expected for the financial/banking fields, leaving all 6 parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Create'), resource ('Ryft payout method'), and scope ('for an account'), making the basic purpose clear. However, it does not explicitly differentiate from sibling tools like 'payouts.create' (which creates the payout itself vs. the method for receiving it).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, prerequisites (e.g., account verification requirements), or relationships to sibling operations like 'payoutMethods.update'. The description stands alone without contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payoutMethods.deleteC
Delete a Ryft payout method.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| payoutMethodId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, yet the description fails to disclose critical behavioral traits for a destructive operation: it omits whether deletion is permanent, immediate, or asynchronous, and whether it affects pending payouts or requires specific account permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the single sentence is not verbose, it is inappropriately brief for a destructive financial operation with undocumented parameters; the description undershoots the necessary detail level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a destructive tool: no annotations cover safety, no output schema is described, parameters lack documentation, and there are no warnings about side effects or required verification steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate by documenting the required 'accountId' and 'payoutMethodId' parameters, but it mentions neither their existence nor their semantics (e.g., UUID formats, lookup scopes).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb (Delete) and resource (Ryft payout method), but lacks differentiation from the similar sibling 'paymentMethods.delete' and omits scope details like whether deletion is permanent or immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, prerequisites (e.g., account status), or warnings about irreversible consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payoutMethods.getC
Get a Ryft payout method by id.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| payoutMethodId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. While 'Get' implies a read-only operation, it does not confirm safety, idempotency, or error behaviors (e.g., what happens if the ID is not found). Lacks behavioral specifics beyond the basic operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently structured and front-loaded with no redundant words. However, given the complete lack of schema documentation, the brevity contributes to under-specification rather than being a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a tool with zero schema descriptions, no annotations, and no output schema. While the core operation is stated, critical context about parameters, return values, and usage patterns is missing. Falls below minimum viability for a production MCP tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for both parameters. It only implicitly references 'payoutMethodId' via 'by id', leaving 'accountId' completely unexplained. The agent has no semantic guidance on what constitutes a valid accountId or its relationship to the payout method.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Get'), specific resource ('Ryft payout method'), and scope ('by id'). The 'by id' phrasing effectively distinguishes this from the sibling 'payoutMethods.list' operation without explicitly naming it, though an explicit comparison would strengthen this further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this single-item retrieval versus the sibling 'payoutMethods.list'. Does not mention prerequisites (e.g., needing to obtain the ID from a previous list call) or error conditions (e.g., invalid ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payoutMethods.listC
List payout methods for a Ryft account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to mention pagination behavior (despite limit/startsAfter parameters in schema), return format, or whether results are cacheable/filterable beyond the implied account scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief at 6 words, avoiding redundancy, but severely under-specified for a 4-parameter tool with pagination controls. Every word earns its place, yet the appropriate size for this complexity would include parameter and pagination context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for the tool's complexity: four parameters including pagination cursors, zero schema documentation, no output schema, and no annotations. The description should explain the pagination mechanism and required account context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no compensation—it fails to explain the pagination semantics of 'limit'/'startsAfter'/'ascending' or clarify the required 'accountId' parameter beyond implying it through 'Ryft account'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name ('List payout methods') and adds minimal scope ('for a Ryft account'), identifying the basic action and resource but lacking specificity about what constitutes a payout method or how it differs from sibling paymentMethods.* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus payoutMethods.get (single retrieval) or how it relates to payouts.list. No mention of prerequisites or required permissions for accessing account payout methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payoutMethods.updateC
Update a Ryft payout method.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| payoutMethodId | Yes | ||
| displayName | No | ||
| bankAccount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. While 'Update' implies mutation, the description fails to disclose whether this is a partial or full replacement, what validation occurs on the bankAccount object, or error conditions like missing payout method IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (4 words) and front-loaded, but given the complexity of the nested input schema with four parameters, this is under-specified rather than appropriately concise. However, it contains no redundant or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial mutation tool with complex nested parameters (bankAccount.address), zero schema coverage, no annotations, and no output schema, the description provides insufficient context to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description lists no parameters or their semantics. It does not explain the relationship between accountId and payoutMethodId, nor the structure of the nested bankAccount object (which contains address sub-objects), leaving all four parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb (Update) and resource (Ryft payout method), but fails to differentiate from siblings such as payoutMethods.create or paymentMethods.update, and does not clarify what constitutes a 'payout method' in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives (e.g., create vs update), nor any mention of prerequisites like existing payout method verification or account requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payouts.createC
Create a Ryft payout for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| amount | Yes | ||
| currency | Yes | ||
| payoutMethodId | Yes | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. While 'Create' implies a write operation, it omits critical behavioral details: financial side effects, idempotency, async processing vs synchronous completion, cancellation policies, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently structured and front-loaded, but given the tool's complexity (5 parameters, nested objects, mutation), it is inappropriately brief rather than effectively concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for complexity: no output schema, 0% parameter documentation, nested metadata object, and high-value mutation (financial payout). Description misses return value structure, error conditions, and currency handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0 description coverage and complex parameters (amount constraints, nested metadata object, 3-letter currency). Description mentions 'account' (mapping to accountId) but fails to document the other 4 required/optional parameters, units (cents?), or the critical payoutMethodId reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the core action (Create) and resource (Ryft payout) with scope (for an account), but fails to distinguish from siblings like payouts.list or explain relationship to payoutMethods.create/transfer tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, prerequisites (e.g., requiring a valid payoutMethodId from payoutMethods first), or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payouts.getC
Get a Ryft payout by id.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| payoutId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, the description fails to confirm safety, specify error conditions, return format, or authentication requirements beyond the implicit parameter structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (five words) and contains no redundancy. However, given the lack of annotations and schema descriptions, this brevity contributes to under-specification rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two completely undocumented parameters (0% coverage), no output schema, and no annotations, the description is incomplete. It fails to document the accountId parameter or explain what constitutes a 'Ryft payout'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for both parameters. It only implicitly references 'payoutId' via 'by id' while completely omitting 'accountId', leaving one required parameter undocumented. This is insufficient compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Get) and resource (Ryft payout) and includes the scope 'by id', making the basic operation clear. However, it does not explicitly differentiate from sibling tool 'payouts.list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'payouts.list' or prerequisites such as needing an accountId. It states only what the tool does, not when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payouts.listC
List Ryft payouts for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While 'List' implies a read-only operation, the description fails to disclose pagination behavior, sorting behavior, or what data is returned. It doesn't address rate limits, idempotency, or safety characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is appropriately front-loaded with the verb and contains no redundant information. However, brevity crosses into underspecification given the tool's complexity with 6 parameters including pagination controls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters (including pagination cursors and timestamp ranges) and no output schema or annotations, the description is inadequate. It omits essential context about date filtering, pagination mechanics, and return values that an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across 6 parameters, the description must compensate significantly. It only implicitly references 'account' (accountId) but provides no context for startTimestamp/endTimestamp, ascending, limit, or startsAfter, leaving critical pagination and filtering parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('Ryft payouts'), and correctly scopes the operation to 'an account' (matching the required accountId parameter). However, it doesn't explicitly distinguish this from sibling tool payouts.get (single retrieval) or mention the date-range filtering capability evident in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this list operation versus payouts.get, nor does it explain the pagination workflow (limit/startsAfter) or timestamp filtering. It lacks prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons.createC
Create a Ryft person for a business account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| firstName | Yes | ||
| middleNames | No | ||
| lastName | Yes | ||
| Yes | |||
| dateOfBirth | Yes | ||
| countryOfBirth | No | ||
| gender | Yes | ||
| nationalities | Yes | ||
| address | Yes | ||
| phoneNumber | Yes | ||
| businessRoles | Yes | ||
| documents | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. While 'Create' implies a write operation, the description reveals nothing about idempotency, validation rules, side effects, or return values. It does not indicate whether the operation is atomic or what happens if the person already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of seven words with no redundancy, which technically meets conciseness standards. However, given the high complexity (14 parameters, nested objects), this brevity constitutes under-specification rather than efficient communication—the description is front-loaded but severely undersized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 14 parameters, 10 required fields, and no output schema or annotations, the description is insufficient. It lacks overview information about what constitutes a valid person record, ignores the nested document structure requirements, and provides no error context or reference to acceptable values for enumerated fields like 'gender' or 'businessRoles'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across 14 parameters—including complex nested objects like 'address' (with duplicate line fields) and 'documents'—the description fails to compensate for the lack of schema documentation. Beyond implying 'accountId' through 'business account', it provides no guidance on required fields, valid formats (e.g., dateOfBirth format), or the purpose of 'businessRoles'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ("Create"), resource ("Ryft person"), and scope ("for a business account"), which identifies the tool's basic function. However, it fails to explain what a 'person' represents in this context (e.g., beneficial owner, representative) or distinguish when to use this versus 'customers.create' or 'persons.update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'persons.update', nor does it mention prerequisites (e.g., that the business account must exist first). There are no explicit when/when-not conditions or workflow context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons.deleteC
Delete a Ryft person.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| personId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. While 'Delete' implies destruction, it fails to disclose whether this is a soft or hard delete, if associated data (e.g., payment methods) are cascaded, or if the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief at four words, it avoids wordiness but is underspecified for a destructive operation with undocumented parameters. The single sentence does earn its place by stating core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with zero schema descriptions and no output schema, the description is insufficient. It lacks behavioral specifics, parameter explanations, and side effect disclosure necessary for safe agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both accountId and personId. The description mentions neither parameter nor their relationship to the person being deleted, failing to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (Ryft person), distinguishing it from sibling tools like customers.delete or paymentMethods.delete. However, it does not elaborate on what constitutes a 'Ryft person' within the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives (e.g., persons.update to disable vs delete), nor prerequisites like person existence or account ownership verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons.getC
Get a Ryft person by id.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| personId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose error behavior (404 vs 403), authentication requirements, or what data the 'person' contains. 'Get' implies read-only but lacks confirmation of idempotency or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with no filler. Front-loaded with verb and resource. However, breverity crosses into under-specification given lack of supporting annotations and schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a 2-parameter required tool with no output schema. Missing accountId context crucial for multi-tenant APIs. Fails to clarify relationship between 'persons' and 'customers' resources present in sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description mentions 'by id' which maps to personId, providing minimal semantic value. Completely omits accountId despite it being a required scoping parameter, leaving critical parameter unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific action (Get), resource (Ryft person), and lookup method (by id). Distinguishes from sibling persons.list via 'by id' implying single-record retrieval. However, 'Ryft person' is domain jargon not explained, and relationship to sibling customers.get is unclear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this vs persons.list or customers.get. The 'by id' phrase implies usage when a specific ID is known, but fails to address the accountId requirement or prerequisites for valid invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons.listC
List Ryft persons for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose read-only safety, pagination behavior (despite having cursor parameters startsAfter/limit), rate limits, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words and front-loaded information, but under-specification for a 4-parameter tool with complex pagination makes it insufficient rather than appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 undocumented parameters, no output schema, and no annotations, the description should explain the cursor-based pagination pattern and resource semantics, but leaves critical operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. While 'for an account' hints at the required accountId parameter, the description completely ignores the pagination parameters (limit, startsAfter) and sorting flag (ascending), offering no syntax or semantic guidance beyond the schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (List) and resource (Ryft persons) with scope (for an account), but fails to distinguish from siblings like persons.get (which retrieves a single person) or clarify what distinguishes a 'person' from a 'customer' in this API context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this listing tool versus persons.get for individual retrieval, nor any mention of when pagination parameters are required or recommended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons.updateD
Update a Ryft person.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| personId | Yes | ||
| firstName | No | ||
| middleNames | No | ||
| lastName | No | ||
| No | |||
| dateOfBirth | No | ||
| countryOfBirth | No | ||
| gender | No | ||
| nationalities | No | ||
| address | No | ||
| phoneNumber | No | ||
| businessRoles | No | ||
| documents | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Update' but fails to specify whether this is a partial update (PATCH) vs full replacement, whether it's idempotent, or error behaviors when the person doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (3 words), this is under-specification rather than efficient conciseness. Every sentence should earn its place, but here the single sentence provides minimal value beyond the tool name itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 15 parameters, complex nested objects, no annotations, and no output schema, a 3-word description is completely inadequate. It omits critical details about the update pattern, field mutability, and response handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage across 15 parameters including complex nested objects (address, documents). The description completely fails to compensate for this gap, providing no information about required identifiers (accountId, personId) versus optional updateable fields, expected formats, or validation constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Update a Ryft person' essentially restates the tool name (persons.update) with minimal added context. While it identifies the resource type, it lacks specificity about scope or updatable fields and fails to differentiate from sibling CRUD operations (persons.create, persons.get).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides no guidance on when to use this tool versus siblings (e.g., persons.create for new records), nor does it mention prerequisites like the person needing to exist or requiring accountId/personId identifiers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platformFees.getC
Get a Ryft platform fee by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to indicate what happens if the ID is not found (error vs null), what the return payload contains, or whether this operation is idempotent/read-only (though implied by 'Get', it is not stated).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. However, it may be overly terse given the lack of annotations and output schema, leaving insufficient room for necessary behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter retrieval tool, the description covers the basic operation. However, given the absence of an output schema, parameter descriptions, and annotations, the description should ideally include more context about the return value or error conditions to be considered complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the schema provides no parameter descriptions. The description adds minimal semantic value by stating 'by id', which clarifies that the 'id' parameter is used for lookup. However, it does not describe the ID format, constraints (beyond minLength 1), or where to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('Ryft platform fee') and includes the scope modifier 'by id', which effectively distinguishes it from the sibling tool 'platformFees.list'. However, it does not explain what constitutes a 'platform fee' in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (platformFees.list, platformFees.getRefunds) or prerequisites like obtaining the ID from a previous list call. No explicit when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platformFees.getRefundsC
List refunds for a Ryft platform fee.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description fails to disclose pagination behavior, filtering capabilities, what data is returned, rate limits, or authorization requirements. It mentions the domain (Ryft platform fee) but no operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 7 words, front-loaded with the action verb, and contains no redundancy or filler. However, it errs on the side of under-specification rather than optimal information density, lacking necessary context that would make it truly effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no annotations, and no output schema, the description is insufficiently complete. A single sentence cannot adequately document the parameter purpose, return structure, and behavioral characteristics needed when structured metadata is absent. The description should compensate for the lack of schema descriptions but does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, placing full burden on the description. The phrase 'for a Ryft platform fee' implies the 'id' parameter refers to a platform fee identifier, but the description does not explicitly document the parameter name, expected format, or that it is required. It adds minimal semantic value beyond the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource ('refunds for a Ryft platform fee'). It implicitly distinguishes from sibling platformFees.get (which retrieves the fee itself) and paymentSessions.refund (which likely creates refunds) by focusing on listing refunds for a specific platform fee. However, it lacks explicit differentiation stating that this is a retrieval operation versus the creation operation in paymentSessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, prerequisites for use (e.g., needing a valid platform fee ID first), or when not to use it. There is no mention that this retrieves existing refunds rather than creating new ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platformFees.listC
List Ryft platform fees.
| Name | Required | Description | Default |
|---|---|---|---|
| ascending | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'List' implies read-only access, the description does not confirm safety, disclose pagination behavior (despite the 'limit' parameter), indicate what fields are returned, or mention rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (4 words), which prevents bloat, but it is under-specified rather than efficiently concise. Given the lack of schema documentation and annotations, this brevity represents insufficient coverage rather than appropriate sizing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and schema parameter descriptions, the description should provide comprehensive context. It fails to explain what 'platform fees' represent, what data structure is returned, or how pagination behaves, leaving the agent with minimal operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate by explaining parameter semantics. It fails entirely—the description does not explain what 'ascending' sorts by (date, amount, ID?) or that 'limit' controls pagination page size, leaving both parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (List) and resource (Ryft platform fees), providing basic purpose identification. However, it fails to distinguish from sibling tool 'platformFees.get' (which retrieves a specific fee by ID) or clarify that this returns multiple records without filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus 'platformFees.get' for retrieving specific fees, or when to use 'platformFees.getRefunds'. There are no stated prerequisites, filtering limitations, or workflow recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ryft.healthA
Show the Ryft MCP server configuration state without revealing secrets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The phrase 'without revealing secrets' adds crucial safety context beyond the schema, explicitly guaranteeing that sensitive credentials won't be exposed in the output—critical information for an agent evaluating tool safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single efficient sentence with zero waste. The safety-critical clause 'without revealing secrets' earns its place by addressing a key agent concern. Information is front-loaded with the action verb immediately followed by the target resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no annotations, no output schema), the description is appropriately complete. It identifies what is returned (configuration state) and what is excluded (secrets), which is sufficient for a diagnostic health endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains zero parameters (100% coverage trivially). Per rubric guidelines, zero parameters warrants a baseline score of 4. The description does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show') and resource ('Ryft MCP server configuration state'). While 'Show' is slightly less precise than 'Retrieve', the scope is unambiguous and implicitly distinguishes this diagnostic tool from the numerous operational siblings (accounts, payments, etc.) by focusing on server metadata rather than business entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context through the 'health' name and 'configuration state' reference, suggesting diagnostic use. However, it lacks explicit guidance on when to invoke this versus operational tools (e.g., 'use for connectivity verification' or 'debugging configuration issues').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.cancelC
Cancel a Ryft subscription using the correct lifecycle endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose whether cancellation is immediate/end-of-period, irreversible, triggers refunds, or requires specific permissions. Only implies mutation through the verb 'Cancel'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is appropriately brief, but includes low-value implementation detail ('lifecycle endpoint') that doesn't help an AI agent understand when to select the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Insufficient for a destructive operation with undocumented parameters. Missing: parameter semantics (what is 'id'?), side effects (billing impact, immediate vs scheduled), and sibling differentiation. No output schema exists, but that doesn't excuse missing input documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (id parameter undocumented). Description fails to compensate—it mentions 'Cancel a Ryft subscription' but doesn't specify that the 'id' parameter is the subscription identifier, nor its format constraints beyond minLength.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Cancel) and resource (Ryft subscription) clearly. However, 'using the correct lifecycle endpoint' is implementation jargon that doesn't clarify purpose, and it doesn't distinguish when to use cancel versus update (e.g., termination vs modification).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus subscriptions.update, or prerequisites such as subscription status requirements. No alternatives or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.createC
Create a Ryft subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | ||
| paymentMethodId | No | ||
| description | No | ||
| billingCycleTimestamp | No | ||
| amount | Yes | ||
| currency | Yes | ||
| interval | Yes | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided and description discloses no behavioral traits: omits whether creation triggers immediate billing, idempotency semantics, required resource relationships, or mutation side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence avoids bloat, but inappropriate brevity for an 8-parameter nested schema; every word earns its place but there aren't enough of them to support the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Woefully incomplete for a financial creation tool with no output schema and zero annotations; missing critical context about billing cycle behavior, currency constraints, and retry logic that an agent needs to invoke safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage with 8 complex parameters including nested interval objects; description compensates with nothing—no valid values, formats (ISO 4217 for currency?), or semantics for billingCycleTimestamp, interval unit types, or optional versus required nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb (Create) and resource (Ryft subscription) but remains vague about the subscription model—fails to clarify this sets up recurring billing with intervals versus one-time payments (paymentSessions) or distinguish from subscriptions.update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Zero guidance on when to use versus subscriptions.update, prerequisites (e.g., customer must exist first), or required payment method attachment timing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.getC
Get a Ryft subscription by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. It fails to confirm this is read-only/safe, does not mention potential errors (not found, invalid ID format), or disclose rate limiting concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at six words. Action-first structure is appropriate. However, given the lack of schema descriptions and output schema, this verges on under-specification rather than elegant minimalism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Barely adequate for a simple retrieval tool. With no output schema and zero parameter schema descriptions, the description should ideally describe the return value (subscription object) and parameter constraints, but does neither.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description mentions 'by id' which maps to the required parameter, but provides no details on ID format, valid examples, or semantic meaning beyond the implicit 'identifier for subscription'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Get) and resource (Ryft subscription) with scope identifier (by id). The phrase 'by id' implicitly distinguishes from sibling subscriptions.list which retrieves multiple, though it doesn't explicitly contrast singular vs. plural retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus subscriptions.list or other siblings. No mention of prerequisites (needing a valid subscription ID) or error conditions (e.g., 404 if ID not found).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.getPaymentSessionsC
List payment sessions for a Ryft subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only indicates this is a list operation but fails to mention pagination behavior (despite limit/startsAfter parameters), result ordering, or data freshness. It does not contradict the likely read-only nature, but provides minimal safety/behavior context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently worded without redundancy, meriting a conciseness score of 3. However, for a 6-parameter tool with zero schema documentation, this brevity is inappropriate and leaves significant gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with complex filtering (timestamps, pagination via limit/startsAfter) and 0% schema coverage, the description is inadequate. It lacks required parameter documentation, output format details, and pagination guidance necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate. It completely fails to do so. The critical required parameter 'id' is undocumented (is it the subscription ID or session ID?), and timestamp fields lack context for what they filter (creation vs payment date). No parameter explanations are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb 'List' and resource 'payment sessions' and scopes the operation to 'a Ryft subscription', which distinguishes it from the generic paymentSessions.list sibling. However, it could be more explicit about the subscription ID filter mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus the sibling paymentSessions.list or paymentSessions.get. While 'for a Ryft subscription' implies subscription-specific context, it does not clarify the workflow or prerequisites (e.g., having a subscription ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.listD
List Ryft subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| startTimestamp | No | ||
| endTimestamp | No | ||
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet description fails to disclose read-only nature, pagination behavior (implied by startsAfter/limit parameters), result ordering, or timestamp units. Absence of destructive behavior disclosure is critical gap for a financial API tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (3 words) but underspecified rather than elegantly concise. Not front-loaded with critical behavioral constraints; presents as sentence fragment rather than structured guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Severely inadequate for a 5-parameter list operation with no output schema or annotations. Fails to explain pagination mechanics, result set characteristics, or timestamp filtering capabilities essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 5 undocumented parameters including timestamp ranges and pagination cursors. Description provides zero compensation—no mention of Unix timestamps, cursor-based pagination, or filtering semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States basic action (List) and resource (Ryft subscriptions) but lacks specificity regarding scope or differentiation from sibling 'subscriptions.get' or 'subscriptions.getPaymentSessions'. Minimal viable description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus retrieving individual subscriptions via subscriptions.get, or how it relates to subscription management workflows. No mention of pagination strategy despite cursor parameters existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscriptions.updateD
Update a Ryft subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| description | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers none. It does not clarify whether updates are partial (PATCH-like) or full replacement, whether the operation is idempotent, what validation occurs, or what happens to active payment sessions when subscription metadata changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief at four words, the single sentence fails to earn its place by providing actionable information beyond the tool name. It is under-specified rather than efficiently structured; front-loading critical constraints or behavioral notes would better serve agent selection despite the brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested object parameters (metadata), zero schema documentation, no output schema, and no annotations, the description is completely inadequate. It should explain updatable fields, validation rules, and side effects given the complexity implied by the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fails to compensate by explaining the three parameters (id, description, metadata). It does not indicate that 'description' is a human-readable label, that 'metadata' accepts arbitrary key-value pairs, or that 'id' is the subscription identifier—leaving the agent to infer semantics from property names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a Ryft subscription' is a tautology that restates the tool name (subscriptions.update) with minimal added context. While it identifies the resource type (Ryft subscription), it fails to specify what aspects can be updated or distinguish from sibling operations like subscriptions.create or subscriptions.cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives such as subscriptions.cancel (for termination) or subscriptions.create (for new subscriptions). The agent receives no signal about prerequisites (e.g., subscription state requirements) or when updates are permitted versus forbidden.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfers.createD
Create a Ryft transfer.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| currency | Yes | ||
| source | No | ||
| destination | No | ||
| reason | No | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to mention whether transfers are reversible, synchronous/asynchronous, idempotent, or what side effects occur (balance changes, transaction records).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (4 words), this is under-specification rather than effective conciseness. The single sentence merely echoes the tool name without adding actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with nested objects, 0% schema coverage, no annotations, and no output schema, the description is grossly inadequate. A financial mutation tool requires explicit behavioral and parameter documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no compensation. It fails to explain what 'source' and 'destination' objects represent, the purpose of 'reason' or 'metadata', or that amount is in smallest currency units.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a Ryft transfer' restates the tool name (tautology) and fails to specify what a transfer actually does (e.g., moving funds between accounts). It does not distinguish from sibling tools like transfers.get or transfers.list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like payouts.create, or prerequisites such as account verification requirements. No mention of when transfers might be rejected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfers.getB
Get a Ryft transfer by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Fails to disclose read-only nature, error behavior when ID is invalid/not found, or return value structure. 'Get' implies retrieval but lacks safety guarantees or side-effect warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely efficient at 6 words. Front-loaded with verb 'Get', zero filler. Despite brevity, every word serves the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool but gaps remain: no output schema means return fields are undisclosed; no error handling described; 0% schema coverage leaves parameter undocumented beyond type. Minimum viable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (parameter 'id' has no description). Description partially compensates by stating the ID is the lookup key ('by id'), explaining the parameter's purpose. However, lacks format constraints, example values, or source guidance (where to obtain valid IDs).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Get' and resource 'Ryft transfer', with 'by id' indicating lookup method. Distinguishes from siblings 'transfers.create' (mutation) and 'transfers.list' (collection) through the singular 'id' qualifier, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use versus 'transfers.list' (for when you lack an ID) or error conditions. No prerequisites mentioned despite being a lookup tool requiring a valid identifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfers.listC
List Ryft transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| ascending | No | ||
| limit | No | ||
| startsAfter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. While 'List' implies read-only access, the description omits critical behavioral context: pagination behavior (despite presence of limit/startsAfter parameters), sort order implications, and what constitutes a 'transfer' in this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While brief (3 words), this constitutes underspecification rather than valuable conciseness. No front-loaded value; the extreme brevity forces reliance on parameter names alone, which are themselves undocumented.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a 3-parameter listing tool with no output schema and no annotations. Fails to explain pagination mechanics, filtering capabilities, or return structure that an agent needs to properly invoke and handle results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description fails to compensate by explaining the three parameters: 'ascending' (sort direction), 'limit' (page size, max 100), or 'startsAfter' (cursor/pagination token).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses clear verb 'List' and specific resource 'Ryft transfers', identifying the domain (Ryft) not present in the tool name. However, it fails to distinguish from sibling tool 'transfers.get' (retrieve single vs. list multiple).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus siblings like 'transfers.get' or 'transfers.create', nor does it mention required permissions or prerequisites for listing transfers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhooks.createC
Create a Ryft webhook endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| active | Yes | ||
| eventTypes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'Create' implies mutation but lacks disclosure of validation behavior (URL verification), idempotency, rate limits, or that this likely returns a webhook secret that must be stored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is efficient in isolation, but undersized given the information deficit. Lacks front-loaded critical details (e.g., return value importance) that would earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a resource creation tool with 3 undocumented parameters and no output schema, the description is dangerously thin. No mention of returned webhook secrets, signature validation requirements, or the irreversible nature of secret exposure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet description compensates with nothing. While 'url' and 'active' are self-evident from names, 'eventTypes' is completely opaque—no hint as to valid event strings or syntax, despite this being critical for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clear verb 'Create' and resource 'Ryft webhook endpoint', but lacks sibling differentiation (no distinction from webhooks.update) and omits domain context (e.g., that this registers a URL to receive event notifications).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use versus alternatives (create vs update), prerequisites (e.g., URL must be HTTPS and reachable), or whether duplicate URLs are permitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhooks.deleteC
Delete a Ryft webhook endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure but only states that deletion occurs. It fails to specify if the deletion is permanent, immediate, idempotent, or if it affects in-flight webhook deliveries. It implies mutability but lacks critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with the verb, contains no redundancy, and efficiently communicates the core operation. Its brevity is appropriate in principle, though the lack of supporting detail creates gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero schema descriptions and no annotations, the description is insufficient for a destructive operation. It omits critical details about the required identifier, confirmation behavior, and side effects, leaving the agent underspecified despite the tool's simple signature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (the 'id' parameter is undocumented in the schema), yet the description fails to compensate by explaining what the 'id' parameter represents (e.g., 'the webhook endpoint ID to delete'). It adds no parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('Ryft webhook endpoint'), providing clear scope. However, it does not explicitly differentiate from sibling tools like 'webhooks.update' (which might disable rather than delete), so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives (e.g., when to delete vs. update a webhook) or any prerequisites. The agent is given no criteria to select this tool aside from the generic intent to delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhooks.getC
Get a Ryft webhook by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only indicates this is a read operation via the verb 'Get'. It fails to mention authentication requirements, rate limits, what constitutes a valid Ryft ID format, or what happens when the ID is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at six words with no wasted space, appropriately front-loaded with the action and resource. However, it verges on underspecification given the lack of annotations and output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter retrieval tool without output schema or annotations, the description provides the minimum viable context to invoke the tool. However, it lacks completeness regarding return value structure, error scenarios, and parameter details that would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage (the 'id' parameter is undocumented in the schema). The description mentions 'by id', establishing the parameter's purpose as the lookup key, but does not describe the ID's format, constraints, or provide examples to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ('Get'), resource ('Ryft webhook'), and scope ('by id'), which effectively communicates the tool's purpose. However, it does not explicitly differentiate from the sibling 'webhooks.list' tool (which retrieves multiple webhooks) beyond the implicit singular verb form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives (e.g., when you have a specific ID vs. when to scan with webhooks.list), nor does it mention prerequisites or error conditions such as 'webhook not found'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhooks.listB
List Ryft webhook endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'List' implies a read operation, the description fails to confirm safety (read-only, non-destructive), mention pagination behavior, or indicate the scope of returned data (e.g., all webhooks vs. filtered).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at only 4 words. While appropriately brief for a zero-parameter tool, it marginally exceeds the threshold of underspecification given the lack of output schema and annotations—every word earns its place, but additional context is needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description provides the minimum viable information. It adequately identifies the operation but fails to clarify the return structure (array of webhook objects) or distinguish it from sibling retrieval operations, leaving gaps an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains zero parameters, which per scoring guidelines establishes a baseline of 4. The description correctly implies no filtering is available by omitting any parameter references.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'Ryft webhook endpoints', making the basic purpose clear. However, it misses the opportunity to distinguish this from the sibling 'webhooks.get' tool (singular retrieval vs. collection listing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus 'webhooks.get' or other webhook operations. It does not mention prerequisites (e.g., needing active webhooks) or if this retrieves all webhooks across the account or only active ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhooks.updateC
Update a Ryft webhook endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| active | Yes | ||
| eventTypes | Yes | ||
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to specify whether this is a partial or full replacement update, what happens to unspecified fields, validation rules, or error conditions like attempting to update a non-existent webhook.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is appropriately brief and lacks redundancy, but is arguably under-specified given the complexity. It efficiently conveys the basic purpose but wastes the opportunity to front-load critical usage constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters with zero schema documentation, no output schema, and no annotations, the description fails to provide sufficient context for an update mutation operation. Missing field descriptions, behavioral details, and error handling guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for all 4 required parameters, yet the description provides no compensatory information about what 'url', 'active', 'eventTypes', or 'id' represent, their formats, or why all four are required for the update.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the basic action (Update) and resource (Ryft webhook endpoint), but lacks specificity about what aspects can be updated. It minimally distinguishes from siblings (webhooks.create/delete/get) by verb choice alone without elaborating on the update scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use update versus delete/recreate, or prerequisites such as needing to retrieve the webhook ID via webhooks.get or webhooks.list first. No mention of when updates take effect or idempotency considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
69 tool updates
v0.1.0- First observed
accountLinks.generateTemporary - First observed
accounts.create - First observed
accounts.createAuthorizationLink - First observed
accounts.get - First observed
accounts.update - First observed
accounts.verify - First observed
balances.list - First observed
balanceTransactions.list - First observed
customers.create - First observed
customers.delete - First observed
customers.get - First observed
customers.list - First observed
customers.listPaymentMethods - First observed
customers.update - First observed
disputes.accept - First observed
disputes.addEvidence - First observed
disputes.challenge - First observed
disputes.deleteEvidence - First observed
disputes.get - First observed
disputes.list - First observed
events.get - First observed
events.list - First observed
files.create - First observed
files.get - First observed
files.list - First observed
paymentMethods.delete - First observed
paymentMethods.get - First observed
paymentMethods.update - First observed
paymentSessions.capture - First observed
paymentSessions.continuePayment - First observed
paymentSessions.create - First observed
paymentSessions.get - First observed
paymentSessions.getTransaction - First observed
paymentSessions.list - First observed
paymentSessions.listTransactions - First observed
paymentSessions.refund - First observed
paymentSessions.update - First observed
paymentSessions.void - First observed
payoutMethods.create - First observed
payoutMethods.delete - First observed
payoutMethods.get - First observed
payoutMethods.list - First observed
payoutMethods.update - First observed
payouts.create - First observed
payouts.get - First observed
payouts.list - First observed
persons.create - First observed
persons.delete - First observed
persons.get - First observed
persons.list - First observed
persons.update - First observed
platformFees.get - First observed
platformFees.getRefunds - First observed
platformFees.list - First observed
ryft.health - First observed
subscriptions.cancel - First observed
subscriptions.create - First observed
subscriptions.get - First observed
subscriptions.getPaymentSessions - First observed
subscriptions.list - First observed
subscriptions.update - First observed
transfers.create - First observed
transfers.get - First observed
transfers.list - First observed
webhooks.create - First observed
webhooks.delete - First observed
webhooks.get - First observed
webhooks.list - First observed
webhooks.update
TDQS
Every tool has a clearly distinct purpose with no ambiguity. Tools are organized by resource type (accounts, customers, disputes, etc.) with specific CRUD operations, making it easy to distinguish between them. The naming convention clearly indicates both the resource and action, preventing misselection.
The naming follows a perfectly consistent pattern throughout: resource.action (e.g., accounts.create, customers.get, disputes.list). All tools use lowercase with dot notation separating resource and verb, creating a predictable and readable structure. There are no deviations in naming style.
With 69 tools, the count is excessive for most agent workflows and feels heavy for the payment processing domain. While the domain is comprehensive, this many tools creates cognitive load and may overwhelm agents. A more focused subset would be more appropriate for typical use cases.
The tool surface provides complete CRUD/lifecycle coverage across all major payment processing domains: accounts, customers, payments, disputes, subscriptions, transfers, and webhooks. Every resource type has create, get, update, and list operations where applicable, with no obvious gaps in functionality.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThe Stripe Model Context Protocol server allows you to integrate with Stripe APIs through function calling. This protocol supports various tools to interact with different Stripe services.17,3531,790-
- AlicenseNot gradedqualityFmaintenanceA server that integrates with Stripe for handling payments, customers, and refunds through the Model Context Protocol, providing a secure API to manage financial transactions.44MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables interaction with the Tradovate API for managing trading contracts, positions, orders, and accounts.1MIT

Paddle MCP Serverofficial
AlicenseAqualityDmaintenanceA Model Context Protocol server that provides tools for interacting with the Paddle Billing API, enabling users to manage products, prices, customers, transactions, subscriptions, and create custom financial reports.6357850Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bkawk/ryft-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server