Skip to main content
Glama

Server Details

Read products, sales, subscribers and offer codes; verify, enable and disable product licenses.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 3.9/5 across 20 of 20 tools scored. Lowest: 3.2/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource (product, offer code, license, sale, subscriber, user, variant category, custom field, resource subscription) with a specific action (get, list, create, update, enable, disable, verify). Even the license tools (enable, disable, verify) are clearly differentiated by their descriptions, and no two tools overlap in purpose.

Naming Consistency5/5

All tools follow the consistent pattern of 'gumroad_' + verb (create, get, list, update, enable, disable, verify) + noun in snake_case. The verbs and nouns are uniformly chosen, making the API predictable and easy to navigate.

Tool Count3/5

20 tools is in the 16-25 range that feels heavy, but the breadth is justified by Gumroad's multiple resource types. However, the number leans toward the upper bound, and some resources have only partial CRUD coverage, so the count is borderline.

Completeness2/5

The tool set is read-heavy: products lack create/update/delete, offer codes lack delete, resource subscriptions lack create/delete, and custom fields only have list. These significant gaps prevent agents from performing full lifecycle management, which will cause failures for common workflows like publishing a new product.

Available Tools

20 tools
gumroad_create_offer_codeCreate offer codeB
Destructive
Inspect

Create a new offer code (discount code) on a product. Gumroad REST: POST /v2/products/{product_id}/offer_codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe discount code text buyers enter (e.g. LAUNCH20).
universalNoWhether the offer code applies to all of the user's products (default false).
amount_offYesThe amount off — in cents when offer_type is 'cents', or a percentage when 'percent'.
offer_typeNoWhether amount_off is a fixed amount in 'cents' or a 'percent' discount (default 'cents').
product_idYesThe product id to create the offer code on.
max_purchase_countNoOptional cap on how many times the offer code can be used.
Behavior1/5

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

The description says 'Create a new offer code,' which is an additive operation, but the annotations declare destructiveHint: true. This is a direct contradiction, so per the rubric the score is 1. The description also does not disclose any behavioral details beyond the contradiction.

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 two sentences long, front-loaded with the purpose, and includes a helpful REST endpoint. Every word provides useful context with no redundancy.

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?

The description is minimal despite the tool having 6 parameters and no output schema. It does not mention the return value, potential errors, idempotency, or any side effects beyond creation. The REST endpoint adds some context but the overall guidance is incomplete.

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?

The schema provides 100% coverage with clear descriptions for all 6 parameters, including the special behavior of amount_off depending on offer_type. The description adds no parameter-specific meaning beyond what the schema already provides.

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?

The description explicitly states 'Create a new offer code (discount code) on a product,' which clearly identifies the action and resource. The REST endpoint further specifies the target and distinguishes this from sibling tools like update_offer_code or list_offer_codes.

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 description implies this tool is for creating offer codes, but it does not explicitly state when to use it over alternatives like update_offer_code. The usage context is inferred from the verb 'Create' rather than stated.

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

gumroad_disable_licenseDisable licenseA
Destructive
Inspect

Disable a product's license key. Gumroad REST: PUT /v2/licenses/disable.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id the license belongs to.
license_keyYesThe license key to disable.
Behavior3/5

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

Annotations already declare destructiveHint: true, indicating this is a destructive operation. The description adds the REST endpoint reference but does not disclose additional behavioral traits such as reversibility, side effects on customer access, or required permissions. With annotations covering the destructive nature, a score of 3 reflects the minimal extra context provided.

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 sentence plus a technical endpoint reference. It is exceptionally concise and front-loaded, with no wasted words. This is ideal for a simple 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?

Given the simplicity of the tool (2 params, no output schema, annotations present), the description is adequate. It explains the core action and the endpoint. It could mention the effect on the license (e.g., irreversible) or the relationship with enable_license, but these are not essential given the annotations and clear purpose.

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 both product_id and license_key having clear descriptions. The tool description does not add any parameter details beyond what the schema already provides, so the baseline of 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?

The description uses a specific verb and resource: 'Disable a product's license key.' This clearly distinguishes it from sibling tools like gumroad_enable_license and gumroad_verify_license, making the tool's purpose unambiguous.

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 gives no explicit guidance on when to use this tool versus alternatives. It does not mention that this should be used instead of disable_product or how it relates to enable_license/verify_license. There is no context beyond the basic action.

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

gumroad_disable_productDisable productA
Destructive
Inspect

Disable (unpublish) a product so it can no longer be sold. Gumroad REST: PUT /v2/products/{id}/disable.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe product id to disable.
Behavior4/5

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

The annotations already flag destructiveHint=true, and the description adds valuable context beyond that: 'unpublish' and 'can no longer be sold,' which clarifies the exact consequence. It does not mention reversibility or auth requirements, but the annotation plus this effect description is sufficient for a simple destructive action.

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, front-loaded sentence that combines the action, effect, and API endpoint without any filler. Every word contributes to understanding the tool's function and context.

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 simple tool with one parameter, a destructive annotation, and no output schema, the description is complete. It explains what happens (product becomes unsellable), how it relates to the API, and leaves no critical gaps. The sibling context and annotations corroborate the sufficiency.

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?

The schema already describes the 'id' parameter with 100% coverage ('The product id to disable.'). The description does not add extra parameter details, but with such high schema coverage, this is adequate. The baseline of 3 applies as the schema carries the parameter semantics.

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?

The description clearly states the tool's action ('Disable (unpublish) a product') and its effect ('so it can no longer be sold'). It distinguishes this from sibling tools like gumroad_enable_product and gumroad_get_product by specifying the exact behavior and outcome, and even provides the REST endpoint for additional clarity.

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?

The description implies the use case: when a product should no longer be sold. It provides clear context for when to invoke this tool, though it does not explicitly mention alternatives or exclusions (e.g., 'use enable_product to reverse'). The effect is clear enough that an agent can decide correctly.

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

gumroad_enable_licenseEnable licenseA
Destructive
Inspect

Enable a product's license key. Gumroad REST: PUT /v2/licenses/enable.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id the license belongs to.
license_keyYesThe license key to enable.
Behavior2/5

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

The annotations already declare destructiveHint: true, so the mutating nature is known. The description adds no behavioral context beyond what the annotation provides; the REST endpoint is a technical detail but not a behavioral trait. No contradiction is present.

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 concise sentence plus the API endpoint reference. There is no redundant information or filler, making it highly efficient.

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?

The tool is simple with two parameters and no output schema. The description provides the action and endpoint, while annotations cover the destructive nature. This is sufficient for basic invocation, though it does not explain what happens if the license is already enabled or if the key is invalid.

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?

The schema description coverage is 100%, documenting both product_id and license_key with descriptions. The tool description adds no additional parameter semantics, so the baseline score of 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?

The description clearly states the action: 'Enable a product's license key.' This uses a specific verb and resource, and the endpoint 'PUT /v2/licenses/enable' reinforces the purpose. It is distinct from sibling tools like gumroad_disable_license and gumroad_verify_license.

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 description does not explicitly state when to use this tool versus alternatives, but the action itself implies it should be used when enabling a license. There is no mention of exclusions or prerequisites, so the usage context is only implied, not explicit.

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

gumroad_enable_productEnable productA
Destructive
Inspect

Enable (publish) a product so it can be sold. Gumroad REST: PUT /v2/products/{id}/enable.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe product id to enable.
Behavior3/5

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

Annotations indicate destructiveHint=true, so the agent knows it is a state-changing operation. The description adds the semantic that enabling makes the product sellable, but it does not disclose idempotency, permissions, or side effects. This is minimal added value beyond the annotation.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the action and purpose, and includes the exact REST call. No wasted 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?

For a tool with one parameter and no output schema, the description conveys the purpose, the endpoint, and the effect. It is sufficient for an agent to select and invoke it, though it does not detail return values or edge cases.

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?

The schema already documents the single required 'id' parameter with 100% coverage. The description does not add further meaning beyond noting the endpoint uses the product id, so a baseline score of 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?

The description clearly states the tool enables or publishes a product for sale, with a specific verb and resource. It distinguishes from siblings like disable_product and enable_license by specifying the product context and providing the REST endpoint.

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?

The phrase 'so it can be sold' provides clear context for when to use the tool—publishing a product. However, it does not explicitly mention alternatives or when not to use it, such as contrasting with disable_product.

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

gumroad_get_offer_codeGet offer codeA
Read-only
Inspect

Get a single offer code on a product by id. Gumroad REST: GET /v2/products/{product_id}/offer_codes/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe offer code id.
product_idYesThe product id.
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description's GET method aligns with that. The description adds the REST path but no extra behavioral context like error cases, pagination, or return format. It does not contradict 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?

The description is two short sentences, front-loaded with the main action, and includes the REST endpoint for precision. No fluff or redundant 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?

For a simple get-by-id tool with two well-described params and no output schema, the description is sufficient. It clearly defines the scope (single offer code on a product) and the REST path. It could benefit from noting potential 404s, but this is not essential given the simplicity.

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 both 'id' and 'product_id' already described in the schema. The description adds no additional meaning beyond what the schema provides, so the baseline 3 applies.

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?

The description clearly states 'Get a single offer code on a product by id,' identifying a specific verb and resource. The word 'single' distinguishes it from listing operations like gumroad_list_offer_codes, and the REST endpoint adds precision.

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 description implies usage when you have a specific offer code ID, but it does not explicitly contrast with the sibling list tool or state when not to use it. Usage guidance is implied rather than stated.

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

gumroad_get_productGet productA
Read-only
Inspect

Get a single product by id. Gumroad REST: GET /v2/products/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe product id.
Behavior2/5

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

Annotations declare readOnlyHint=true, so the agent knows it's a safe read operation. The description adds little beyond the REST endpoint reference; it does not mention return format, errors, authentication, or any other behavioral details, so minimal value is added.

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 concise sentence with the purpose front-loaded and the REST endpoint as a supplementary detail. No wasted 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?

For a simple 1-param, read-only tool with no output schema, the description adequately states what it does. It could mention return value or error behavior, but given the tool's simplicity and annotations, it is sufficiently complete.

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?

The schema covers the only parameter 'id' with description 'The product id.' at 100% coverage. The description's 'by id' adds no new meaning; baseline 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?

The description clearly states the verb 'Get' and the resource 'product' with the scope 'single by id'. This distinguishes it from sibling tools like list_products, making it unambiguous.

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 description implies usage for retrieving one product by id but does not explicitly mention when to use alternatives such as list_products for multiple products. No clear when-not-to-use guidance is provided.

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

gumroad_get_saleGet saleA
Read-only
Inspect

Get a single sale by id. Gumroad REST: GET /v2/sales/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe sale id.
Behavior3/5

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

The readOnlyHint annotation already declares this is a safe read operation. The description adds the REST method (GET) and path, which is minor contextual value beyond the annotation. It does not describe error behavior, response format, or authentication, but the annotation reduces the burden. No contradiction with 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?

The description is two short sentences, directly states the purpose, and includes the REST reference. There is no wasted verbiage, making it easy to parse quickly.

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?

This is a simple retrieval tool with one parameter, a read-only annotation, and no output schema. The description sufficiently conveys what the tool does and how to invoke it. No additional context is necessary.

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% for the single 'id' parameter with its own description. The tool description says 'by id' and shows the URL placeholder '{id}', which aligns with the schema but adds no new semantic detail. Baseline of 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?

The description clearly states the tool's function: 'Get a single sale by id.' It uses a specific verb ('Get') and resource ('sale'), and the phrase 'single' distinguishes it from listing tools like gumroad_list_sales. The REST endpoint adds precision.

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?

The description provides clear context: this tool is for fetching a single sale by its id. However, it does not explicitly name alternatives like gumroad_list_sales for retrieving multiple sales, so it lacks explicit when-not-to-use guidance. The 'single' keyword implies the distinction.

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

gumroad_get_subscriberGet subscriberA
Read-only
Inspect

Get a single subscriber by id. Gumroad REST: GET /v2/subscribers/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe subscriber id.
Behavior2/5

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

The annotation readOnlyHint=true already covers the safety profile as a read operation. The description adds only the REST endpoint (GET) and does not disclose additional behavioral traits like error responses, pagination, or return format, providing no value beyond 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?

The description is two concise sentences, front-loading the purpose and immediately followed by the REST endpoint. There is no filler or redundant 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?

For a simple get-by-id tool with a readOnlyHint annotation, the description is mostly complete. It lacks explicit mention of the return payload, but given the simplicity and the annotation, it is adequate for invocation.

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?

The schema has 100% coverage for the single 'id' parameter with a clear description ('The subscriber id.'), so the description's reference to 'by id' adds no new meaning beyond what the schema already provides.

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?

The description clearly states 'Get a single subscriber by id,' specifying both the verb (get) and resource (subscriber), and distinguishes it from sibling tools like gumroad_list_subscribers by emphasizing 'single' and 'by id.' The REST endpoint further reinforces the exact action.

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 purpose implies usage when a specific subscriber id is known, but there is no explicit guidance on when not to use this tool or mention of alternatives such as gumroad_list_subscribers for retrieving all subscribers. The context is clear but not elaborated.

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

gumroad_get_userGet userA
Read-only
Inspect

Get the authenticated user associated with the current Gumroad access token. Gumroad REST: GET /v2/user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

The annotation readOnlyHint=true already indicates a read operation. The description adds meaningful context by specifying that the returned user is the one associated with the current Gumroad access token, which clarifies authentication scope. It does not mention error handling or rate limits, but for a simple no-parameter GET, this is acceptable additional context beyond the annotation.

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

Conciseness5/5

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

The description consists of two short sentences: the first states the tool's purpose, and the second provides the REST endpoint. Every word earns its place, with no fluff or redundancy. It is concise and front-loaded with the essential intent.

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 zero-parameter, read-only tool with no output schema, the description is fully sufficient. It explains what the tool does and gives the REST endpoint as a reference. The return value is implied by 'Get the authenticated user', and there are no missing prerequisites or edge cases that need explanation.

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, and the input schema is an empty object. With schema coverage at 100% (trivially), there is nothing for the description to add about parameters. The baseline for zero parameters is 4, and the description correctly omits any unnecessary parameter detail.

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?

The description clearly states the tool 'Get the authenticated user associated with the current Gumroad access token', which is a specific verb+resource combination. It distinguishes itself from sibling tools by focusing on the authenticated user rather than products, sales, licenses, etc., leaving no ambiguity about its purpose.

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?

While it does not explicitly name alternatives, the description establishes clear context: this tool retrieves the user tied to the current access token. Given the sibling list contains tools for other entities, the usage context is evident. It lacks 'when not to use' guidance, so it does not fully meet the explicit exclusion criterion.

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

gumroad_get_variant_categoryGet variant categoryA
Read-only
Inspect

Get a single variant category on a product by id. Gumroad REST: GET /v2/products/{product_id}/variant_categories/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe variant category id.
product_idYesThe product id.
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds the REST endpoint reference but no additional behavioral context such as authentication requirements, error conditions, or return format. It does not contradict annotations, but it also does not enrich beyond them.

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, complete sentence that clearly states the action and resource, with no wasted words. It also includes a precise REST endpoint reference, which is useful for developers without bloating the 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?

This is a simple read-only lookup tool with only two parameters and no output schema. The description, combined with full schema coverage and readOnlyHint annotation, provides sufficient context for an agent to invoke the tool correctly. A perfect score would require a bit more detail on expected response structure or error handling, but for this complexity it is nearly complete.

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?

The input schema has 100% description coverage for both parameters ('id' and 'product_id'), so the description does not need to add parameter details. The description's mention of 'by id' adds minimal extra meaning but does not compensate for anything missing, 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?

The description uses a specific verb ('Get') with a clear resource ('a single variant category on a product') and identifies the lookup method ('by id'). It distinguishes from sibling tools like 'gumroad_list_variant_categories' and 'gumroad_get_product' by specifying the exact resource and identifier.

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?

The description clearly implies when to use this tool: when you need a specific variant category by ID, as opposed to listing all categories (gumroad_list_variant_categories). It does not explicitly state exclusions or alternatives, but the context is clear from the tool name and sibling list.

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

gumroad_list_custom_fieldsList custom fieldsA
Read-only
Inspect

List a product's custom fields (extra fields collected at checkout). Gumroad REST: GET /v2/products/{product_id}/custom_fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id.
Behavior3/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds the definition of custom fields and the REST endpoint, providing some additional context. However, it does not disclose any further behavioral traits such as pagination, error behavior, or response format, which is a minor gap given the lack of an output schema.

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 two sentences, front-loaded with the purpose and including a useful REST endpoint reference. Every word earns its place with no redundancy.

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 simple list operation with one parameter, a readOnlyHint annotation, and no output schema, the description covers the core essentials: what it does and the resource. It could explicitly mention that it returns a list, but 'List' strongly implies this. The lack of detail on response structure is acceptable given the simplicity.

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?

The schema already provides 100% coverage for the single parameter 'product_id' with the description 'The product id.' The tool description reinforces that this is the product whose custom fields are listed, but it does not add substantial meaning beyond the schema. The baseline for high schema coverage is 3.

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?

The description clearly states the action (List), the resource (a product's custom fields), and provides context on what custom fields are (extra fields collected at checkout). It also includes the exact REST endpoint, which unambiguously identifies the operation and distinguishes it from sibling list tools for other resources.

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?

The description clearly implies the use case: retrieving custom fields for a specific product. It does not explicitly discuss alternatives or exclusions, but the resource specificity itself distinguishes it from other list tools. Given the straightforward nature of the operation, this is adequate.

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

gumroad_list_offer_codesList offer codesA
Read-only
Inspect

List a product's offer codes (discount codes). Gumroad REST: GET /v2/products/{product_id}/offer_codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id.
Behavior3/5

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

Annotations include readOnlyHint: true, so the safe read nature is covered. The description adds minimal context beyond that (offer codes are discount codes), but no additional behavioral traits such as pagination, rate limits, or auth requirements are mentioned.

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 sentence that front-loads the action and resource, plus the REST endpoint. Every word earns its place with no redundancy.

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 simple list tool with one required parameter and no output schema, the description is complete enough: it states what it lists and for which product. It lacks details about return structure or pagination, but these are not critical for basic selection and invocation.

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 product_id described as 'The product id.' The description does not add further meaning to the parameter, so it relies on the schema's baseline coverage.

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?

The description uses a specific verb ('List') and resource ('a product's offer codes'), with clarifying 'discount codes' and the REST endpoint. This clearly differentiates from siblings like get_offer_code (singular) and create/update offer codes.

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 usage is implied by the verb+resource: list codes for a specific product. However, there is no explicit guidance on when to use this vs alternatives like gumroad_get_offer_code for a single code, or when not to use it.

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

gumroad_list_productsList productsA
Read-only
Inspect

List all of the authenticated user's products. Gumroad REST: GET /v2/products.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds the authenticated-user scope and the specific REST endpoint, which provides useful context beyond the annotation, though it doesn't mention pagination or response format.

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, front-loaded sentence with no wasted words. It is concise while conveying the essential action and resource.

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, a readOnly annotation, and a simple resource scope, the description is sufficient for the agent to invoke the tool correctly. It could mention return format or usage distinctions, but these are not critical for a basic list operation.

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 schema coverage is effectively 100% and there are no parameters to explain. The baseline of 4 applies since the description need not elaborate on parameter semantics.

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?

Description states 'List all of the authenticated user's products' with a specific verb and resource. It clearly distinguishes from sibling tools like list_sales and list_subscribers by focusing on products.

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 description gives scope ('authenticated user's products') and the REST endpoint, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions. Usage is implied by the tool name and context rather than explicitly guided.

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

gumroad_list_resource_subscriptionsList resource subscriptionsA
Read-only
Inspect

List the authenticated user's resource subscriptions (webhooks) for a given resource/event name. Gumroad REST: GET /v2/resource_subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_nameYesThe resource/event name whose webhook subscriptions to list.
Behavior3/5

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

The readOnlyHint annotation already signals a safe read operation. The description adds minimal behavioral context (authenticated user scope) but does not disclose pagination, rate limits, or other nuances. No contradiction with 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 concise sentences, front-loaded with the verb and resource, and no redundant information. The REST endpoint reference is a useful addition without becoming verbose.

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 simple list tool with one parameter and readOnlyHint, the description covers the essential purpose and scope. It does not describe the return format, but the absence of an output schema and the straightforward nature of listing subscriptions makes it sufficiently complete.

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 description's 'resource/event name' mirrors the schema's parameter description. No additional semantic value is provided beyond the schema.

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?

The description clearly states the action ('List'), the resource ('resource subscriptions (webhooks)'), and the scope ('authenticated user's... for a given resource/event name'). It differentiates from sibling list tools by specifying webhooks, making it unambiguous.

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?

The description gives clear context for when to use the tool: to list webhook subscriptions for a specific resource/event name. It does not explicitly mention alternatives or exclusions, but given no other webhook tools exist among siblings, the context is sufficient.

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

gumroad_list_salesList salesA
Read-only
Inspect

List/filter the authenticated user's successful sales, most recent first. Supports date, email, product/order filters and cursor pagination via page_key. Gumroad REST: GET /v2/sales.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOnly sales after this date, formatted YYYY-MM-DD.
emailNoFilter to sales to this buyer email.
beforeNoOnly sales before this date, formatted YYYY-MM-DD.
order_idNoFilter to a specific order id.
page_keyNoPagination cursor — pass the value from a previous response's next_page_key to fetch the next page.
product_idNoFilter to sales of this product id.
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description aligns. Beyond annotations, it adds behavioral context: it lists only 'successful' sales (not failed or pending), sorts by 'most recent first', and explains pagination via page_key. It also notes the authentication requirement. These details enrich the safety profile without contradicting the annotation.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence captures the core purpose, the second adds filter/pagination context, and the third provides the REST endpoint. No extraneous information; every sentence earns its 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?

For a list operation with six optional parameters and no output schema, the description adequately conveys the scope (successful sales, most recent first), filter capabilities, pagination, and REST reference. It does not detail the return structure, but the simplicity of the operation and full schema coverage make this acceptable.

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%, so all six parameters are already documented with descriptions. The description merely summarizes the filter types (date, email, product/order) and pagination cursor, which adds little beyond the schema. It meets the baseline for high schema coverage but does not introduce new semantic depth.

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?

The description clearly states the action ('List/filter'), the resource ('the authenticated user's successful sales'), and the ordering ('most recent first'). It also specifies key capabilities (date, email, product/order filters, cursor pagination) and the underlying REST endpoint, making it unambiguous and distinguishable from sibling tools like gumroad_get_sale.

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?

The description provides clear context for when to use the tool: to list/filter successful sales, with support for date/email/product/order filters and pagination. It does not explicitly state when not to use it or name alternatives (e.g., gumroad_get_sale for a single sale), but the context is clear enough for an agent to infer appropriate usage.

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

gumroad_list_subscribersList subscribersA
Read-only
Inspect

List a membership/subscription product's subscribers, optionally filtered by buyer email. Gumroad REST: GET /v2/products/{product_id}/subscribers.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoFilter to the subscriber with this buyer email.
product_idYesThe membership product id.
Behavior3/5

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

The annotation (readOnlyHint: true) already communicates that this is a safe read operation. The description adds the optional email filter and the REST endpoint, but it does not disclose additional behavioral traits such as pagination, rate limits, or return format. This aligns with annotations and provides minimal 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.

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and resource, and includes the REST endpoint for reference. There is no redundant or irrelevant text, making it highly efficient.

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 simple read-only list operation with only two well-documented parameters, the description is reasonably complete. It specifies the scope and optional filtering, though it does not mention the return structure or pagination, which would be useful but are not critical given the simplicity and read-only annotation.

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 both parameters already well-described. The description reinforces that email is an optional filter and product_id identifies the membership product, but it does not add new details beyond the schema. Baseline of 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?

The description clearly states the action ('List') and the resource ('a membership/subscription product's subscribers') with an optional email filter. This distinguishes it from sibling tools like gumroad_get_subscriber (which retrieves a single subscriber) and other list tools by scoping to subscribers of a specific product.

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 description implies usage (listing subscribers for a product, optionally filtering by email) but does not explicitly mention alternatives or when not to use it. No comparison with gumroad_get_subscriber or other list tools is provided, so the guidance is implied rather than explicit.

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

gumroad_list_variant_categoriesList variant categoriesA
Read-only
Inspect

List a product's variant categories (option groups). Gumroad REST: GET /v2/products/{product_id}/variant_categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id.
Behavior3/5

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

Annotations declare readOnlyHint=true, which already indicates a safe read operation. The description adds the REST endpoint and the synonym 'option groups', but does not disclose additional behavioral traits such as pagination, ordering, or result filtering. It provides minimal value beyond the annotation.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the purpose, followed by a useful REST endpoint reference. There is no filler or unnecessary detail.

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 simple list operation with one parameter and annotations indicating read-only, the description covers the core behavior adequately. However, without an output schema, it leaves the return structure unspecified, which is a minor gap for an agent needing to understand the response shape.

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?

The schema covers the single parameter product_id with a description, and schema coverage is 100%. The description adds context that the parameter refers to the product whose variant categories are listed, but this is also evident from the tool name and purpose, so it adds little beyond schema.

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?

The description clearly states 'List a product's variant categories (option groups)' with a specific verb and resource. It implicitly distinguishes from the sibling tool 'gumroad_get_variant_category' by indicating a list operation for all categories of a product, which is a different scope.

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?

No explicit guidance on when to use this tool versus alternatives. The usage is implied from the verb 'List' and the product context, but sibling tools like get_variant_category are not mentioned, and there is no exclusions or alternative recommendation.

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

gumroad_update_offer_codeUpdate offer codeA
Destructive
Inspect

Update an existing offer code on a product (its code text and/or its max purchase count). Gumroad REST: PUT /v2/products/{product_id}/offer_codes/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe offer code id to update.
offer_codeNoNew discount code text.
product_idYesThe product id the offer code belongs to.
max_purchase_countNoNew cap on how many times the offer code can be used.
Behavior3/5

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

Annotations already signal destructive behavior via destructiveHint=true. The description adds that only code text and max purchase count can be changed, which is helpful but does not disclose further side effects or permissions. No contradiction with 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, front-loaded with the core action, and efficiently includes the REST endpoint for implementation. No redundant wording or fluff.

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?

The description covers the essential purpose and parameters, with schema filling in details. It lacks return value or error info, but with no output schema and moderate complexity, this is acceptable. The destructiveHint annotation provides safety context.

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 covers all parameters with descriptions, so baseline is 3. The description adds minimal value by clarifying which fields are updatable, but this overlaps with parameter descriptions for offer_code and max_purchase_count.

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?

The description clearly states the tool updates an existing offer code on a product, specifying the updatable attributes (code text and max purchase count). It distinguishes from sibling tools like create, get, and list by using the verb 'update' and referencing the existing resource.

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?

The description clearly indicates this is for updating existing offer codes, implying it should not be used for creation or retrieval. However, it does not explicitly mention alternatives or when-not scenarios, just the REST endpoint.

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

gumroad_verify_licenseVerify licenseA
Read-only
Inspect

Verify a license key for a product (checks validity and returns purchase details). By default this does NOT increment the uses count (no side effect). Gumroad REST: POST /v2/licenses/verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe product id the license belongs to.
license_keyYesThe license key to verify.
increment_uses_countNoWhether to increment the license's uses count (default false — pass true to record a use).
Behavior4/5

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

The annotations include readOnlyHint=true, but the description adds critical nuance by stating that the default does not increment uses and that there is an optional side-effect parameter. This is beyond the annotation and clarifies that the read-only hint applies to the default call. The REST endpoint is also disclosed, aiding expectation-setting.

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 exactly two sentences, front-loaded with the primary action and result. The REST endpoint is a concise detail, and there is no redundant or filler content.

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 straightforward verification tool with three well-documented parameters and a read-only annotation, the description covers the core behavior and return value. It could be more explicit about what 'purchase details' includes, but the absence of an output schema is not a critical gap given the simple nature of the operation.

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 three parameters fully described including default values. The description itself adds no new parameter information, just reinforces the default behavior of increment_uses_count. This meets the baseline for high schema coverage but does not exceed it.

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?

The description clearly identifies the tool as verifying a license key for a product, checking validity and returning purchase details. This specific verb+resource combination distinguishes it from sibling tools like gumroad_disable_license or gumroad_get_sale. The added note about no side effect by default further differentiates it from usage-incrementing actions.

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?

The description makes the primary use case obvious (verification/validation) and adds context about the default behavior (no increment), implying when to use the tool vs. passing increment_uses_count=true. However, it does not explicitly name alternative tools or state when not to use this tool, so it falls short of full usage guidance.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.