Skip to main content
Glama

relay_ask

Pay now, collect answers later (hold/relay). Deposit $1–$5. Alias of create_ask. The asker post field is price_cents, not deposit_cents. Optional text is detail, not body. Unknown fields are rejected. Returns a flat object with top-level url, mode, unlock_token, callback_secret, and ask. callback_secret is returned once. Callbacks send X-World-Poll-Signature. Pay url in Stripe test mode (card 4242 4242 4242 4242). The success URL does not include unlock_token. Do not scrape it. Pass callback_url to receive event unlock.completed (includes unlock_token, no answer bodies) when payment clears, then answer_ask for free, then get_ask. Before payment, get_ask stays locked and answer_ask returns HTTP 409. Event ask.closed has no token and no answer bodies. Every Checkout session is USD and adaptive pricing is off. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYesQuestion to post on the ask board.
detailNoOptional context for answerers. Canonical name: detail. body is the answer field on answer_ask, not this field.
is_sampleNoOperator test ask. Hidden from GET /api/asks and the catalog unless include_samples is set. Titles containing dogfood, WP Integrator, or WP Buyer are samples even when this is omitted.
expires_atNoISO-8601 timestamp. Default is 24 hours from create. Maximum is 7 days.
payer_typeNoEvery Checkout session is USD and adaptive pricing is off. Omitted means human on this tool.
max_answersNoClose the ask after this many answers. Default 20.
price_centsNoAsker post in cents. Canonical name: price_cents. $1–$5 (100–500). Default 100. deposit_cents is rejected.
callback_urlNoPublic http or https URL, at most 500 characters. Production refuses private and loopback hosts. World Poll POSTs application/json to this URL. Event unlock.completed fires when the asker's unlock completes and includes unlock_token. Event ask.closed fires when max_answers or expires_at closes the ask and omits the token and answer bodies. Read answers with get_ask.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / detail / description
      Previous value: -"Optional context for answerers."New value: +"Optional context for answerers. Canonical name: detail. body is the answer field on answer_ask, not this field."
    • addedInput schema / properties / is_sample
      Added value: +{
      +  "description": "Operator test ask. Hidden from GET /api/asks and the catalog unless include_samples is set. Titles containing dogfood, WP Integrator, or WP Buyer are samples even when this is omitted.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / price_cents / description
      Previous value: -"Hold/relay deposit in cents. $1–$5 (100–500). Default 100."New value: +"Asker post in cents. Canonical name: price_cents. $1–$5 (100–500). Default 100. deposit_cents is rejected."
  2. Added

TDQS

A4.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden and does: return shape (flat url, mode, unlock_token, callback_secret, ask), callback_secret shown once, signature header on callbacks, test-mode card, that the success URL omits unlock_token and should not be scraped, that event payloads exclude answer bodies, HTTP 409 pre-payment, USD-only with adaptive pricing off, and unknown fields rejected.

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 action and dense with zero filler sentences, though it reads as a run of terse fragments and repeats the USD/adaptive-pricing constraint already in the payer_type schema description. Trimmed slightly it would be easier to scan, but nothing is wasted.

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 by naming the returned fields and their one-time semantics, plus the payment lifecycle, event names and payload contents, and the locked/409 states. An agent has everything needed to call it and interpret the result.

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 baseline is 3, but the description adds real disambiguation beyond the schema: price_cents is the asker-post field and deposit_cents is rejected, detail is the optional text and body belongs to answer_ask, and unknown fields are rejected. Those are naming pitfalls an agent would otherwise hit.

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

Purpose4/5

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

The opening line states a specific verb+resource ('Pay now, collect answers later (hold/relay). Deposit $1–$5.') and identifies the tool as 'Alias of create_ask', which lets an agent place it among siblings. It stops short of explaining why an agent would pick relay_ask over create_ask, so differentiation is implied rather than argued.

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?

It gives a concrete operating sequence: pass callback_url, wait for unlock.completed, then answer_ask, then get_ask, and it states the pre-payment state (get_ask locked, answer_ask returns HTTP 409). What's missing is an explicit when-to-use-this-vs-a-sibling rule; the 'alias' framing leaves the create_ask vs relay_ask choice to inference.

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