Skip to main content
Glama

Server Details

PayRam is a self-hosted crypto payment gateway. You deploy it on your own server — no signup, no KYC, no third-party custody. Accept USDT, USDC, Bitcoin, and ETH across Ethereum, Base, Polygon, and Tron.

Ownership verified
Status
Healthy
Uptime
99.1% over 67 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.1/5.0

Scored across 44 tools

Disambiguation3/5

Descriptions are extremely detailed and explicitly cross-reference siblings (e.g. payout_recipient_flow vs payout_sdk_snippet, doctor vs ops_playbook vs runbook), which helps a lot. However there is heavy structural overlap: four generate_payment_* snippet tools, six language-specific snippet_*_payment_route tools that duplicate generate_payment_route_snippet, and multiple referral generators (route/sdk/status/validation). Deprecated tools (onboard_agent_setup, test_payram_connection) coexisting with their replacements add further selection ambiguity.

Naming Consistency3/5

There is a dominant verb_noun pattern (explain_*, generate_*, get_*, list_*, scaffold_*, suggest_*) that is mostly readable. But several families break it: snippet_express_payment_route uses noun-first ordering, payram_doctor/payram_runbook/payram_troubleshoot use a namespace prefix, and prepare_/onboard_/test_ stand apart. Mixed conventions, still parseable but not uniform.

Tool Count2/5

44 tools is well above the healthy 3-15 range and feels bloated for this scope. Much of the count comes from per-language payment snippet variants and per-resource (payment/payout/referral) generator permutations that could be parameterized or consolidated, plus two deprecated tools still shipped.

Completeness4/5

Coverage of the payment domain is genuinely broad: payments, payouts, referrals, webhooks, top-up ledger integration, setup, ops playbooks, runbooks, diagnostics, docs, and troubleshooting are all present. Minor gaps are around pruning deprecated/redundant entries rather than missing lifecycle operations.

Available Tools

44 tools
explain_payment_flowPayment Flow GuideA
Read-onlyIdempotent
Inspect

Describe how payments move from customer initiation through settlement.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered. The description adds the topic scope but no additional behavioral context such as depth, format, or limitations beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence that front-loads the verb and the resource. Every word earns its place, and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, rich annotations covering safety, and an output schema, the description only needs to state the topic. It does so clearly, though it could more explicitly define the scope of the explanation (e.g., lifecycle stages) to fully distinguish from other explainer siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4 per the scoring rules. The description adds no parameter information, which is appropriate since there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Describe') and a specific resource ('how payments move from customer initiation through settlement'), making the topic obvious. It does not explicitly differentiate from sibling explainer tools such as explain_payram_basics or explain_referral_flow, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like explain_payram_basics or explain_referral_flow. The description implies a use case but provides no exclusions, prerequisites, or routing cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_payram_basicsPayram Basics OverviewB
Read-onlyIdempotent
Inspect

Explain Payram's product pillars, architecture, payments, and payouts capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the entire safety profile. The description adds no behavioral context beyond the title (no scope limits, no what-to-expect-next), so it contributes nothing the structured fields don't already say.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly what leaves the sibling-overlap problem unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema and full annotation coverage, the description needn't explain returns or safety, so those are not gaps. What is missing is the topic-boundary information an agent needs to pick this over explain_payram_concepts, explain_payment_flow, or explain_referrals_basics — the crowded explain family makes that omission material.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter meaning is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Explain') and enumerates the covered scope (product pillars, architecture, payments, payouts capabilities), so the agent knows what the tool delivers. However, it never distinguishes itself from near-identical siblings such as explain_payram_concepts or explain_payment_flow, so routing between them is left to guesswork.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative named. 'Basics' faintly implies an entry point for newcomers, but this is inference, not guidance, and the crowded explain_* sibling family makes the omission costly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_payram_conceptsCore Payram ConceptsA
Read-onlyIdempotent
Inspect

Glossary-backed explanation of Payram terminology and constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered without the description. The description adds only 'glossary-backed', a modest hint about the source and nature of the content, but says nothing about coverage, freshness, or how concepts map to the returned payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the core purpose with no filler. Appropriately sized for a no-argument lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters, an output schema present, and rich annotations, the description only needed to establish scope and it does so adequately. The remaining gap is the failure to differentiate this tool from the near-identical explain_payram_basics, which leaves selection ambiguous in a dense sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter meaning to document — the baseline of 4 applies. The description neither misleads nor adds anything here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear purpose: a glossary-backed explanation of Payram terminology and constraints. The resource ('Payram terminology') is named, but nothing distinguishes it from sibling explain_payram_basics, explain_payram_security, or explain_payment_flow, all of which sound like explanations of the same domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this over the other explain_* siblings, nor any condition that selects it (e.g., 'use for term lookups, not for flows'). The agent must guess whether 'concepts' or 'basics' is the right entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_payram_securityIs PayRam safe? Security and trustA
Read-onlyIdempotent
Inspect

Answer "is PayRam safe / trustworthy / audited?": why an agent can use it without holding secrets, the independent smart contract audit (what it covers and what it does not), and how to verify the report.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds real behavioral context beyond that: it will not require the agent to hold secrets, it scopes the independent smart contract audit (what it covers and what it does not), and it explains how to verify the report — including an explicit statement of coverage limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence leads with the exact query it answers, then enumerates the three substantive areas of content. No filler, no restatement of the title, and the parenthetical limits on audit coverage earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not describe return values, and with zero params nothing is missing on the input side. It covers topic, content scope and verification path; only a note that this returns static documentation-style content rather than live checks is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; baseline for a parameterless tool is 4. The description correctly does not invent parameters or argument hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Answer') and a sharply defined topic — the safety/trust/audit question — which separates it cleanly from topic siblings like explain_payram_basics, explain_payment_flow and explain_referral_flow. It does not explicitly name any sibling to route against, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies the exact user phrasings that trigger this tool ('is PayRam safe / trustworthy / audited?'), which is strong routing context for an agent choosing among many explain_* tools. It does not state when NOT to use it or point to an alternative for adjacent questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_referral_flowReferral Flow GuideA
Read-onlyIdempotent
Inspect

Detail the referrer/referee lifecycle and required APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that it enumerates required APIs, but does not add further behavioral context such as auth needs, rate limits, or whether it performs live checks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single, front-loaded sentence with no redundant or filler text. The verb and scope appear immediately, which is appropriate for a zero-parameter explainer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only explainer with rich annotations and an output schema, the description states enough content scope to invoke it correctly. The main omission is sibling routing, but return values and safety behavior are covered elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to document. The baseline for zero parameters is 4; the description correctly does not invent parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb, 'Detail', and a specific resource, the 'referrer/referee lifecycle and required APIs'. It distinguishes itself from payment-flow and general-basics siblings, but does not explicitly differentiate from the closely named sibling explain_referrals_basics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what content is covered but gives no when-to-use, when-not-to-use, or alternative-tool guidance. An agent gets no help deciding between this and siblings like explain_referrals_basics or generate_referral_* snippets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_referrals_basicsReferral Basics OverviewA
Read-onlyIdempotent
Inspect

Summarize how Payram referral campaigns are configured and managed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and a closed-world scope, so the safety profile is fully covered without description help. The description adds no further behavior detail (no mention of depth, scope of coverage, or citation of sources), which is acceptable but unremarkable for a read-only explainer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, restatement of the title, or redundant phrasing. For a no-argument explainer, this is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description need not explain return values, and zero parameters means no input gaps. The remaining shortfall is routing: in a sibling set containing explain_payram_basics, explain_referral_flow, and get_referral_dashboard_guide, the description gives no signal about which referral explainer to pick when.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to clarify. No parameter-level guidance is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ("Summarize") with a specific resource ("Payram referral campaigns... configured and managed"), so the agent knows this returns an explanatory overview rather than data or code. It does not, however, distinguish itself from close siblings such as explain_referral_flow or get_referral_dashboard_guide, leaving overlap unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the "basics" framing and the explain_* family suggest a conceptual overview to read before diving into the referral flow or dashboard guide, but no when-to-use, when-not-to-use, or alternative is stated. Nothing is misleading, but the agent must infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_env_templateGenerate Payram .env TemplateB
Read-onlyIdempotent
Inspect

Creates a .env template for configuring a merchant backend to talk to a self-hosted Payram server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
variablesYes
envExampleYes
descriptionNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so safety and repeatability are covered. The description adds the 'self-hosted Payram server' targeting detail, but says nothing about the template's contents, whether placeholder values are included, or that no server-side state is touched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is appropriate for a simple generator. It is tight, though the brevity contributes to the usage-guidance gap rather than being pure efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and a zero-param tool has little to document. What remains missing is only minor context about where/how the template is delivered, which is low-stakes for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the schema or description to disambiguate; the baseline for a parameterless tool is 4. The description correctly does not invent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Creates) and resource (.env template) and narrows the scope to configuring a merchant backend against a self-hosted Payram server. It is clear on its own, but it never distinguishes itself from the large generate_* family around it, so the agent must infer it is the config-template member of that set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative named. The phrase 'self-hosted Payram server' implies the deployment context but does not tell the agent whether this belongs in initial setup versus an existing integration, nor how it relates to scaffold_payram_app or generate_setup_checklist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_mock_webhook_eventGenerate mock Payram webhook eventA
Read-onlyIdempotent
Inspect

Generates a snippet to send mock Payram webhook events to your local endpoint for testing.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesPayment status to simulate in the mock webhook event
languageYesLanguage/tool for the mock webhook request (curl for command-line testing)

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and a closed world, so the safety profile is covered. The description adds genuinely useful context beyond them: the output is a code snippet for a local endpoint rather than an actual webhook dispatch, which prevents the agent from assuming a network side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the purpose and the test-oriented framing appear immediately. Nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover safety, so the description is nearly complete for a two-parameter generator. The remaining gap is sibling differentiation within the generate_webhook_* family, which is the one thing an agent could still get wrong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters carry enums with descriptions (payment status to simulate, language/tool), so the schema does the heavy lifting. The description adds nothing about parameter meaning or how the language/status choices affect the generated snippet, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it 'generates a snippet to send mock Payram webhook events.' That is far clearer than a tautology and tells the agent it produces test code, not a live webhook. It does not, however, differentiate itself from the crowded generate_webhook_handler / generate_webhook_event_router siblings, which also concern webhooks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrases 'mock' and 'for testing ... your local endpoint' imply the usage context (local/test-only simulation), which is real but implicit guidance. There is no explicit when-to-use statement and no mention of the alternative webhook-generation siblings, so the agent must infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payment_http_snippetGenerate HTTP payment snippetA
Read-onlyIdempotent
Inspect

Generates a raw HTTP sample for creating a Payram payment in the requested language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesProgramming language for the HTTP payment creation snippet

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the description cannot contradict it. The description adds only the output form (a raw HTTP sample), which the existing output schema largely covers; it says nothing extra about scope, limitations, or how the snippet is produced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and artifact first and one qualifying clause. There is no filler and nothing that could be trimmed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully documented enum parameter, a full annotation set, and an output schema that covers return values, the description supplies what an agent needs to invoke the tool correctly. It could still be improved by stating which sibling generators it replaces, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'language' parameter is constrained by an enum with its own description, so the schema does the heavy lifting. The phrase 'in the requested language' adds no format or syntax detail beyond what the schema already states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Generates) and a concrete artifact (a raw HTTP sample for creating a Payram payment), which is meaningfully distinct from the SDK/route/status snippet siblings because of the 'raw HTTP' qualifier. It stops short of naming any sibling explicitly, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use statement, but 'raw HTTP sample' implicitly scopes the tool to integrations that talk to the API directly rather than via the generate_payment_sdk_snippet or generate_payment_route_snippet tools. The agent can infer the choice, but nothing is stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payment_route_snippetGenerate payment route snippetB
Read-onlyIdempotent
Inspect

Generates a ready-to-use backend endpoint (e.g., /api/pay/create) that creates a Payram payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesWeb framework for the payment route handler (Express.js or Next.js)

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds that the output is a ready-to-use endpoint that creates a Payram payment, but does not disclose side effects, auth requirements, or rate limits; with annotations present, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a concrete example and no filler. It is appropriately sized for a simple one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents the only parameter and the output schema means return values need not be explained. However, given the many similar sibling snippet generators, the description does not help an agent choose this tool over alternatives, leaving a meaningful selection gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single required 'framework' parameter has an enum with its own description. The tool description does not mention the framework parameter, so baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Generates') and resource ('backend endpoint ... that creates a Payram payment') with a concrete example path. It is clearly a code-endpoint generator, but it does not explicitly distinguish itself from similar sibling tools like snippet_express_payment_route or generate_payment_http_snippet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says only what the tool produces. It gives no when-to-use guidance, prerequisites, or comparison with alternative snippet generators, so an agent must infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payment_sdk_snippetGenerate SDK payment snippetB
Read-onlyIdempotent
Inspect

Generates backend code using the official Payram JS/TS SDK to create a payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesTarget framework for the SDK payment snippet. generic-http provides a framework-agnostic example.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that output is JS/TS SDK backend code, a useful detail, but does not disclose output format details or any constraints beyond the SDK type.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the key qualifier (JS/TS SDK) front-loaded alongside the action. It is appropriately sized and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations plus full param coverage handle safety and inputs. The only gap is routing guidance against the many sibling snippet generators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single framework parameter is fully documented with an enum and per-value meaning. The description adds no parameter-level detail, so the schema does all the work; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (generates backend code) and specifies the mechanism (official Payram JS/TS SDK) to create a payment. This partially distinguishes it from HTTP-based siblings like generate_payment_http_snippet, though it does not explicitly name which sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The SDK mention implies a scenario, but there is no statement about choosing this over generate_payment_http_snippet, generate_payment_route_snippet, or scaffold_payram_app, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payment_status_snippetGenerate payment status snippetC
Read-onlyIdempotent
Inspect

Generates backend code to query the status of a Payram payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYesStyle of code snippet: sdk uses the Payram SDK, http uses raw HTTP requests

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds essentially nothing beyond the title ('Generates backend code') – no target language/framework, no indication of what the generated code assumes (SDK version, endpoint config), and no other 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, which is structurally clean. It is arguably too terse for a tool sitting in a dense cluster of near-identical snippet generators, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format needn't be explained, and annotations carry the safety profile. What is missing is disambiguation from the many sibling snippet generators, which is the main thing an agent needs here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and the schema documents it at 100% coverage, including the enum semantics ('sdk uses the Payram SDK, http uses raw HTTP requests'). The description adds no further parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generates backend code to query the status of a Payram payment'), so the agent knows it produces a code snippet rather than performing a live status check. However, it gives no hint about how it differs from close siblings like generate_payment_http_snippet, generate_payment_sdk_snippet, or generate_payout_status_snippet, which is a real ambiguity given the style enum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative tools are named. The description does not resolve why an agent would pick this over the http/sdk payment snippet siblings, so selection relies entirely on the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payout_recipient_flow_snippetGenerate 3-step recipient payout flow snippetA
Read-onlyIdempotent
Inspect

Generates the recommended OTP-verified payout flow: create recipient → validate OTP → create payout against the saved recipient. Use this for repeat beneficiaries; use generate_payout_sdk_snippet for one-off direct payouts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds useful context about the generated content — that the flow is OTP-verified and follows a recipient-save-then-charge pattern. It stops short of noting anything about the output format or limits, but the bar is lower given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core purpose front-loaded before the alternative-tool routing. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations covering the safety profile, and zero parameters, the description need only convey purpose and routing — which it does fully. Nothing an agent needs to select or call this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema provides nothing to document and the baseline is 4. There is no parameter syntax for the description to add or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Generates) and resource (OTP-verified payout flow snippet) and enumerates the three steps it produces: create recipient → validate OTP → create payout. It also names the sibling it differs from (generate_payout_sdk_snippet), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the selection condition: 'Use this for repeat beneficiaries; use generate_payout_sdk_snippet for one-off direct payouts.' This gives both when-to-use and the named alternative, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payout_sdk_snippetGenerate payout SDK snippetB
Read-onlyIdempotent
Inspect

Generates a backend code snippet for creating a payout using the Payram JS/TS SDK.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesTarget framework for the payout SDK snippet

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds that the output is backend code in JS/TS, which is slightly useful context, but says nothing about output length, file placement, or how the snippet relates to the framework parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and artifact, with zero filler. Nothing needs to be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the single parameter is fully specified in the schema. What is missing is routing context against the many similarly named snippet generators and any clarification of the JS/TS vs. generic-http scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, so the baseline is 3 and the description adds no syntax or format detail. There is also tension worth flagging: the description names the 'JS/TS SDK' while the framework enum permits only 'generic-http', which could lead an agent to expect broader language support than exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb (Generates), a specific artifact (a backend code snippet for creating a payout), and names the SDK (Payram JS/TS). That distinguishes it from most siblings, though it never explicitly contrasts itself with generate_payment_sdk_snippet or generate_payout_status_snippet, which are the closest neighbors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as generate_payment_sdk_snippet (for payments rather than payouts) or generate_payout_recipient_flow_snippet. The agent must infer routing purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_payout_status_snippetGenerate payout status SDK snippetB
Read-onlyIdempotent
Inspect

Generates backend code to query the status of a payout using the Payram SDK.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the fact that the output is generated backend code (explaining why it is a safe read), with no detail on language/framework variant or generation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. Nothing to trim and the core action is stated up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations cover the safety profile. However, for a generator whose value depends on which SDK/language variant it emits, the description leaves that context unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the schema carries no burden and the baseline of 4 applies. No parameter semantics are needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (generates) and resource (backend code to query payout status) plus the SDK used. The payout+status combination distinguishes it from generate_payment_status_snippet and generate_payout_sdk_snippet by implication, though it never names a differentiating sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives, which matters given the 40+ closely related generate_*/snippet_* siblings. The agent must infer the correct context of use from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_referral_route_snippetGenerate referral route snippetB
Read-onlyIdempotent
Inspect

Generates a backend route such as /api/referrals/create for logging referral events.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesWeb framework for the referral route handler (Express.js or Next.js)

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only that the generated route is for 'logging referral events,' which is useful framing but no operational detail (e.g., what the snippet contains, whether it is a stub or runnable code).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with zero filler. It is appropriately sized for a single-parameter generator, though the example route is the only element that earns extra value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile; for a one-parameter tool this is close to complete. The remaining gap is the absence of any cue about when this route snippet is preferred over the referral SDK/status/validation snippet siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'framework' parameter has a documented enum (express, nextjs), so the schema carries the full burden. The description mentions nothing about framework selection or how it changes the output, adding no meaning beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generates a backend route') and gives a concrete example path ('/api/referrals/create for logging referral events'), which pins down the artifact. It does not, however, distinguish itself from the many sibling snippet generators (generate_referral_sdk_snippet, generate_referral_status_snippet, generate_referral_validation_snippet), so an agent must infer the boundary from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and no alternative tool is named. With over a dozen sibling 'generate_*_snippet' tools, the description offers no routing signal for picking this one over the SDK, status, or validation variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_referral_sdk_snippetGenerate referral SDK snippetC
Read-onlyIdempotent
Inspect

Generates a backend route or service snippet to create a referral event using the Payram SDK.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesTarget framework for the referral SDK snippet

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, and the description is consistent with a pure code-generation operation. It adds essentially nothing beyond that profile, though there is no contradiction and no missing safety disclosure to compensate for.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler; the purpose is leading. It is tight but arguably under-specified rather than excessively verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required. For a generator sitting among many near-duplicate snippet siblings, the description is minimally adequate but leaves the key routing question (route vs SDK vs status vs validation snippet) unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter (framework, enum: generic-http) is fully documented in the schema. The description adds no syntax, default, or enum context beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (generates) and resource (backend route/service snippet to create a referral event via the Payram SDK), so the basic purpose is legible. However, 'route or service snippet' overlaps ambiguously with the sibling generate_referral_route_snippet, and the description never explains how this differs from that or from generate_referral_status_snippet/validation_snippet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no named alternative. With three closely related referral-snippet siblings, an agent has no textual basis for choosing this tool over generate_referral_route_snippet or generate_referral_validation_snippet.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_referral_status_snippetGenerate referral status snippetB
Read-onlyIdempotent
Inspect

Generates code to fetch referral progress, rewards, or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYesStyle of code snippet: sdk uses the Payram SDK, backend-only shows direct API calls

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, non-destructive, closed-world read, so the description need not restate safety. It adds only a slight hint about snippet content ('progress, rewards, or status') and says nothing about the generated code's shape, target language, or where it is meant to run.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. Nothing in it is wasted, though it is arguably too terse given the crowded sibling set.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. What is missing is the routing information an agent needs among the cluster of referral and status snippet generators, leaving the definition only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'style' parameter is fully documented in the schema (sdk vs backend-only), so the baseline of 3 applies. The description never references the style parameter or its effect on output, adding no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb ('Generates code') and a specific resource ('referral progress, rewards, or status'), so the agent knows what comes out of the call. It does not, however, distinguish this from the many overlapping siblings such as generate_referral_sdk_snippet or generate_payment_status_snippet, even though the 'style' enum already overlaps with the SDK-snippet sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no alternative named. With siblings like generate_referral_route_snippet, generate_referral_sdk_snippet and generate_referral_validation_snippet in the list, the agent is left to guess which referral snippet fits its situation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_referral_validation_snippetGenerate referral validation snippetA
Read-onlyIdempotent
Inspect

Generates a snippet to validate referral IDs, statuses, and eligibility.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed world, so the safety profile is fully covered structurally. The description adds only the semantic subject matter of the snippet; it says nothing about output language/framework or shape, which for a code generator is meaningful context. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler and the action front-loaded. It is well-sized, though it could have spent one more clause routing the agent toward or away from sibling snippet generators.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations carry the safety profile. With no parameters and a defined output, the only real gap is sibling differentiation against the other referral snippet generators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema has nothing to document and there is no parameter semantics burden on the description. The baseline of 4 for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource ('Generates a snippet') plus the domain of the snippet ('validate referral IDs, statuses, and eligibility'). It is distinguishable from explain_referral_flow and get_referral_dashboard_guide, though it does not explicitly contrast itself with the nearby generate_referral_route_snippet / sdk / status siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The stated purpose ('validate referral IDs, statuses, and eligibility') implies when an agent would want it, but there is no explicit when-to-use, prerequisite, or named alternative among the crowded generate_referral_* family. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_setup_checklistGenerate Payram Setup ChecklistA
Read-onlyIdempotent
Inspect

Returns a step-by-step checklist of everything a merchant must configure to start using Payram.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
notesNo
titleYes
descriptionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and repeatability profile is fully covered structurally. The description adds the useful fact that the output is a configuration checklist rather than prose, but says nothing about whether it is static or dynamically derived from account state. With annotations carrying the safety burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the verb, the deliverable, and the audience in one pass. There is no filler, no repetition of the title, and nothing an agent must read past.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value structure need not be described, and the zero-parameter signature plus annotations mean there is little else required. The only shortfall is the missing differentiation from sibling setup tools, which the description must carry since no structured field can express it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter meaning for the description to supply. The baseline of 4 applies, and nothing in the description misrepresents the (empty) input contract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb (Returns) with a specific artifact (a step-by-step checklist of everything a merchant must configure), so the purpose is unambiguous. It does not, however, distinguish itself from near-neighbors in the sibling list such as payram_setup_plan, onboard_agent_setup, or get_agent_setup_flow, all of which plausibly produce overlapping setup guidance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no exclusions. Given that roughly six sibling tools concern setup/onboarding flows, the absence of any routing cue ('use this before scaffold_payram_app', 'for the interactive flow use onboard_agent_setup') leaves the agent to guess between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_topup_integration_snippetGenerate top-up wallet integrationA
Read-onlyIdempotent
Inspect

For EXISTING apps: emits the recommended top-up wallet integration — ledger schema + cumulative-credit webhook handler + atomic invoice-settle function. Credits crypto payments to a user's balance first, then debits invoices from it, so over/under/late/duplicate payments become balance states, not payment exceptions. Pair with the payram-topup-wallet-integration skill. (New store with no users? Use the checkout/plugin path instead.)

ParametersJSON Schema
NameRequiredDescriptionDefault
partNoWhich piece to emit: 'schema' (ledger DDL), 'webhook' (cumulative-credit handler), 'settle' (atomic invoice debit), or 'all'.all
frameworkNoServer framework for the webhook handler + settle function.express

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
titleYes
snippetYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine architectural context beyond that: credits land on the balance before invoice debits, so over/under/late/duplicate payments become balance states rather than exceptions — useful for an agent predicting what the emitted code does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the precondition and the deliverable, and the parenthetical alternative is placed at the end where it belongs. Dense but every clause carries information; only minor cost is the stacked artifact list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. Preconditions, the sibling alternative, the companion skill, and the runtime semantics of the generated code are all present — nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry enum descriptions, so the baseline is 3. The description restates the three part artifacts ('schema', 'webhook', 'settle') in prose but adds no syntax or format detail beyond what the schema already documents, and never addresses 'framework'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (emits/generates) and a concrete artifact set — ledger schema, cumulative-credit webhook handler, atomic invoice-settle function — for a named resource (top-up wallet integration). It also distinguishes itself from the sibling checkout/plugin path, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition ('For EXISTING apps') and an explicit when-not with the alternative named ('New store with no users? Use the checkout/plugin path instead'). It also names a companion skill to pair with, leaving no routing ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_webhook_event_routerGenerate Payram webhook event routerB
Read-onlyIdempotent
Inspect

Generates a backend event router that dispatches Payram webhook events to domain handlers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and side-effect profile is fully covered by structured data. The description adds only a modest amount of behavioral context (the router dispatches events to domain handlers), without saying what artifact is produced, where it is written, or whether it overwrites existing files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficiently sized, though it is arguably too terse to carry the routing information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the low complexity of a parameterless generator keeps the bar modest. Still, the description omits which framework/language the router targets and how it differs from generate_webhook_handler, leaving a real gap for tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema coverage is reported at 100%, so there is nothing for the description to clarify. A baseline of 4 is appropriate for a parameterless generation tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it 'generates a backend event router that dispatches Payram webhook events to domain handlers.' That is far more informative than the title alone. However, it never distinguishes itself from the sibling tool 'generate_webhook_handler', which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, despite a crowded sibling set containing generate_webhook_handler, generate_mock_webhook_event, and the many snippet generators. No prerequisites, framework constraints, or exclusion conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_webhook_handlerGenerate Payram webhook HTTP handlerC
Read-onlyIdempotent
Inspect

Generates backend code to handle Payram webhook HTTP requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkYesWeb framework for the webhook handler code

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and reproducibility are covered structurally. The description adds nothing beyond the title — no note on what is produced, whether files are written, or framework-specific behavior. With annotations carrying the entire behavioral load, the description contributes no extra context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It is efficiently written, though it verges on under-specification rather than tight completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the single parameter is fully documented. Still, for a code-generation tool whose near-twin siblings include generate_webhook_event_router and the many snippet_* tools, the description omits the disambiguation an agent needs to route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single framework parameter is an enum with its own description, so the schema does the heavy lifting. The description adds no framework-specific detail (e.g. what Express vs FastAPI output looks like), so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (generates backend code for Payram webhook HTTP requests), and the sibling list confirms it is a code-generation tool distinct from docs/explain tools. It does not, however, distinguish itself from the close sibling generate_webhook_event_router, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternative. The agent must infer that this is for producing a handler stub versus a router (generate_webhook_event_router) or a mock event (generate_mock_webhook_event) purely from the names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_setup_flowGet the headless agent guide (full reference)A
Read-onlyIdempotent
Inspect

Returns the canonical PayRam headless-agent guide: agent CLI commands, env vars, merchant vs operator mode, wallet flows, adding chains, troubleshooting. Long (~11k tokens). For a short personalised plan use payram_setup_plan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
markdownYes
descriptionNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context the annotations do not: the output is a long full reference (~11k tokens), which warns the agent about context cost before invoking. It does not describe structure or how to navigate the long payload, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste: the first front-loads what is returned and its coverage, the second handles routing to the alternative. The size warning is embedded efficiently rather than as a separate sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, 0 parameters, and annotations carrying the safety profile, the description only needs to say what the guide contains and how big it is – both are covered. Nothing an agent needs to decide whether to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no input is needed and adds no misleading parameter hints, but there is no parameter content to enrich beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Returns the canonical PayRam headless-agent guide') and enumerates the exact contents (CLI commands, env vars, merchant vs operator mode, wallet flows, adding chains, troubleshooting). This lets an agent distinguish it from the many explain_*/generate_* siblings and from payram_setup_plan without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to an alternative with a condition: 'For a short personalised plan use payram_setup_plan.' That is clear when-to-use-this-vs-that guidance, but it only addresses one sibling and does not contrast against onboard_agent_setup or the explain_* tools, so it stops short of full coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_payram_doc_by_idGet Payram Doc By IDB
Read-onlyIdempotent
Inspect

Returns the markdown for a Payram doc given its id, e.g. "features/payouts".

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlNo
pathYes
markdownYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds that the payload is markdown, which is genuine extra context, but says nothing about behavior for an unknown id or the discovery path for valid ids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with verb, resource, and an inline example. No padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. For a simple id-based getter the description is nearly sufficient; the remaining gap is id provenance and unknown-id behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the schema only types id as a non-empty string. The description partially compensates by showing a valid id shape ("features/payouts"), which implies a path-like slug, but does not state the accepted format or where ids come from.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: returns the markdown for a Payram doc by id. The example id "features/payouts" makes the retrieval target concrete. It does not distinguish itself from the sibling list_payram_docs, which is the obvious complement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative is named. An agent cannot tell from the description whether to call this or list_payram_docs first to discover valid ids.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_referral_dashboard_guideReferral Dashboard GuideC
Read-onlyIdempotent
Inspect

Explain how to embed and manage the referral dashboard experience.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly and idempotent behavior, but the description adds no further behavioral context such as the format, depth, or scope of the explanation. It does not explain what the guide covers or how it should be consumed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, and the purpose is front-loaded. However, it is under-specified rather than overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has an output schema and rich annotations, the description still fails to clarify the scope of the guide or how it differs from related sibling tools, leaving significant ambiguity for an agent choosing between several explain_* tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The schema fully covers the (empty) parameter set, and the description appropriately does not discuss parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Explain how to embed and manage the referral dashboard experience' gives a vague verb+resource. It is not clear if it returns documentation, code, or a guide, and it does not differentiate from siblings like explain_referral_flow or explain_referrals_basics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites or exclusions, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_payram_docsList Payram DocsA
Read-onlyIdempotent
Inspect

Lists the available Payram doc ids. Optionally scope by a prefix such as "features".

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
docsYes
countYes
prefixNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is fully covered without prose. The description confirms the return is a set of doc ids and that prefix scoping is optional, which adds a little context, but says nothing about ordering, completeness, or how the prefix is matched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the primary action and followed by the optional modifier. No filler, nothing repeated from the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the tool has one optional parameter. For a simple discovery tool this is essentially complete; only the prefix matching behavior and result ordering remain unspecified, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'prefix' parameter, so the description must compensate, and it does: it explains the parameter's purpose (scoping the listing) and gives a concrete example value ("features"). It stops short of stating match semantics (path-prefix, case sensitivity), keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Lists the available Payram doc ids") that is immediately distinguishable from the sibling get_payram_doc_by_id, which retrieves a single doc. It does not explicitly name that sibling, but the listing semantics are unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The optional prefix clause implies usage (narrow the listing, e.g. by "features"), which is genuinely useful. However, it never states when to use this discovery tool versus get_payram_doc_by_id, so the workflow relationship between the two is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

onboard_agent_setupOnboard: install PayRam as an agent (deprecated)A
Read-onlyIdempotent
Inspect

Deprecated: use payram_setup_plan, which does this and lets you personalise it. Returns the default headless plan (testnet, USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
markdownYes
descriptionNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered and the description is consistent with it. The description adds the deprecation status and the exact configuration returned, but says nothing about permissions, side effects, or how the plan is consumed. With annotations carrying the safety burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the deprecation notice front-loaded, followed immediately by the redirect and the return scope. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed, and the description still summarizes them. For a zero-param, deprecated tool the only essential information is the redirect, which is present; the minor gap is that it never states what callers should expect the plan to contain beyond two config values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics for the description to clarify or compensate for. Schema coverage is reported at 100% with an empty properties object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool is deprecated, identifies the replacement (payram_setup_plan), and specifies what it returns (the default headless plan with testnet/USDC-on-Base config). The literal action ('install PayRam as an agent') comes from the title rather than the description, but the return scope is clearly conveyed and the tool is differentiated from its sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative explicitly and gives the reason to prefer it ('which does this and lets you personalise it'), effectively telling the agent when not to use this tool. This is exactly the routing guidance an agent needs for a deprecated entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payram_doctorDiagnose a PayRam serverA
Read-onlyIdempotent
Inspect

Read-only diagnosis of a PayRam server by its public URL — works from the hosted MCP without credentials: reachability, health, TLS certificate, installed vs latest version, worker states. Optionally validates an API key without creating anything. Returns ranked likely causes and exact fixes for the first failing stage. Run this first when anything PayRam-related fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoOptional project API key to validate (never creates anything). Passing it puts the key in this conversation; prefer running payram_ops_playbook "connect" locally.
baseUrlNoPublic address of the PayRam server, same origin as the dashboard: https://pay.example.com, or just pay.example.com or an IP (https is tried first, then http). No :8080, no path. Required on the hosted MCP.

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseUrlYes
healthyYes
versionYes
findingsYes
nextCallYesThe single most useful tool call to make next
warningsYes
nextStepsYes
setupStageYesPass as payram_setup_plan stage once the server answers PayRam health; null when not reachable
failedStageYesFirst failing stage, null when healthy
likelyCausesYesRanked causes for the first failing stage
latestVersionYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description nevertheless adds real context: it works without credentials, the API-key check 'never creates anything', and it returns 'ranked likely causes and exact fixes for the first failing stage'. This goes meaningfully beyond the annotations, though it does not touch rate limits or auth requirements for the version/worker checks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences that each carry distinct information: purpose+scope, capability list, API-key handling, return value, and an entry-point directive. Front-loaded with the core purpose, though the most actionable usage instruction ('run this first') sits at the tail where it is slightly less prominent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be fully explained, yet the description still summarizes them (ranked causes and fixes). Both optional params are schema-documented, annotations carry the safety profile, and the hosted-vs-local credential distinction is covered. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself documents both baseUrl (origin format, https-then-http fallback, no :8080/path) and apiKey including the security caveat about the key landing in the conversation. The description only restates 'by its public URL' and 'validates an API key', so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Read-only diagnosis of a PayRam server') plus an explicit enumeration of what it inspects: reachability, health, TLS certificate, installed vs latest version, worker states. The closing directive 'Run this first when anything PayRam-related fails' positions it against siblings like payram_troubleshoot and test_payram_connection, so an agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Run this first when anything PayRam-related fails') and names the alternative path for the sensitive case — prefer payram_ops_playbook "connect" locally rather than passing an API key here. The hosted-MCP-without-credentials condition is stated up front, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payram_ops_playbookPayRam ops playbook (direct API recipes)A
Read-onlyIdempotent
Inspect

Exact, copy-paste recipes for day-2 operations and troubleshooting that YOU run against the merchant's PayRam API with credentials that stay on your machine: which endpoint, which credential (public / dashboard JWT / project API key), a curl+jq command, how to read the answer, and what not to do. Start with "connect". Tasks: connect, health, version_check, workers, restart_worker, node_sync, site_url, payment_options, unswept_funds, payments_today, payment_lookup, stuck_payment, create_payment_link, payouts, webhooks, logs, daily_check. Omit task to list them.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoWhich recipe. Omit to get the index of tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes
recipeNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds genuinely non-obvious context: the recipes run against the merchant's API with credentials that stay local, the tool produces instructions rather than executing them ('that YOU run'), and it flags 'what not to do'. This resolves the potential confusion that recipes like restart_worker are mutating while the tool itself is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence front-loads the value proposition well, but the trailing 17-item task list largely duplicates the schema enum, which the rules say earns no credit. The description is dense rather than bloated, but that redundant enumeration is wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description still supplies the key missing context an agent needs — credential handling, entry point ('connect'), and cautionary guidance — making it complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum is fully documented in the schema, so baseline is 3. The description adds a light ordering hint ('Start with connect') and frames the enum as a task flow, but otherwise repeats the same 17 task names already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific deliverable: exact copy-paste recipes for day-2 operations and troubleshooting, including which endpoint, credential, curl+jq command, and how to read the answer. The verb+resource is clear, but the description never distinguishes this from siblings like payram_runbook or payram_troubleshoot, which sound like they cover the same troubleshooting ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives in-tool guidance ('Start with connect', 'Omit task to list them'), which is useful for sequencing tasks. However it offers no when-to-use-vs-alternative guidance against the numerous sibling explain_*, payram_runbook, payram_doctor, and payram_troubleshoot tools, leaving the agent to guess which of these overlapping resources to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payram_runbookPayRam runbooks (one-off admin tasks)A
Read-onlyIdempotent
Inspect

Step-by-step procedures for changes to a running PayRam, each step marked agent vs human with hard stops: set_site_url, change_domain, ssl_setup, ssl_renewal_fix, firewall_ports, upgrade, backup, restore, add_chain, smart_bridge, mainnet_cutover, operator_setup, rotate_api_key, reset_test_install, shopify_connector, woocommerce_plugin, secure_analytics_mcp, install_failed, custom_port_or_proxy, external_database, forgot_root_password. Omit task to list them.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoWhich runbook. Omit to list all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes
runbookNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds real context beyond that: procedures are 'step-by-step', each step is labeled 'agent vs human', and there are 'hard stops'—which tells the agent it must pause and hand off rather than auto-execute. That hand-off semantics is valuable and not derivable from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead clause is well front-loaded and informative, but the bulk of the text is a 21-item enumeration that exactly duplicates the schema enum—repeated structured data that does not earn its place. The informative content is roughly two sentence-fragments padded to one very long line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained, and the description covers the tool's nature, the step labeling, hard-stop behavior, and the list-vs-fetch pattern. The remaining gap is sibling disambiguation against payram_ops_playbook/payram_troubleshoot for one-off admin task requests.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is a fully enumerated string, so the schema already carries the semantics. The description's re-listing of all 21 enum values and 'Omit task to list them' essentially duplicates the schema's own description, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and format: 'step-by-step procedures for changes to a running PayRam', with the agent-vs-human step framing. It is clearly distinguishable from the explain_* and snippet_* families, but it never distinguishes itself from the very similar sibling payram_ops_playbook or payram_troubleshoot, which an agent will also consider for admin tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Omit task to list them' tells the agent how to discover the available runbooks versus fetching one, which is genuine usage guidance. However, there is no statement of when this tool is preferred over payram_ops_playbook, payram_troubleshoot, or payram_doctor, all of which plausibly compete for the same request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payram_setup_planPlan a PayRam install (step by step)A
Read-onlyIdempotent
Inspect

Start here to install PayRam on a VPS. Returns an ordered, personalised plan — prepare server → install → claim admin + set public URL → wallets (incl. Smart Bridge review) → API key + first payment link → hardening → store/app integration — with who runs each step (agent shell vs human/dashboard), exact commands, what success looks like, and hard stops that need the human (cold wallet, mainnet spend, root-only settings). Ask the user first whether you can run commands on their server (access "ssh") or only chat with them (access "human_runs_commands": they run each command and paste the output back). Pass stage to resume mid-way; payram_doctor tells you the stage of a running server.

ParametersJSON Schema
NameRequiredDescriptionDefault
sslNoletsencrypt (needs domain), own_certificate, proxy (Cloudflare/your own reverse proxy terminates TLS), none. Default: letsencrypt with a domain, none without.
pathNoagent = headless CLI after a one-time interactive install; human = installer + web dashboardagent
roleNomerchant: Take payments for your own business (default). operator: Run PayRam as a platform for other merchants and earn a fee on their volume. Must be chosen before the first project; the role locks once role-specific data exists.merchant
stageNoWhere you are now; the plan starts from the next stepfresh
accessNossh = you can run commands on the server yourself. human_runs_commands = you only chat: the human runs each command and pastes the output back. Ask the user which applies before planning.ssh
domainNoPublic hostname for the gateway, e.g. pay.example.com. Omit if you only have an IP for now.
walletNoFirst deposit wallet: usdc_base (smart-contract wallet on Base, needs a little gas), btc (xpub, no gas), or bothusdc_base
networkNotestnet = free test coins (recommended first); mainnet = real moneytestnet
integrationNoWhat will take payments once the gateway is upnone

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputsYes
phasesYes
summaryYes
warningsYes
nextToolsYes
humanDecisionsYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, non-destructive read, so the bar is met; the description goes well beyond by disclosing the plan's structure, the human/agent division of labor, and concrete 'hard stops' (cold wallet, mainnet spend, root-only settings) that require human intervention. That is meaningful operational context an agent cannot get from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the entry-point claim and the stage chain before the operational caveats. It is dense and largely waste-free, but the long em-dash-chained sentence packs multiple distinct concerns (plan contents, access modes, stage resumption, doctor cross-reference) into one breath, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, enum-heavy planning tool with an output schema, this covers everything an agent needs: when to invoke it, how to resolve the access ambiguity with the user, how to resume via stage, and what the plan will contain. With the output schema handling return values, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with 9 documented, mostly-enumerated parameters, so the schema carries the semantics. The description adds only marginal value, chiefly reinforcing 'stage' as a resume mechanism and stressing that 'access' must be confirmed with the user before planning. Baseline 3 is appropriate given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('plan'/'install PayRam on a VPS') and enumerates the exact output shape (ordered stages, who runs each step, commands, success criteria, hard stops). It also differentiates itself from siblings by naming payram_doctor as the tool that detects a running server's stage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Start here to install PayRam on a VPS' is an explicit entry-point cue, and it names payram_doctor as the alternative for detecting an existing server's stage. It also instructs the agent to ask the user about access mode before planning. It does not, however, distinguish itself from near siblings like generate_setup_checklist, onboard_agent_setup, or get_agent_setup_flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payram_troubleshootTroubleshoot a PayRam problemA
Read-onlyIdempotent
Inspect

Something is not working? Describe the problem in plain words and/or paste the error or log text. Returns the known PayRam problems it matches, what each usually means, how to confirm it and the fix, plus which tool to use next. Needs no credentials and no access to the server; what you paste is not stored. Call with nothing to list known problems. For a live check of a running server use payram_doctor.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoShow one known problem by its id (from an earlier answer).
areaNoNarrow the search to one area.
outputNoError text or log lines to match. Remove API keys, tokens, passwords and seed phrases first.
symptomNoThe problem in plain words, e.g. "payment link opens localhost" or "502 after upgrade".

Output Schema

ParametersJSON Schema
NameRequiredDescription
indexNo
gatherNo
matchesYes
warningNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, but the description adds meaningful context beyond them: no credentials required, no server access needed, and pasted input is not stored. That privacy/auth disclosure is genuinely useful for a tool that accepts raw log text, though it doesn't cover output format or matching thresholds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Opens with the triggering condition, then front-loads the return value, constraints, and the routing hint to the sibling. Every sentence carries distinct information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still summarizes the return shape, and the exclusion against payram_doctor plus the zero-argument listing behavior removes the remaining ambiguity. Complete for a read-only diagnostic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters including the area enum. The description only loosely gestures at 'symptom' and 'output' usage and says nothing about id or area narrowing beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (troubleshoot a PayRam problem) and enumerates exactly what it returns: matched known problems, their meaning, how to confirm, the fix, and the next tool. It explicitly distinguishes itself from the sibling payram_doctor, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage ('describe the problem in plain words and/or paste the error or log text'), an edge case ('call with nothing to list known problems'), and an explicit exclusion with the alternative ('for a live check of a running server use payram_doctor'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_payram_testPayram Test Readiness ChecklistA
Read-onlyIdempotent
Inspect

Confirm hosting, credentials, and environment variables before generating demo apps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNo
titleYes
sectionsYes
descriptionNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds scope (which three areas are inspected), but says nothing about failure handling, what happens when a check fails, or whether it blocks subsequent generation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence naming the action and then the inspected domains, with zero repetition of the title. It is tight and wastes nothing, though it is arguably under-elaborated for a tool with several overlapping siblings.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich annotation set and an output schema, the description does not need to explain return values, and it correctly covers the checklist domains. The only remaining gap is disambiguation from adjacent diagnostic and checklist tools, which the description leaves unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema description coverage is 100%, so the baseline is 4. There is no parameter surface the description could usefully expand.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Confirm' plus the enumerated resources (hosting, credentials, environment variables) tells the agent this is a pre-flight readiness check that inspects prerequisites, not a generator or explainer. It is clearly distinct from the many 'generate_*' and 'explain_*' siblings, though it never names those siblings or states what form the confirmation output takes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'before generating demo apps' gives a sequencing cue, which is real usage context. However, it does not name a when-not condition or an alternative such as test_payram_connection, payram_doctor, or generate_setup_checklist, all of which plausibly overlap, leaving the agent to infer which pre-flight tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scaffold_payram_appScaffold Payram Payments & Payouts AppB
Read-onlyIdempotent
Inspect

Generates a minimal full-stack app skeleton with Payram payments and payouts routes (and a simple UI) for a chosen language and framework.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameNoName for the generated application. If not provided, defaults to payram-{framework}-starter
languageYesProgramming language for the application (node for JavaScript/TypeScript)
frameworkYesWeb framework to use for scaffolding the application
includeWebhooksNoWhether to include webhook handler code in the scaffolded application

Output Schema

ParametersJSON Schema
NameRequiredDescription
filesYes
appNameYes
languageYes
frameworkYes
instructionsYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds useful scope context (minimal skeleton, includes both payments and payouts routes, includes a UI), but it never says what artifacts are produced or how the output is delivered/consumed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence that leads with the action and layers in scope without filler. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is unnecessary, and the schema fully covers inputs. The description tells an agent enough to invoke it, though it omits any statement about constraints such as which language/framework combinations are valid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all four parameters documented including enums and the appName default, so the schema does the heavy lifting. The description only echoes 'for a chosen language and framework', adding no syntax or interaction detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb+resource: it generates a minimal full-stack app skeleton containing Payram payments and payouts routes plus a simple UI, parameterized by language and framework. It is clearly distinguishable from the snippet/explain siblings, but it never names an alternative to contrast against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no mention of when a narrow sibling like generate_payment_route_snippet or suggest_file_structure would be preferable. Usage is only implied by the word 'skeleton'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_express_payment_routeExpress create-payment route snippetA
Read-onlyIdempotent
Inspect

Returns an Express router that posts to Payram's /api/v1/payment endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, and 'Returns' is consistent with that read-only profile, so no contradiction. The description adds what the artifact is (an Express router targeting a specific endpoint) but says nothing about auth, env configuration, or what the generated code assumes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the return type and the framework target. Nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value details are covered elsewhere, and annotations carry the safety profile. For a zero-parameter snippet generator this is close to sufficient, though it omits any note about env setup or where the endpoint/credentials come from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no input is needed and cannot be expected to say more about parameters that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('an Express router that posts to Payram's /api/v1/payment endpoint'). The Express framework is clear, and combined with the name this differentiates it from framework siblings like snippet_fastapi_payment_route, though the description itself never names an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers you pick this when building an Express app that needs a create-payment route. There is no explicit when-to-use statement, no mention of the sibling framework snippets, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_fastapi_payment_routeFastAPI create-payment route snippetA
Read-onlyIdempotent
Inspect

Returns a FastAPI handler that calls Payram's create-payment HTTP API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds the useful fact that the generated handler targets Payram's create-payment HTTP API, but it does not say the tool merely emits source text (no execution, no network call at generation time).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single twelve-word sentence that front-loads the return value and the framework. Nothing extraneous, nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter snippet generator with an output schema, the description is nearly sufficient — the return contract is covered by the output schema and the safety profile by annotations. The remaining gap is the lack of any routing cue distinguishing it from the generic route-snippet sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (schema coverage 100% trivially), so the baseline for an empty-param tool applies. There is nothing about parameters the description could or should add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (returns) and resource (a FastAPI handler for Payram's create-payment HTTP API), which is clearly distinct from the Express/Go/Laravel/Spring variants by framework. It does not, however, explicitly differentiate itself from the generic generate_payment_route_snippet sibling, leaving some overlap to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this snippet versus generate_payment_route_snippet or the other framework-specific route snippets. No prerequisites, no exclusions, no routing guidance — an agent must infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_go_payment_handlerGo (Gin) create-payment route snippetA
Read-onlyIdempotent
Inspect

Returns a Gin handler that proxies /api/pay/create to Payram's create-payment API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description adds the proxy target and route path, but says nothing about the generated handler's dependencies, config, or how it authenticates to Payram's API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names verb, output artifact, route, and upstream API with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and no parameters, the description does not need to explain return values. It is complete enough to invoke correctly, though it omits any mention of the sibling snippet variants an agent could confuse it with.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. Schema is trivially empty and fully described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('a Gin handler') plus the exact route (/api/pay/create) and target API. The 'Go (Gin)' framing implicitly distinguishes it from the Express/FastAPI/Spring siblings, though it never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it should pick this when scaffolding a Go/Gin payment route. There is no explicit when-to-use statement, no prerequisites, and no routing to alternatives like generate_payment_route_snippet or the other framework-specific snippet tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_laravel_payment_routeLaravel create-payment route snippetA
Read-onlyIdempotent
Inspect

Returns a Laravel controller that posts to Payram's /api/v1/payment endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds that the returned artifact is a controller targeting the /api/v1/payment endpoint, but discloses nothing about what the snippet contains or requires. With annotations doing the heavy lifting, this is an adequate but modest contribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the artifact type and target endpoint with no filler. Nothing is wasted and the essential information leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't enumerate return values. For a zero-parameter snippet generator this is nearly complete, though it omits any hint of what the generated controller includes or any usage note tying it to the Laravel framework choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters with 100% schema coverage, so the baseline of 4 applies. There is no parameter meaning for the description to add or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (a Laravel controller posting to Payram's /api/v1/payment endpoint), which is more than a tautology. It clearly tells the agent this produces Laravel-framework code, but does not explicitly contrast itself with the sibling framework variants (express, fastapi, go, nextjs, spring).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no conditions that select this tool over its siblings, and no mention of alternatives. The agent must infer from the tool name alone that this is the Laravel-specific choice among the framework snippet family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_nextjs_payment_routeNext.js create-payment route snippetA
Read-onlyIdempotent
Inspect

Returns a Next.js App Router API route that calls Payram's create-payment HTTP API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds that the emitted route targets the App Router and calls the create-payment HTTP endpoint, but says nothing about App Router vs Pages Router requirements or whether it needs an API key context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb, framework, and target API all in order and zero filler. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return value needn't be described, and with no parameters there is little else the agent needs. The only shortfall is not flagging the App Router assumption more prominently, but the description does say 'App Router' so the core assumption is visible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No misleading parameter language present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (a Next.js App Router API route that calls Payram's create-payment HTTP API), and the framework qualifier distinguishes it from the sibling Express/FastAPI/Go/Laravel/Spring snippet tools. It does not explicitly differentiate from generate_payment_route_snippet, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement that this is the Next.js-specific option among framework siblings, and no prerequisites or exclusions. The agent must infer selection purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_spring_payment_controllerSpring Boot create-payment controller snippetA
Read-onlyIdempotent
Inspect

Returns a Spring Boot controller that calls Payram's /api/v1/payment endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
notesNo
titleYes
snippetYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety profile is covered. The description adds that the generated controller calls a specific endpoint, but does not describe what the snippet contains, dependencies, or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, zero parameters, and existence of an output schema, the description adequately states what is returned. The lack of usage guidelines is a minor gap but not critical for a snippet generator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool takes no parameters; baseline 4 applies. Description correctly does not discuss parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Returns' and resource 'Spring Boot controller', and specifies the generated code calls Payram's /api/v1/payment endpoint. Clearly distinguishes from sibling snippet tools by framework (Spring Boot) and artifact type (controller).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Usage is implied by the Spring Boot context but no alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_file_structureSuggest Payram File StructureB
Read-onlyIdempotent
Inspect

Suggests a recommended backend folder/file structure for integrating Payram.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rootYes
notesNo
titleYes
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing behavioral beyond that - it does not say whether the suggestion is opinionated, framework-aware, or how it relates to the sibling scaffolding tools, so it contributes almost no value on this dimension.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the action front-loaded and no filler. It is arguably too terse given the crowded sibling set, but as pure conciseness it is efficient and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and with zero parameters the input side is trivial. What is missing is disambiguation from the many generation/scaffolding siblings, which is the main thing an agent needs here - making this the minimum viable level rather than fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify about inputs. The schema is a closed empty object (additionalProperties=false), which is self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Suggests') and resource ('recommended backend folder/file structure for integrating Payram'), so an agent knows exactly what comes back. It does not, however, distinguish itself from closely related siblings such as scaffold_payram_app, payram_setup_plan, or generate_setup_checklist, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives like scaffold_payram_app (which presumably creates files rather than only suggesting a layout). The agent must infer the use case purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_payram_connectionTest PayRam connectivity (deprecated)A
Read-onlyIdempotent
Inspect

Deprecated: use payram_doctor, which does this and more. Read-only check that a PayRam server is reachable and healthy and, if an API key is supplied, that the key is accepted. Never creates payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoOptional project API key to validate (nothing is created). Passing it exposes the key in this conversation.
baseUrlNoPayRam URL, same origin as the dashboard (e.g. https://pay.example.com). Defaults to PAYRAM_BASE_URL in local mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
baseUrlYes
keyCheckedYes
errorMessageNo
payramVersionNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/destructive/openWorld. The description adds value beyond that: it discloses the apiKey validation behavior, the 'never creates payments' guarantee, and the deprecation supersession. It does not mention rate limits or output shape, but output schema exists so return values needn't be explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with deprecation and replacement, then behavior, then safety guarantee. Every sentence earns its place with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deprecated read-only connectivity test with output schema present and full schema coverage, the description is complete: it signals deprecation, redirects to the successor, describes the check scope, and states the non-mutating guarantee.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are well documented in-schema (apiKey exposure warning, baseUrl default). The description adds a summary of apiKey's purpose but no new syntax or format detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Read-only check that a PayRam server is reachable and healthy') and its deprecation status, explicitly naming payram_doctor as the replacement. Distinct from sibling tools which generate snippets/docs. Docked one point because the deprecated status makes the tool's role somewhat muddied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the superseding tool ('use payram_doctor, which does this and more') and states exactly when the apiKey validation path applies. The 'Never creates payments' line clarifies the boundary. This is a textbook when-to-use vs alternative statement.

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.

  1. 1 tool update
    • Addedexplain_payram_security
  2. 7 tool updates
    • Changedgenerate_mock_webhook_event1 field changed
      • changedOutput schema / properties / meta / properties / language / enum
        Previous value: -[
        -  "typescript",
        -  "javascript",
        -  "python",
        -  "go",
        -  "php",
        -  "java"
        -]New value: +[
        +  "typescript",
        +  "javascript",
        +  "python",
        +  "go",
        +  "php",
        +  "java",
        +  "bash"
        +]
    • Changedgenerate_webhook_event_router1 field changed
      • changedOutput schema / properties / meta / properties / language / enum
        Previous value: -[
        -  "typescript",
        -  "javascript",
        -  "python",
        -  "go",
        -  "php",
        -  "java"
        -]New value: +[
        +  "typescript",
        +  "javascript",
        +  "python",
        +  "go",
        +  "php",
        +  "java",
        +  "bash"
        +]
    • Changedgenerate_webhook_handler1 field changed
      • changedOutput schema / properties / meta / properties / language / enum
        Previous value: -[
        -  "typescript",
        -  "javascript",
        -  "python",
        -  "go",
        -  "php",
        -  "java"
        -]New value: +[
        +  "typescript",
        +  "javascript",
        +  "python",
        +  "go",
        +  "php",
        +  "java",
        +  "bash"
        +]
    • Changedpayram_doctor4 fields changed
      • changedInput schema / properties / baseUrl / description
        Previous value: -"Public URL of the PayRam server, same origin as the dashboard (e.g. https://pay.example.com). No :8080. Required on the hosted MCP."New value: +"Public address of the PayRam server, same origin as the dashboard: https://pay.example.com, or just pay.example.com or an IP (https is tried first, then http). No :8080, no path. Required on the hosted MCP."
      • addedOutput schema / properties / nextCall
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "arguments": {
        +          "additionalProperties": {},
        +          "propertyNames": {
        +            "type": "string"
        +          },
        +          "type": "object"
        +        },
        +        "tool": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "tool",
        +        "arguments"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "The single most useful tool call to make next"
        +}
      • addedOutput schema / properties / setupStage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": "installed",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Pass as payram_setup_plan stage once the server answers PayRam health; null when not reachable"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "baseUrl",
        -  "healthy",
        -  "failedStage",
        -  "version",
        -  "latestVersion",
        -  "findings",
        -  "warnings",
        -  "likelyCauses",
        -  "nextSteps"
        -]New value: +[
        +  "baseUrl",
        +  "healthy",
        +  "failedStage",
        +  "version",
        +  "latestVersion",
        +  "findings",
        +  "warnings",
        +  "likelyCauses",
        +  "nextSteps",
        +  "setupStage",
        +  "nextCall"
        +]
    • Changedpayram_runbook3 fields changed
      • changedInput schema / properties / task / enum
        Previous value: -[
        -  "set_site_url",
        -  "change_domain",
        -  "ssl_setup",
        -  "ssl_renewal_fix",
        -  "firewall_ports",
        -  "upgrade",
        -  "backup",
        -  "restore",
        -  "add_chain",
        -  "smart_bridge",
        -  "mainnet_cutover",
        -  "operator_setup",
        -  "rotate_api_key",
        -  "reset_test_install",
        -  "shopify_connector",
        -  "woocommerce_plugin",
        -  "secure_analytics_mcp"
        -]New value: +[
        +  "set_site_url",
        +  "change_domain",
        +  "ssl_setup",
        +  "ssl_renewal_fix",
        +  "firewall_ports",
        +  "upgrade",
        +  "backup",
        +  "restore",
        +  "add_chain",
        +  "smart_bridge",
        +  "mainnet_cutover",
        +  "operator_setup",
        +  "rotate_api_key",
        +  "reset_test_install",
        +  "shopify_connector",
        +  "woocommerce_plugin",
        +  "secure_analytics_mcp",
        +  "install_failed",
        +  "custom_port_or_proxy",
        +  "external_database",
        +  "forgot_root_password"
        +]
      • changedOutput schema / properties / runbook / properties / steps / items / properties / who / enum
        Previous value: -[
        -  "agent_shell",
        -  "human",
        -  "human_dashboard"
        -]New value: +[
        +  "agent_shell",
        +  "agent_http",
        +  "human",
        +  "human_dashboard"
        +]
      • changedOutput schema / properties / runbook / properties / task / enum
        Previous value: -[
        -  "set_site_url",
        -  "change_domain",
        -  "ssl_setup",
        -  "ssl_renewal_fix",
        -  "firewall_ports",
        -  "upgrade",
        -  "backup",
        -  "restore",
        -  "add_chain",
        -  "smart_bridge",
        -  "mainnet_cutover",
        -  "operator_setup",
        -  "rotate_api_key",
        -  "reset_test_install",
        -  "shopify_connector",
        -  "woocommerce_plugin",
        -  "secure_analytics_mcp"
        -]New value: +[
        +  "set_site_url",
        +  "change_domain",
        +  "ssl_setup",
        +  "ssl_renewal_fix",
        +  "firewall_ports",
        +  "upgrade",
        +  "backup",
        +  "restore",
        +  "add_chain",
        +  "smart_bridge",
        +  "mainnet_cutover",
        +  "operator_setup",
        +  "rotate_api_key",
        +  "reset_test_install",
        +  "shopify_connector",
        +  "woocommerce_plugin",
        +  "secure_analytics_mcp",
        +  "install_failed",
        +  "custom_port_or_proxy",
        +  "external_database",
        +  "forgot_root_password"
        +]
    • Changedpayram_setup_plan3 fields changed
      • addedInput schema / properties / access
        Added value: +{
        +  "default": "ssh",
        +  "description": "ssh = you can run commands on the server yourself. human_runs_commands = you only chat: the human runs each command and pastes the output back. Ask the user which applies before planning.",
        +  "enum": [
        +    "ssh",
        +    "human_runs_commands"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / phases / items / properties / steps / items / properties / executor / enum
        Previous value: -[
        -  "agent_shell",
        -  "agent_http",
        -  "human",
        -  "human_dashboard"
        -]New value: +[
        +  "agent_shell",
        +  "agent_http",
        +  "human_shell",
        +  "human",
        +  "human_dashboard"
        +]
      • addedOutput schema / properties / phases / items / properties / steps / items / properties / ifItFails
        Added value: +{
        +  "description": "What to do when the step does not give the expected result",
        +  "type": "string"
        +}
    • Addedpayram_troubleshoot
  3. 55 tool updates
    • Removedassess_payram_project
    • Removedcheck_node_sync
    • Removedcheck_payment_readiness
    • Removedcreate_payment_link
    • Changedexplain_payment_flow2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexplain_payram_basics2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexplain_payram_concepts2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexplain_referral_flow2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedexplain_referrals_basics2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_env_template2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_mock_webhook_event2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payment_http_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payment_route_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payment_sdk_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payment_status_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payout_recipient_flow_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payout_sdk_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_payout_status_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_referral_route_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_referral_sdk_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_referral_status_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_referral_validation_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_setup_checklist2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_topup_integration_snippet2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_webhook_event_router2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgenerate_webhook_handler2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_agent_setup_flow2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedget_daily_volume
    • Removedget_payment_summary
    • Changedget_payram_doc_by_id2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_payram_links2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_referral_dashboard_guide2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedget_unswept_balances
    • Removedlist_currencies
    • Changedlist_payram_docs2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedlist_platforms
    • Removedlist_recipients
    • Removedlookup_payment
    • Changedonboard_agent_setup2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpayram_doctor15 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / apiKey / description
        Previous value: -"Merchant API key (per-project). Defaults to PAYRAM_API_KEY. Obtain headlessly: ./setup_payram_agents.sh ensure-api-key"New value: +"Optional project API key to validate (never creates anything). Passing it puts the key in this conversation; prefer running payram_ops_playbook \"connect\" locally."
      • changedInput schema / properties / baseUrl / description
        Previous value: -"PayRam server base URL. Defaults to PAYRAM_BASE_URL. The installer publishes on port 80 (http://localhost), not :8080."New value: +"Public URL of the PayRam server, same origin as the dashboard (e.g. https://pay.example.com). No :8080. Required on the hosted MCP."
      • removedInput schema / properties / baseUrl / format
        Removed value: -"uri"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties / baseUrl
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / failedStage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedOutput schema / properties / failedStage / description
        Previous value: -"First failing stage: reachability | api-key | jwt | readiness; null when healthy"New value: +"First failing stage, null when healthy"
      • addedOutput schema / properties / failedStage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / latestVersion
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / likelyCauses / items / properties / likelihood / description
        Previous value: -"Rough probability, e.g. \"80%\""New value: +"Rough probability, e.g. \"60%\""
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "healthy",
        -  "failedStage",
        -  "findings",
        -  "likelyCauses",
        -  "nextSteps"
        -]New value: +[
        +  "baseUrl",
        +  "healthy",
        +  "failedStage",
        +  "version",
        +  "latestVersion",
        +  "findings",
        +  "warnings",
        +  "likelyCauses",
        +  "nextSteps"
        +]
    • Addedpayram_ops_playbook
    • Addedpayram_runbook
    • Addedpayram_setup_plan
    • Changedprepare_payram_test2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedrestart_payram_worker
    • Changedscaffold_payram_app2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Removedsearch_payments
    • Changedsnippet_express_payment_route2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsnippet_fastapi_payment_route2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsnippet_go_payment_handler2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsnippet_laravel_payment_route2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsnippet_nextjs_payment_route2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsnippet_spring_payment_controller2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsuggest_file_structure5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / $defs
        Added value: +{
        +  "__schema0": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "children": {
        +        "items": {
        +          "$ref": "#/$defs/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "enum": [
        +          "file",
        +          "folder"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "path",
        +      "type"
        +    ],
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedOutput schema / definitions
        Removed value: -{
        -  "__schema0": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "children": {
        -        "items": {
        -          "$ref": "#/definitions/__schema0"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "enum": [
        -          "file",
        -          "folder"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "path",
        -      "type"
        -    ],
        -    "type": "object"
        -  }
        -}
      • changedOutput schema / properties / root / $ref
        Previous value: -"#/definitions/__schema0"New value: +"#/$defs/__schema0"
    • Changedtest_payram_connection9 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / apiKey / description
        Previous value: -"Your Payram API key from the dashboard. If not provided, uses PAYRAM_API_KEY from environment."New value: +"Optional project API key to validate (nothing is created). Passing it exposes the key in this conversation."
      • changedInput schema / properties / baseUrl / description
        Previous value: -"The base URL of your Payram server (e.g., https://your-server.example). If not provided, uses PAYRAM_BASE_URL from environment."New value: +"PayRam URL, same origin as the dashboard (e.g. https://pay.example.com). Defaults to PAYRAM_BASE_URL in local mode."
      • removedInput schema / properties / baseUrl / format
        Removed value: -"uri"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties / keyChecked
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / statusCode
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "maximum": 599,
        -      "minimum": 100,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "statusCode",
        -  "baseUrl"
        -]New value: +[
        +  "ok",
        +  "baseUrl",
        +  "keyChecked"
        +]
  4. 3 tool updates
    • Changedcheck_node_sync2 fields changed
      • addedOutput schema / properties / workersAvailable
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "workers",
        -  "chains",
        -  "issues",
        -  "healthy"
        -]New value: +[
        +  "workers",
        +  "chains",
        +  "issues",
        +  "healthy",
        +  "workersAvailable"
        +]
    • Addedgenerate_topup_integration_snippet
    • Changedget_unswept_balances10 fields changed
      • changedOutput schema / properties / balances / items / additionalProperties
        Previous value: -falseNew value: +{}
      • addedOutput schema / properties / balances / items / properties / amountUSD
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / balances / items / properties / coldWalletConfigured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / balances / items / properties / hotWalletActive
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / balances / items / properties / hotWalletAddress
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / balances / items / properties / isSCWDeploymentPending
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / balances / items / properties / lastSweepError
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "actionHint": {
        +      "type": "string"
        +    },
        +    "address": {
        +      "type": "string"
        +    },
        +    "category": {
        +      "type": "string"
        +    },
        +    "occurredAt": {
        +      "type": "string"
        +    },
        +    "reason": {
        +      "type": "string"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "statusCode": {
        +      "type": "string"
        +    },
        +    "txHash": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "statusCode",
        +    "category",
        +    "reason",
        +    "retryable",
        +    "occurredAt",
        +    "address"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / balances / items / properties / nextProbableSweepAt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / balances / items / properties / sweepInProgressTxHash
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / balances / items / properties / walletActive
        Added value: +{
        +  "type": "boolean"
        +}
  5. 2 tool updates
    • Changedcheck_node_sync8 fields changed
      • addedOutput schema / properties / chains / items / properties / listenerRunning
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / chains / items / properties / listenerWorker
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / chains / items / properties / oldestBlockAgeSeconds
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / chains / items / properties / staleThresholdSeconds
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / chains / items / properties / verdict
        Added value: +{
        +  "enum": [
        +    "healthy",
        +    "lagging",
        +    "unreachable",
        +    "listener-down"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / chains / items / required
        Previous value: -[
        -  "blockchainCode",
        -  "reachable",
        -  "nodes"
        -]New value: +[
        +  "blockchainCode",
        +  "verdict",
        +  "staleThresholdSeconds",
        +  "listenerWorker",
        +  "listenerRunning",
        +  "reachable",
        +  "oldestBlockAgeSeconds",
        +  "nodes"
        +]
      • addedOutput schema / properties / issues
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "workers",
        -  "chains",
        -  "healthy"
        -]New value: +[
        +  "workers",
        +  "chains",
        +  "issues",
        +  "healthy"
        +]
    • Addedrestart_payram_worker
  6. 3 tool updates
    • Changedcreate_payment_link2 fields changed
      • changedInput schema / properties / customerEmail / description
        Previous value: -"Customer email (optional)"New value: +"Customer email (required — the backend validates it as a non-empty email)"
      • changedInput schema / required
        Previous value: -[
        -  "amountInUSD",
        -  "customerID"
        -]New value: +[
        +  "amountInUSD",
        +  "customerID",
        +  "customerEmail"
        +]
    • Changedlist_recipients4 fields changed
      • addedOutput schema / properties / recipients / items / properties / email / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / recipients / items / properties / email / type
        Removed value: -"string"
      • addedOutput schema / properties / recipients / items / properties / name / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / recipients / items / properties / name / type
        Removed value: -"string"
    • Changedsearch_payments2 fields changed
      • changedInput schema / properties / paymentStatus / description
        Previous value: -"Filter by payment status."New value: +"Filter by payment status (FILLED = completed)."
      • changedInput schema / properties / paymentStatus / items / enum
        Previous value: -[
        -  "open",
        -  "closed",
        -  "cancelled",
        -  "partially_filled",
        -  "over_filled"
        -]New value: +[
        +  "OPEN",
        +  "FILLED",
        +  "PARTIALLY_FILLED",
        +  "OVER_FILLED",
        +  "CANCELLED",
        +  "CONFIRMING",
        +  "DEPOSIT_RECEIVED",
        +  "UNDEFINED"
        +]
  7. 1 tool update
    • Addedpayram_doctor
  8. 17 tool updates
    • Changedcheck_node_sync4 fields changed
      • changedOutput schema / properties / chains / items / properties / nodes / items / additionalProperties
        Previous value: -trueNew value: +{}
      • addedOutput schema / properties / chains / items / properties / nodes / items / properties / blockAgeSeconds / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / chains / items / properties / nodes / items / properties / blockAgeSeconds / type
        Removed value: -[
        -  "number",
        -  "null"
        -]
      • changedOutput schema / properties / workers / items / additionalProperties
        Previous value: -trueNew value: +{}
    • Changedcreate_payment_link2 fields changed
      • addedInput schema / properties / customerEmail / pattern
        Added value: +"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
      • changedOutput schema / additionalProperties
        Previous value: -trueNew value: +{}
    • Changedexplain_payment_flow1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_payram_basics1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_payram_concepts1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_referral_flow1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_referrals_basics1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_daily_volume5 fields changed
      • removedOutput schema / properties / byCurrency / items / $ref
        Removed value: -"#/properties/byNetwork/items"
      • addedOutput schema / properties / byCurrency / items / additionalProperties
        Added value: +false
      • addedOutput schema / properties / byCurrency / items / properties
        Added value: +{
        +  "count": {
        +    "type": "number"
        +  },
        +  "name": {
        +    "type": "string"
        +  },
        +  "volumeUSD": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / byCurrency / items / required
        Added value: +[
        +  "name",
        +  "count",
        +  "volumeUSD"
        +]
      • addedOutput schema / properties / byCurrency / items / type
        Added value: +"object"
    • Changedget_payram_doc_by_id1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_payram_links1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_referral_dashboard_guide1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_currencies1 field changed
      • changedOutput schema / properties / currencies / items / additionalProperties
        Previous value: -trueNew value: +{}
    • Changedlist_payram_docs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_recipients1 field changed
      • changedOutput schema / properties / recipients / items / additionalProperties
        Previous value: -trueNew value: +{}
    • Changedprepare_payram_test1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsearch_payments2 fields changed
      • addedInput schema / properties / offset / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / payments / items / propertyNames
        Added value: +{
        +  "type": "string"
        +}
    • Changedsuggest_file_structure6 fields changed
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "children": {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "enum": [
        +          "file",
        +          "folder"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "path",
        +      "type"
        +    ],
        +    "type": "object"
        +  }
        +}
      • addedOutput schema / properties / root / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / properties / root / additionalProperties
        Removed value: -false
      • removedOutput schema / properties / root / properties
        Removed value: -{
        -  "children": {
        -    "items": {
        -      "$ref": "#/properties/root"
        -    },
        -    "type": "array"
        -  },
        -  "description": {
        -    "type": "string"
        -  },
        -  "path": {
        -    "type": "string"
        -  },
        -  "type": {
        -    "enum": [
        -      "file",
        -      "folder"
        -    ],
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / properties / root / required
        Removed value: -[
        -  "path",
        -  "type"
        -]
      • removedOutput schema / properties / root / type
        Removed value: -"object"
  9. 6 tool updates
    • Addedcheck_node_sync
    • Addedcheck_payment_readiness
    • Addedcreate_payment_link
    • Addedgenerate_payout_recipient_flow_snippet
    • Addedlist_currencies
    • Addedlist_recipients
  10. 1 tool update
    • Addedget_agent_setup_flow
  11. 5 tool updates
    • Changedget_daily_volume1 field changed
      • changedInput schema / properties / externalPlatformId / description
        Previous value: -"External platform ID. Falls back to PAYRAM_EXTERNAL_PLATFORM_ID env var."New value: +"Optional. Auto-discovered from your account if omitted."
    • Changedget_payment_summary1 field changed
      • changedInput schema / properties / externalPlatformId / description
        Previous value: -"External platform ID. Falls back to PAYRAM_EXTERNAL_PLATFORM_ID env var if not provided."New value: +"Optional. Auto-discovered from your account if omitted."
    • Addedlist_platforms
    • Changedlookup_payment1 field changed
      • changedInput schema / properties / externalPlatformId / description
        Previous value: -"External platform ID. Falls back to PAYRAM_EXTERNAL_PLATFORM_ID env var if not provided."New value: +"Optional. Auto-discovered from your account if omitted."
    • Changedsearch_payments1 field changed
      • changedInput schema / properties / externalPlatformId / description
        Previous value: -"External platform ID. Falls back to PAYRAM_EXTERNAL_PLATFORM_ID env var."New value: +"Optional. Auto-discovered from your account if omitted."
  12. 5 tool updates
    • Addedget_daily_volume
    • Addedget_payment_summary
    • Addedget_unswept_balances
    • Addedlookup_payment
    • Addedsearch_payments
  13. 36 tool updates
    • First observedassess_payram_project
    • First observedexplain_payment_flow
    • First observedexplain_payram_basics
    • First observedexplain_payram_concepts
    • First observedexplain_referral_flow
    • First observedexplain_referrals_basics
    • First observedgenerate_env_template
    • First observedgenerate_mock_webhook_event
    • First observedgenerate_payment_http_snippet
    • First observedgenerate_payment_route_snippet
    • First observedgenerate_payment_sdk_snippet
    • First observedgenerate_payment_status_snippet
    • First observedgenerate_payout_sdk_snippet
    • First observedgenerate_payout_status_snippet
    • First observedgenerate_referral_route_snippet
    • First observedgenerate_referral_sdk_snippet
    • First observedgenerate_referral_status_snippet
    • First observedgenerate_referral_validation_snippet
    • First observedgenerate_setup_checklist
    • First observedgenerate_webhook_event_router
    • First observedgenerate_webhook_handler
    • First observedget_payram_doc_by_id
    • First observedget_payram_links
    • First observedget_referral_dashboard_guide
    • First observedlist_payram_docs
    • First observedonboard_agent_setup
    • First observedprepare_payram_test
    • First observedscaffold_payram_app
    • First observedsnippet_express_payment_route
    • First observedsnippet_fastapi_payment_route
    • First observedsnippet_go_payment_handler
    • First observedsnippet_laravel_payment_route
    • First observedsnippet_nextjs_payment_route
    • First observedsnippet_spring_payment_controller
    • First observedsuggest_file_structure
    • First observedtest_payram_connection

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Non-custodial multi-chain crypto payment gateway via CoinVoyage. 15 tools for creating PayOrders, managing webhooks, and cross-chain swaps. Supports BTC, SOL, ETH, Base, Arbitrum, Polygon, BSC, Sui, USDC/USDT.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Accept crypto payments from AI agents: create an invoice in one call and get a hosted checkout link (USDC/USDT on Celo, Base, Arbitrum, Polygon, BSC). No API key, instant self-custody settlement.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to deploy and operate a self-hosted, no-signup crypto payment gateway with multi-chain support, card-to-crypto checkout, and MCP tools for payment links and integration snippets.
    158
    -
  • A
    license
    A
    quality
    B
    maintenance
    No-KYC crypto VPS hosting with an MCP server that lets AI agents provision VPS programmatically. Pay with USDC/USDT on Base and Ethereum, no accounts or verification required.
    21
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources