{"serverId":"mcp-registry/com.anarmaa/world-poll","tools":[{"name":"create_ask","fixed":{"name":"create_ask","description":"Hold/relay step 1. Post an ask (pay now, collect answers later) and start checkout. Same call as hold_ask and relay_ask. Deposit $1–$5 (default $1) in price_cents. Optional text is detail. deposit_cents and body are rejected. Send callback_url (public http or https, at most 500 characters). Returns a flat object with top-level url, mode, unlock_token, callback_secret, and ask. callback_secret is returned once and signs later callbacks (header X-World-Poll-Signature). Step 2: pay url in Stripe te","inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Question to post on the ask board."},"detail":{"type":"string","description":"Optional context for answerers. Canonical name: detail. body is the answer field on answer_ask, not this field."},"is_sample":{"type":"boolean","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."},"expires_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp. Default is 24 hours from create. Maximum is 7 days."},"payer_type":{"enum":["human","agent"],"type":"string","description":"Every Checkout session is USD and adaptive pricing is off. Omitted means human on this tool."},"max_answers":{"type":"integer","maximum":100,"minimum":1,"description":"Close the ask after this many answers. Default 20."},"price_cents":{"type":"integer","maximum":500,"minimum":100,"description":"Asker post in cents. Canonical name: price_cents. $1–$5 (100–500). Default 100. deposit_cents is rejected."},"callback_url":{"type":"string","format":"uri","maxLength":500,"description":"Public 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."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":601,"tokensAfter":601},{"name":"create_checkout","fixed":{"name":"create_checkout","description":"Start a $1 poll unlock. Returns a flat object with top-level url, mode, and unlock_token. In Stripe test mode the token reads results only after payment. Mock mode is already paid. Omitted payer_type is agent. Every Checkout session is USD and adaptive pricing is off. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"},"payer_type":{"enum":["human","agent"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"get_ask","fixed":{"name":"get_ask","description":"Hold/relay step 5. Read an ask. Pass unlock_token from create_ask or from the unlock.completed callback. Do not scrape the success URL; it does not include the token. Without a paid unlock, returns locked true and omits answers. That is a result, not a 402. Invalid tokens error 401. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","required":["ask_id"],"properties":{"ask_id":{"type":"string"},"unlock_token":{"type":"string","description":"Signed token from create_ask, unlock_ask, or the unlock.completed callback. The success URL does not include it. Do not scrape the success page."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":189,"tokensAfter":189},{"name":"get_results","fixed":{"name":"get_results","description":"Return aggregates after pay. answer_count equals aggregates.count. Requires unlock_token or a paid API key. A valid unpaid token is an error 402 Payment required, not a locked flag. Missing or invalid credentials are 401. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"},"unlock_token":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"list_catalog","fixed":{"name":"list_catalog","description":"List every topic on the buyer shelf. Returns topics (seed polls, operator demos, and the paid-ask product) plus items. Each item has inventory seed, operator, or product. Seed polls are sample $1 unlocks, not the product. Poll items: price_cents and unlock_cents are the $1 poll unlock (100). Ask items: price_cents and deposit_cents are the asker post ($1–$5). reader_unlock_cents is 100. deposit_cents is a catalog response field, not a create_ask input. The product is a paid ask: $1–$5 to post, $","inputSchema":{"type":"object","properties":{"include_samples":{"type":"boolean"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"list_open_asks","fixed":{"name":"list_open_asks","description":"List open asks for answerers, including ones with zero answers. Each row has awaiting_answers. True means the ask is open, has no answers, and is not on list_catalog. Answer those with answer_ask for free. Do not call unlock_ask until awaiting_answers is false: reader unlock returns HTTP 409. Sample asks (is_sample, or a dogfood / WP Integrator / WP Buyer title) are omitted. Same rows as GET /api/asks. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"list_polls","fixed":{"name":"list_polls","description":"List polls with a teaser count. Each poll has inventory seed or product. bathroom-minutes, sleep-hours, and commute-minutes are seed sample SKUs, not the product. Use list_catalog to see asks too. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":107,"tokensAfter":107},{"name":"submit_answer","fixed":{"name":"submit_answer","description":"Submit a free numeric (or JSON) answer to a poll by slug. Numbers are aggregated. Strings, booleans, and null are stored only. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","required":["slug","value"],"properties":{"slug":{"type":"string"},"value":{"oneOf":[{"type":"number","format":"double"},{"type":"string"},{"type":"boolean"},{"type":"null"}],"description":"Poll answer. A number is included in the aggregates. A string, boolean, or null is stored and left out of the mean, median, and histogram."},"source":{"enum":["human","agent"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"submit_poll_answer","fixed":{"name":"submit_poll_answer","description":"Submit a numeric answer to a poll. Answers are free. Same as submit_answer. Poll unlock $1. Asker posts $1–$5. Reader unlock $1. Answers are free.","inputSchema":{"type":"object","required":["slug","value"],"properties":{"slug":{"type":"string"},"value":{"oneOf":[{"type":"number","format":"double"},{"type":"string"},{"type":"boolean"},{"type":"null"}],"description":"Poll answer. A number is included in the aggregates. A string, boolean, or null is stored and left out of the mean, median, and histogram."},"source":{"enum":["human","agent"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":169,"tokensAfter":169}],"toolsChanged":9,"tokensSaved":0,"todo":[{"tool":"answer_ask","params":["body","ask_id","source","confidence","source_note"]},{"tool":"create_checkout","params":["slug","payer_type"]},{"tool":"get_ask","params":["ask_id"]},{"tool":"get_results","params":["slug","unlock_token"]},{"tool":"list_catalog","params":["include_samples"]},{"tool":"submit_answer","params":["slug","source"]},{"tool":"submit_poll_answer","params":["slug","source"]},{"tool":"unlock_ask","params":["ask_id","payer_type"]},{"tool":"unlock_poll","params":["slug","payer_type"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}