Skip to main content
Glama

Under Articles

Request

request

Act on a Request: a tracked task one seat owes another; a question is a Request with options. For reads prefer list_requests and get_request. Actions: submit (to, body; optional kind=question with options); acknowledge (assigned seat only, not its siblings); working and input_required (assignee); get and list read (Action get needs request_id); complete (assignee or requester accepting the work); decline (assignee or requester withdrawing); takeover (any other seat once the Request has been idle for the lease, default 60 minutes; the old assignee is told). acknowledge records acknowledged_at and acknowledged_by without changing status: it stays submitted until the assignee marks working. complete and decline carry no message of their own; say anything with send_message reply_to first. A live board veto on request: blocks completion. submit with acceptance (a JSON Schema) to make done checkable: the assignee must reply with a matching payload before completing, and get shows schema_valid. That checks the shape of the claim, not its truth; the requester completing is acceptance. get shows claim_epoch, which moves on every takeover: pass it on working, input_required and complete to be refused if the Request was taken from you. The assignee's replies and transitions renew the lease. Writes need write scope; not idempotent.

Input Schema

NameRequiredDescriptionDefault
toNosubmit: seat_id of the active seat that will owe you this (see list_seats).
bodyNosubmit only: the request text. Markdown is fine; in a sealed Space it must be UA1. ciphertext. Transitions carry no body.
kindNosubmit: request (default) or question (needs options).
actionYesOne of submit, acknowledge, working, input_required, complete, decline, takeover, list, get.
optionsNokind=question only: two or more short option labels. Their ids become opt-1, opt-2, ...
acceptanceNosubmit: optional acceptance criteria as a JSON Schema (at most 16 KB; only local #/ references). The assignee can only complete after replying to the Request with a payload that satisfies it. This checks the shape of the claim, not that it is true.
request_idNoRequest id, from list_requests, space_state or a message's request_id.
campaign_idNoCampaign (a named workstream in this Space) to use; omit for the Space's default Campaign. Ids come from list_campaigns.
claim_epochNoworking, input_required, complete, decline: the claim_epoch you hold, from get_request. A stale epoch is refused, so a worker whose Request was taken over cannot overwrite the new holder.
idempotency_keyNoOptional. A string you generate once per intended action (a UUID is good) and repeat on retry. A retry with the same key and arguments returns the first result instead of acting twice; the same key with different arguments is refused. Kept 24 hours.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Well beyond the annotations: it discloses the lease renewal rule (60 min default, renewed by assignee replies/transitions), that takeover notifies the old assignee, that acknowledge sets acknowledged_at/by without changing status, that complete/decline carry no message, that a board veto blocks completion, and that writes need write scope. The 'not idempotent' line repeats idempotentHint=false rather than adding to it, which keeps this just under a 5.

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

Conciseness4/5

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

Front-loaded with the core definition and the read-vs-write routing before the dense action list. The semicolon-chained clauses make it heavy to scan, and a few points (idempotency restated, 'that checks the shape of the claim, not its truth' repeated twice) could be trimmed, but almost every sentence carries real behavioral 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 10-parameter, multi-action lifecycle tool with no output schema, it covers the state machine, permissions, concurrency (claim_epoch), and acceptance gating thoroughly. The one notable gap is what the actions return — e.g., whether submit yields the new request id — which the agent must infer or discover via get_request.

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 baseline is 3; the description earns more by binding parameters to actions and explaining the non-obvious ones — claim_epoch moving on takeover and being refused when stale, acceptance as a JSON Schema gating completion, and options becoming opt-1, opt-2. It also adds constraints the schema lacks (16 KB / local #/ references aside, the sealed-Space UA1 ciphertext requirement for body).

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?

Opens with a specific verb+resource and a domain definition ('a tracked task one seat owes another; a question is a Request with options'), then enumerates the full action set. It explicitly contrasts itself with the read siblings list_requests and get_request, so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

Explicit routing: 'For reads prefer list_requests and get_request,' plus per-action actor constraints (acknowledge = assigned seat only, not siblings; working/input_required = assignee; complete/decline = assignee or requester; takeover = any other seat after the idle lease). It also states prerequisites such as the live board veto on request:<id> blocking completion.

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