Gumroad MCP by usefulapi
Server Details
Read products, sales, subscribers and offer codes; verify, enable and disable product licenses.
- Status
- Healthy
- Uptime
- 89.2% over 72 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 20 tools
Each tool maps to a distinct resource plus action, and the enable/disable and get/list verb pairs are unambiguous. The only near-neighbors (verify_license vs enable/disable_license) are clearly differentiated by their descriptions.
Every tool follows the same gumroad_verb_noun pattern in snake_case with a consistent verb vocabulary (get, list, create, update, enable, disable, verify). There are no deviations or mixed conventions.
20 tools is at the upper end but each earns its place by covering a distinct resource and action across products, sales, subscribers, licenses, and offer codes. It is slightly heavy but not bloated.
Read coverage is broad, but the write surface is thin: offer codes have create/update, yet products have no create, update, or delete despite being the core resource, and resource subscriptions and custom fields are read-only. These gaps limit full lifecycle management.
Available Tools
20 toolsgumroad_create_offer_codeCreate offer codeBDestructiveInspect
Create a new offer code (discount code) on a product. Gumroad REST: POST /v2/products/{product_id}/offer_codes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The discount code text buyers enter (e.g. LAUNCH20). | |
| universal | No | Whether the offer code applies to all of the user's products (default false). | |
| amount_off | Yes | The amount off — in cents when offer_type is 'cents', or a percentage when 'percent'. | |
| offer_type | No | Whether amount_off is a fixed amount in 'cents' or a 'percent' discount (default 'cents'). | |
| product_id | Yes | The product id to create the offer code on. | |
| max_purchase_count | No | Optional cap on how many times the offer code can be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=true, so the description must add the rest. It says nothing about uniqueness of the code text, what happens on a duplicate name, rate limits, or permissions required, and only restates that this is a POST to a fixed path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and scope, with the API endpoint as a trailing reference. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with no output schema and no annotations beyond a destructive hint, the description covers the 'what' adequately but omits what the call returns (the created offer code/id that later get/update/disable calls need) and any pitfalls. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — every parameter including the amount_off/offer_type interaction, universal flag, and max_purchase_count is documented in the schema itself. The description adds no parameter meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (offer code) and helpfully glosses the jargon as 'discount code' on 'a product', plus the backing REST endpoint. It is clearly distinguishable from get_/list_/update_offer_code siblings by the verb, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing about preconditions (product must exist), how it relates to gumroad_update_offer_code or gumroad_list_offer_codes, or when a universal vs product-scoped code is appropriate. Usage is only inferable 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.
gumroad_disable_licenseDisable licenseCDestructiveInspect
Disable a product's license key. Gumroad REST: PUT /v2/licenses/disable.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id the license belongs to. | |
| license_key | Yes | The license key to disable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already flags this as a mutating operation, so the description only needed to add context such as reversibility (is the key recoverable via gumroad_enable_license?), auth requirements, or side effects on existing licensees. Instead it adds only the REST verb/path, which duplicates the operation name and conveys no behavioral trait 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action, with no padding or redundancy. The trailing REST endpoint reference is mildly non-essential metadata but costs only a few words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive tool with no output schema, the essentials are present, but the description omits the practical context an agent needs: whether the disable is reversible and which sibling to use to restore a key. Given the destructive nature, this is a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both product_id and license_key adequately. The description contributes no additional parameter meaning (no format hints, no constraints), which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (disable) and resource (a product's license key), making the action unambiguous and clearly distinct from read siblings like gumroad_verify_license. It does not, however, contrast itself with the obvious sibling gumroad_disable_product or name the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. An agent must infer that enabling is handled by gumroad_enable_license and that product-level disabling is a different tool, without any explicit routing from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_disable_productDisable productADestructiveInspect
Disable (unpublish) a product so it can no longer be sold. Gumroad REST: PUT /v2/products/{id}/disable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The product id to disable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds the practical effect—unpublish and stop sales. It does not disclose reversibility, auth requirements, or side effects on existing sales/customers, so it remains modest 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence plus the REST endpoint; the effect is front-loaded and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter disable action with complete schema coverage and a destructive annotation, the description covers purpose, effect, and endpoint. It omits return/confirmation behavior (no output schema) and reversibility, but the essential call context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'The product id to disable.' The description only repeats {id} in the REST endpoint, adding no new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Disable (unpublish)' and resource 'a product', plus the concrete effect 'so it can no longer be sold.' It does not name the sibling gumroad_enable_product as the inverse alternative, so sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied context: use this when a product should no longer be sold. However, it does not state when to prefer this over alternatives such as enable_product, nor any prerequisites or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_enable_licenseEnable licenseBDestructiveInspect
Enable a product's license key. Gumroad REST: PUT /v2/licenses/enable.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id the license belongs to. | |
| license_key | Yes | The license key to enable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=true, which the description neither explains nor expands on. It adds no context about what enabling changes, whether it is reversible, what happens to an already-enabled key, or what errors/permissions apply. The REST endpoint mapping is the sole added detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first and endpoint second, with zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter state toggle with no output schema this is minimally adequate: the agent knows the operation, the required inputs, and the endpoint. It falls short on effect description, reversibility, and error behavior for a mutating call with only a destructiveHint annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both required parameters (product_id, license_key) fully documented in the schema. The description adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (enable) and resource (a product's license key), which cleanly separates it from gumroad_enable_product and gumroad_disable_license in the sibling set. It even names the underlying REST operation for traceability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to enable a license versus calling gumroad_verify_license or gumroad_disable_license, and no prerequisites or state conditions mentioned. Usage is inferable only 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.
gumroad_enable_productEnable productADestructiveInspect
Enable (publish) a product so it can be sold. Gumroad REST: PUT /v2/products/{id}/enable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The product id to enable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the write/state-change nature is covered structurally. The description adds the effect ('so it can be sold') and the underlying PUT endpoint, but says nothing about permissions, idempotency, or what happens to an already-enabled product.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and effect front-loaded and the endpoint detail trailing; every phrase earns its place and there is zero boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param, no-output-schema tool whose safety profile is carried by annotations, the description is sufficient to call it correctly. Minor omission is the lack of any cross-reference to the sibling disable_product tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema. The description adds no format, constraint, or example 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Enable (publish) a product') and clarifies the ambiguous term 'enable' with the synonym 'publish' plus the business effect 'so it can be sold'. It distinguishes itself in spirit from the sibling gumroad_disable_product, though it never names that inverse explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the tool for making a product sellable again, but there is no explicit when-to-use, when-not-to-use, or reference to the alternative sibling gumroad_disable_product. Adequate but leaves routing to inference.
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 codeARead-onlyInspect
Get a single offer code on a product by id. Gumroad REST: GET /v2/products/{product_id}/offer_codes/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The offer code id. | |
| product_id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply readOnlyHint=true, so the safe-read profile is already covered. The description adds the underlying REST route (GET /v2/products/{product_id}/offer_codes/{id}), which is useful orientation but discloses nothing about auth needs, error behavior (e.g. missing id), or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the purpose front-loaded and the REST mapping as supporting detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read with full schema coverage and a readOnly annotation, the description covers what an agent needs to call it. Only the absence of any not-found/error note keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description's path template clarifies how id nests under product_id, but adds no format or constraint detail beyond that. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Get a single offer code on a product by id.' The word 'single' implicitly distinguishes it from gumroad_list_offer_codes, though the sibling is never named. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'single' as opposed to the list sibling. There is no explicit statement of when to reach for this tool versus gumroad_list_offer_codes or gumroad_get_product, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_get_productGet productBRead-onlyInspect
Get a single product by id. Gumroad REST: GET /v2/products/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered by structured data. The description adds only the underlying REST endpoint, contributing some developer context but nothing about auth requirements, error behavior when the id is unknown, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. The endpoint sentence is arguably redundant with the tool name but is compact and informative for developers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool whose annotations already signal read-only behavior and whose return payload is conventional, the description covers what an agent needs to invoke it. Only the absence of any note on the retrieved product shape or error cases keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single required parameter is documented as "The product id." The description only restates this ("by id") without adding format, source, or validity constraints, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a single product by id"), and the word "single" implicitly separates it from the list-style siblings. However it never names gumroad_list_products or the other getter siblings, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus gumroad_list_products or other retrieval tools, and no mention of prerequisites such as authentication. The REST endpoint mapping hints at the retrieval use case but does not constitute usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_get_saleGet saleARead-onlyInspect
Get a single sale by id. Gumroad REST: GET /v2/sales/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The sale id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a non-mutating read, so the description carries a lighter burden. It adds the REST endpoint mapping (GET /v2/sales/{id}), which is mildly useful for tracing, but says nothing about error behavior (e.g., unknown id) or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the purpose comes first and the endpoint mapping second. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-resource getter with one fully documented parameter, a readOnly annotation, and no output schema, the definition covers what an agent needs to invoke it. Only the absence of any error/auth note keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented in the schema itself. The description's 'by id' merely restates the schema, adding no format or sourcing detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single sale by id') and the 'single' qualifier implicitly distinguishes it from gumroad_list_sales. It stops short of explicitly naming the list tool as the alternative, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name and the 'single sale' phrasing; there is no explicit when-to-use or when-not-to-use statement, nor any mention of prerequisites such as owning the sale or required auth scope. An agent can infer the getter role from the sibling list_sales, but nothing is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_get_subscriberGet subscriberBRead-onlyInspect
Get a single subscriber by id. Gumroad REST: GET /v2/subscribers/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The subscriber id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the REST endpoint mapping (GET /v2/subscribers/{id}), which is mild context. It doesn't disclose response shape, not-found behavior, or auth requirements beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope. The REST endpoint line is useful but arguably redundant given the tool name prefix 'gumroad_'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-resource read with full schema coverage and readOnly annotation, this is minimally adequate. It lacks return value description, which would help since there's no output schema, and no error/edge-case notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema fully documents 'id'. The description restates 'by id' without adding format, constraints, or examples. Baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single subscriber by id'), which distinguishes it from the list variant. It doesn't explicitly contrast with sibling gumroad_list_subscribers other than the word 'single', so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives like gumroad_list_subscribers, and no prerequisites or auth notes. The 'by id' phrasing implies it needs an id, but that's already in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_get_userGet userARead-onlyInspect
Get the authenticated user associated with the current Gumroad access token. Gumroad REST: GET /v2/user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes it as a safe read, so the description's added value is modest. It does contribute the key behavioral fact that the result is scoped to the token's identity rather than an ID argument, which is genuinely useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences, front-loaded with the purpose and then the endpoint. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema read tool whose annotation already covers safety, the description supplies everything needed: what it returns (the authenticated user) and how auth works (via access token).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description exceeds it by explaining that the subject is derived from the access token, which is the only semantic content a parameter-free tool can convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Get the authenticated user associated with the current Gumroad access token.' Disambiguates what 'user' means (the authenticated one, not an arbitrary user by ID). It does not explicitly differentiate from sibling get_* tools, but those all target different resources, so no real ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: this reads the caller's own identity from the access token, requiring no parameters. No explicit when-not-to-use guidance, but for a zero-arg identity lookup there is no meaningful alternative to exclude.
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 categoryARead-onlyInspect
Get a single variant category on a product by id. Gumroad REST: GET /v2/products/{product_id}/variant_categories/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The variant category id. | |
| product_id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the bar is lowered. The description adds the concrete REST mapping (GET /v2/products/{product_id}/variant_categories/{id}), confirming the read semantics, but says nothing about auth requirements, error behavior for a missing id, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, purpose front-loaded and the REST mapping placed after it as supplementary reference. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple two-parameter getter whose safety profile is covered by annotations, but with no output schema the agent has no idea what fields the response contains or how errors surface for an invalid id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'id' and 'product_id' documented in the schema, so the baseline is 3. The description reinforces that id is nested under a product but adds no format, constraint, or scoping detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single variant category on a product by id'), and the word 'single' combined with the required 'id' parameter distinguishes it from the sibling gumroad_list_variant_categories. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb and the required identifiers: fetch one variant category when you already have its product_id and id. No explicit when-to-use, when-not-to-use, or named alternative (e.g., the list tool for enumeration) is given.
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 fieldsARead-onlyInspect
List a product's custom fields (extra fields collected at checkout). Gumroad REST: GET /v2/products/{product_id}/custom_fields.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the checkout-origin context for the fields and the underlying REST endpoint, but says nothing about pagination, empty results, or return shape. With annotations carrying the safety profile, this is a modest add.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose. The REST endpoint sentence is mildly redundant for an agent that already knows the operation, but it is compact and harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-param read tool with full schema coverage and a readOnlyHint, the description is adequate. No output schema exists, so a brief note on what is returned would have helped, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage ('The product id.'), so the schema already does the work. The description implies which product's fields are returned but adds no format or validation detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a product's custom fields), and the parenthetical clarifies what custom fields actually are. The resource is unique among siblings, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as gumroad_get_product or gumroad_list_variant_categories, and no stated prerequisites (e.g., that a valid product_id is required). The agent is left to infer usage entirely from the name.
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 codesARead-onlyInspect
List a product's offer codes (discount codes). Gumroad REST: GET /v2/products/{product_id}/offer_codes.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description's main extra is the REST endpoint mapping, which is modestly useful. It says nothing about pagination or result ordering behavior, which is a common concern for list endpoints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core purpose front-loaded and the endpoint detail trailing as secondary reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only list tool with full schema coverage and annotations declaring readOnly, the description is sufficient to call it correctly. Only the absence of pagination/return-shape hints keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single product_id parameter documented in the schema, so the baseline of 3 applies. The description restates the product-scoped nature but adds no format, type, or grouping detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (offer codes / discount codes) scoped to a product, and names the REST endpoint. An agent can distinguish it from gumroad_get_offer_code (single) and gumroad_create_offer_code 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied by the resource scope — list the codes attached to a given product — but there is no explicit when-to-use vs. gumroad_get_offer_code or gumroad_list_products, nor any exclusion or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_list_productsList productsARead-onlyInspect
List all of the authenticated user's products. Gumroad REST: GET /v2/products.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds the underlying REST mapping (GET /v2/products), which is modestly useful, but says nothing about pagination, result limits, or response shape for a potentially large collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the scope ('authenticated user's products') is front-loaded and the REST endpoint is appended as compact supporting detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with annotations covering the safety profile and no output schema, the description is nearly sufficient. The only real gap is the absence of any pagination or result-size expectation for a collection endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to document and the baseline is 4. There are no parameters whose semantics the description would need to supplement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List all ... products') scoped to the authenticated user, which is clear. It does not explicitly distinguish itself from siblings like gumroad_get_product or gumroad_list_offer_codes, though 'List all' vs 'get' makes the intent reasonably inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and scope (enumerate the caller's products), but there is no explicit when-to-use guidance, no mention of when to prefer gumroad_get_product for a single item, and no prerequisites or pagination caveats.
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 subscriptionsBRead-onlyInspect
List the authenticated user's resource subscriptions (webhooks) for a given resource/event name. Gumroad REST: GET /v2/resource_subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_name | Yes | The resource/event name whose webhook subscriptions to list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds useful scope context ('the authenticated user's') and identifies the underlying REST endpoint, but says nothing about pagination, result limits, or return shape. With annotations covering the safety profile, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences that lead directly with the action and scope. The trailing REST-endpoint sentence is arguably metadata the agent does not need, but it is brief and does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only list tool with full schema coverage, no output schema, and annotations that already declare readOnlyHint, the description supplies enough to call it correctly. Only pagination/return details are absent, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single enum parameter is fully documented in the schema. The description only restates that the parameter selects a resource/event name, adding no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('List the authenticated user's resource subscriptions') and explicitly disambiguates with '(webhooks)', which distinguishes it from the sibling list_subscribers concept. It could go further by naming how it differs from listing subscribers, but the parenthetical resolves the main ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no conditions for selecting this tool, and no alternatives referenced. The phrase 'for a given resource/event name' describes the input rather than routing guidance, so usage context is only weakly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_list_salesList salesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Only sales after this date, formatted YYYY-MM-DD. | |
| No | Filter to sales to this buyer email. | ||
| before | No | Only sales before this date, formatted YYYY-MM-DD. | |
| order_id | No | Filter to a specific order id. | |
| page_key | No | Pagination cursor — pass the value from a previous response's next_page_key to fetch the next page. | |
| product_id | No | Filter to sales of this product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only safety profile (readOnlyHint=true), lowering the bar. The description usefully adds scope constraints (authenticated user, successful-only, most-recent-first ordering, cursor pagination). It does not disclose rate limits, page size, or result volume, so 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with purpose, then filters, then endpoint. No filler, though the REST endpoint reference is marginally redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and annotations, the description is essentially complete: purpose, filters, ordering, pagination, and scope. No output schema exists, but success-only sales is stated, so minimal further detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters with formats and semantics. The description adds only a summary of filter categories and mentions page_key pagination, roughly matching the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List/filter), resource (successful sales), scope (authenticated user's), sort order (most recent first), and even names the underlying REST endpoint. Clearly distinct from the sibling gumroad_get_sale (singular get) and other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage via 'successful sales' and filter support, but gives no explicit when-to-use guidance or when to prefer gumroad_get_sale for a single sale vs this list. No exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_list_subscribersList subscribersBRead-onlyInspect
List a membership/subscription product's subscribers, optionally filtered by buyer email. Gumroad REST: GET /v2/products/{product_id}/subscribers.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Filter to the subscriber with this buyer email. | ||
| product_id | Yes | The membership product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read posture is covered. The description adds the REST mapping (GET /v2/products/{product_id}/subscribers), which is mild context but not a behavioral trait; it says nothing about pagination, result limits, auth requirements, or rate limits for what is presumably a paged collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences, front-loaded with the purpose and followed by the endpoint reference. No filler and nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only list tool with full schema coverage and no output schema, the description covers what the agent needs to invoke it correctly. The only notable omission is pagination/result-size behavior, which slightly limits it from full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented in the schema itself (email filter intent and product_id). The description repeats the optional email filter without adding format, matching semantics, or edge cases, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a membership/subscription product's subscribers) and includes the underlying REST endpoint, so the operation is unambiguous. It does not explicitly contrast itself with the singular sibling gumroad_get_subscriber, but the plural scope is clear enough to distinguish them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives are named. The closest thing to guidance is 'optionally filtered by buyer email,' which describes a parameter rather than a usage condition, and it never distinguishes this tool from gumroad_get_subscriber or the other list_* siblings.
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 categoriesARead-onlyInspect
List a product's variant categories (option groups). Gumroad REST: GET /v2/products/{product_id}/variant_categories.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read, so the bar is lower. The description usefully pins the underlying operation to GET /v2/products/{product_id}/variant_categories, reinforcing read-only behavior, but adds nothing about return format, pagination, or empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the purpose front-loaded and the REST endpoint following as supporting detail. No filler, no restatement of the title, and the size matches the triviality of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool with annotations covering safety and 100% schema coverage, the description is close to sufficient. It could be stronger by noting the relationship to gumroad_get_variant_category, but nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('The product id.'), so the schema already carries the meaning. The description only implies via 'a product's variant categories' that a product_id is needed, adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a product's variant categories), with a parenthetical clarifying that these are option groups. It does not explicitly distinguish itself from the sibling gumroad_get_variant_category, so the singular-get vs plural-list distinction is left for the agent to infer from naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The listing semantics imply the use case (enumerate all variant categories for a product), so usage is inferable. However, there is no explicit when-to-use statement and no guidance on choosing between this and gumroad_get_variant_category, leaving the agent to infer the choice.
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 codeADestructiveInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The offer code id to update. | |
| offer_code | No | New discount code text. | |
| product_id | Yes | The product id the offer code belongs to. | |
| max_purchase_count | No | New cap on how many times the offer code can be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so safety is signaled structurally. The description adds the scope of mutation (code text and/or max purchase count) and the underlying PUT endpoint, but does not disclose consequences such as existing redemption links breaking when code text changes, or whether unspecified fields are reset by the PUT.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and mutable fields; the API endpoint reference is compact and earns its place by anchoring the operation. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no output schema, the description covers the actionable scope and the destructive annotation carries the risk profile. The one gap is ambiguity about partial vs. full update semantics ('and/or' versus PUT's typical replace behavior), which could mislead an agent about omitted fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema with the same meanings the description implies. The description's enumeration of mutable fields adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (an existing offer code on a product), and names the exact mutable fields (code text and/or max purchase count). It is clearly distinguishable from siblings like gumroad_create_offer_code, gumroad_get_offer_code, and gumroad_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Update an existing offer code' implies the tool is for modification rather than creation or retrieval, but it never states when to prefer it over create/get, nor any prerequisites such as needing the code to already exist. Usage is implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gumroad_verify_licenseVerify licenseAInspect
Verify a license key for a product (checks validity and returns purchase details). By default this does NOT increment the uses count; with increment_uses_count: true it records a use (a write). Gumroad REST: POST /v2/licenses/verify.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product id the license belongs to. | |
| license_key | Yes | The license key to verify. | |
| increment_uses_count | No | Whether to increment the license's uses count (default false — pass true to record a use). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false, idempotentHint=false, destructiveHint=false — leaving the agent unsure whether a 'verify' call mutates state. The description resolves this precisely: no increment by default, a recorded use when increment_uses_count is true. That is exactly the behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose and outcome first, the critical default-vs-write behavior second, the API mapping last. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by noting the call returns purchase details. Combined with the default behavior, write semantics, and endpoint, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the default for increment_uses_count. The description's restatement of the increment semantics adds emphasis but little new parameter detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Verify a license key for a product') plus the concrete outcome (checks validity, returns purchase details). This cleanly separates it from siblings like gumroad_enable_license, gumroad_disable_license, and gumroad_get_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional context: the tool is a verification call by default and only becomes a write when increment_uses_count is true, which tells the agent when the side effect occurs. It stops short of naming alternative tools or explicit when-not-to-use conditions, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Read subscriptions, customers, charges, orders; skip charges, cancel or activate subscriptions.
- TieruxOAuthcom.tierux
Server-side purchase verification and entitlements for Google Play and Apple App Store over MCP.
Set up and inspect app paywalls, subscriptions, offerings and analytics from your AI agent.
Products, customers, orders, subscriptions, benefits, revenue metrics and refunds.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables analysis and management of iOS/macOS apps via the App Store Connect API, including app management, reviews, sales reports, analytics, performance metrics, and TestFlight.6 npm2MIT
- AlicenseAqualityBmaintenanceProvides read-only access to App Store Connect analytics, sales, finance, and customer review data, with tools to fetch and parse reports from Apple's Analytics Reports API and other report endpoints.14Apache 2.0
- AlicenseAqualityBmaintenanceLets Claude and other AI agents work with Apple's developer API to manage app metadata, versions, review submissions, builds, TestFlight, customer reviews, reports, Xcode Cloud, devices, and team members, with optional read-only safeguards.36630 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables searching the App Store, retrieving app details, discovering trending apps, and accessing screenshots and release information via Apple's public APIs.7 npm4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.