Skip to main content
Glama

Ask real people: human feedback, user testing, surveys

Ask people

ask_people
Destructive

Opens a call: one short task to several people. With no key, or on the simulated pool, simulated people answer: their answers are made up and marked simulated. Real people answer only on a panel of people who joined it themselves, which any key can make. Returns a call_id at once; ask_people_results gives each person's answers, whether each was typed or pasted, and an evidence level.

Use it only when your user asked for other people's reactions to this material, or said yes when you offered, and the task needs a human reaction a model cannot give: how a song feels, whether a page is clear in ten seconds, whether a game is fun, which version people prefer. Not for your user's own taste (ask them), facts a search can find, or anything done away from a screen.

Who answers: pool defaults to "simulated". Simulated people answer in seconds; every simulated answer carries simulated: true and begins "[simulated] ", and none is a person's view. Real people are rung only on pool "panel:<panel_id>", a panel your user made whose people joined it from its link, in minutes when they are available and never in their quiet hours (9 PM to 8 AM their time by default). Each person is told what is recorded before they take the call.

Cost: during the preview every amount is test money; nothing is charged and nobody receives real pay. max_total_usd (required) is the most your user approved, every fee included. With no approved amount, show your user the for_your_user sentence from ask_people_quote and pass only the amount they approve. A paid call holds the people's pay, a 25% reserve for anyone who takes longer (returned if unused) and a 10% router fee (at least $0.25), each on its own line. A simulated call or a panel at zero pay costs nothing. Nothing opens above max_total_usd (error over_max_total_usd, with the price) or above the key's cap (over_key_cap, with the price and an approve_url for the account owner). If fewer people answer than asked, you pay for those who answered and anyone who stopped partway; anyone still in a seat at the deadline may finish and is paid in full; the rest of the hold returns. A person who stops partway is paid for the time spent, at least 25 cents or the full pay if less; 'Stop: this upset me' pays in full.

content: an https URL (copied into our storage before anyone is asked), {"text": "..."}, or for compare a list of 2 to 6 of these; not used for kind answer. Send only material your user made or may show, and nothing that shows or identifies a person who has not agreed. Ask only for reactions and opinions: calls that ask about health, religion, sexuality, ethnicity, immigration or politics, for a name or any way to reach someone, or for passwords, one-time codes, PINs, keys, government ID, card or bank numbers are refused, and nothing is charged.

Every call is screened before anyone is rung; it may be held for review (state held) or refused (state refused; nothing is charged). Each default used comes back in defaults_used. Look again after next_check_after_seconds. A retry within 24 hours with the same idempotency_key returns the first call; without a key, the same request within 10 minutes counts as the same call, and after that opens a second one.

Example: {"ask":"Listen once to the end. Then say what you felt, in your own words.","kind":"listen","content":"https://example.com/demo-track.mp3","people":3,"answer_fields":{"felt":"text","would_play_again":"boolean"},"max_total_usd":"0.00","idempotency_key":"first-try-1"}

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": {
      "ask": "<ask>",
      "kind": "<kind>",
      "people": "<people>",
      "max_total_usd": "<max_total_usd>"
    },
    "name": "ask_people"
  }
}

Input Schema

NameRequiredDescriptionDefault
askYesWhat each person reads first, in plain words. Ask for their own reaction in their own words. The material opens in our page: never ask them to download, install or join anything (a call that does is refused).
extNo
kindYeslisten, watch, view, play, compare or answer. Decides what the person's page shows and records.
paceNoSimulated pool only: "instant" (the default) or "human" (answers over 1 to 6 minutes).
poolNo"simulated" (the default; any test key) or "panel:<panel_id>" for a panel the account owner made.
enoughNoHow many answers make the call usable. Default: 70% of people, rounded up.
peopleYesHow many people to ask.
scriptNoSimulated pool only: one entry per seat in order: {accept (true, false or "miss"), delay_seconds, play_fraction, realtime, visible_fraction, revealed, seat_seconds, stop_at_fraction, stop_reason, send_partial, answers, answer_input}.
contentNoAn https URL (copied into our storage first; on the simulated pool with a test key it is checked for shape and never fetched), {"text": "..."}, or a media id. For compare, a list of 2 to 6. Not used for kind answer. For play: one HTML file with all its scripts, images and sounds inside; no zip.
minutesNoEach person's estimated time. Default: the material's length rounded up plus one for listen and watch, else 2.
requireNoSelectors over people's claims: country, region, language, age_band, device, each a list of accepted values.
answer_fieldsNoNamed fields, each a type ("text", "boolean", "number", "choice", "scale") or {"type", "label", "optional", "choices", "min", "max"}. Default {"answer": "text"}.
max_total_usdYesRequired: the most this call may cost, every fee included. At most two decimals.
content_ratingNo
idempotency_keyNoOptional unique string; a repeat with the same key and fields returns the first result for 24 hours.
wants_strangersNoOptional, when your user wants strangers rather than people they invite: {"purpose": "...", "contact": "..."}. We'll list you for strangers and tell you here, in this tool's replies to your key, when it opens. Nothing is charged.
deadline_minutesNoMinutes until the call closes and returns what came in. Default 120.
pay_per_person_usdNoWhat each person is paid. Default "0.00" on the simulated pool and on panels.
may_train_on_answersNoWhether your principal may train models on the written answers (default false). People see this before they start.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / wants_strangers / description
      Previous value: -"Optional, when your user wants strangers rather than people they invite: {\"purpose\": \"...\", \"contact\": \"...\"}. Your request and contact go to the operator; strangers are not offered yet, and nothing is charged."New value: +"Optional, when your user wants strangers rather than people they invite: {\"purpose\": \"...\", \"contact\": \"...\"}. We'll list you for strangers and tell you here, in this tool's replies to your key, when it opens. Nothing is charged."
  2. Changed1 schema field changed
    • changedInput schema / properties / wants_strangers / description
      Previous value: -"To ask for real strangers: what your user wants them for, and one way to reach your user. Strangers are not offered yet: the ask is kept for the people who run this service and nothing is rung."New value: +"Optional, when your user wants strangers rather than people they invite: {\"purpose\": \"...\", \"contact\": \"...\"}. Your request and contact go to the operator; strangers are not offered yet, and nothing is charged."
  3. Changed1 schema field changed
    • addedInput schema / properties / wants_strangers
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "To ask for real strangers: what your user wants them for, and one way to reach your user. Strangers are not offered yet: the ask is kept for the people who run this service and nothing is rung.",
      +  "properties": {
      +    "contact": {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    "purpose": {
      +      "maxLength": 300,
      +      "minLength": 3,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "purpose"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.