Skip to main content
Glama

Ask to give a customer credits

request_grant_credits

Asks the founder to give one Live customer credits: their balance goes up by amount, and note is the line their credit history shows. test_member_credits does the same for a test member in Development, at once. This is a change to one customer, so it is your human's approval alone: they approve it in their browser, and no emailed code is asked. Nothing changes until they approve; approving it carries it out — Gemmein does it the moment they press Approve, once, and records what happened on their Logs. The approval page shows Gemmein's own sentence of the real effect, read against Live; a request that no longer matches Live when it is carried out is refused and nothing changes. Returns the approval link for your human and a handle: live_action_status with wait: true answers the moment it is done, or why not — never ask your human to tell you they approved. A second call asks again (a new approval).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "person": "<person>",
      "amount": "<amount>",
      "note": "<note>"
    },
    "name": "request_grant_credits"
  }
}

Input Schema

NameRequiredDescriptionDefault
noteYesone line saying why, up to 200 characters — what the customer's credit history shows
amountYeswhole credits, 1–100,000
personYesthe Live customer: their email address or id (usr_…) — live_people lists them

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the write/non-idempotent profile is given. The description still adds substantial context beyond that: nothing changes until browser approval, execution is once-only at Approve, the request is re-read against Live and refused if stale, and results land in Logs. However, the note that approving 'carries it out' with no email code is only partially reconciled with destructiveHint=false — the text reads like an immediate irreversible Live mutation while the annotation says non-destructive, which an agent may find ambiguous.

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

Conciseness4/5

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

The purpose and the sibling distinction are front-loaded, and every later sentence carries operational value (approval mechanics, staleness refusal, return values, polling). It is still dense and em-dash heavy, with mild restatement around approval ('Nothing changes until they approve; approving it carries it out'), which keeps it just short of a 5.

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?

There is no output schema, and the description compensates fully: it names the return values (approval link plus a handle) and the exact follow-up call that resolves the outcome. Combined with the approval, staleness and logging behavior, an agent has everything needed to invoke and complete the workflow correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the per-parameter descriptions already carry the syntax (email or usr_ id, 1–100,000 whole credits, 200-char line). The description goes one step further by tying each parameter to its observable effect — balance increase and the credit-history line — which is meaning the schema does not state. It does not, however, explain what happens when amount exceeds a plan limit or what a rejected approval returns.

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 ('asks the founder to give one Live customer credits') and immediately defines the effect of both key parameters: balance rises by amount, note is the credit-history line. It explicitly contrasts itself with test_member_credits ('does the same for a test member in Development'), so an agent can route between the two without opening either schema.

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

Usage Guidelines5/5

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

Names the near-duplicate sibling and the condition that selects it (test member / Development vs Live customer), and tells the agent what to do after the call: poll live_action_status with wait: true rather than asking the human. It also flags that a second call creates a new approval request, which is exactly the kind of misuse it prevents.

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.