Skip to main content
Glama

invite_to_coupon

Idempotent

Add email addresses to a coupon's invite list and, by default, switch the coupon to invite-only so the list is actually enforced. WRITE, human-gated: a real write requires an elicitation-capable client and the human sees every address plus whether the coupon is about to be closed to everyone else; clients without elicitation are refused (dry_run works anywhere). Addresses are lowercased and de-duplicated, malformed ones are reported rather than dropped, and an address already on the list is left exactly as it is -- so re-inviting someone who already redeemed does NOT hand them a second free account, and re-inviting someone who was revoked does NOT un-block them. Set enforce_invite_only:false only to stage a list before gating the code; the result then carries a warning that the coupon is still open. Use dry_run:true first to see exactly who would be added.

Input Schema

NameRequiredDescriptionDefault
codeYes
app_idYes
emailsYes
sourceNo
dry_runNo
enforce_invite_onlyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Discloses behavior well beyond the annotations: human-gated elicitation requirement, refusal on non-elicitation clients, lowercasing/de-duplication, malformed addresses reported not dropped, and the crucial idempotency semantics (re-inviting a redeemed or revoked address does nothing). This is consistent with idempotentHint=true and destructiveHint=false, and adds the operational detail the hints cannot express.

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

Conciseness4/5

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

Front-loads the core action and its default side effect before the operational caveats, and every sentence carries non-obvious information. It is dense but long for a single paragraph; the elicitation aside could be tightened without losing meaning.

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 6-parameter, non-read-only tool with no output schema and no schema descriptions, the description covers the risky semantics (gating, idempotency, dry run, warnings) thoroughly. The only real omission is what 'source' means and what the result object contains beyond the warning.

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

Parameters4/5

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

With 0% schema description coverage the description does most of the work: it explains emails normalization/reporting behavior, dry_run's preview role, and the exact meaning and default of enforce_invite_only including its warning side effect. The 'source' parameter and the app_id/code pair are never mentioned, leaving a gap.

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

Purpose5/5

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

States a specific verb and resource ('Add email addresses to a coupon's invite list') plus the default side effect ('switch the coupon to invite-only'). This cleanly separates it from list_coupon_invites and revoke_coupon_invite in the sibling set without the agent needing to open any schema.

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

Usage Guidelines4/5

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

Gives explicit when-to guidance ('Use dry_run:true first') and a precise when-not ('Set enforce_invite_only:false only to stage a list before gating the code'), plus the client-capability prerequisite for elicitation. It stops short of naming sibling alternatives like revoke_coupon_invite, so it is clear context rather than full routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources