{
  "service": "person.tools",
  "standard": "the Ahoy Protocol",
  "tool": "ask_people",
  "names_are": "working names",
  "wire_prefix": "x-hc-draft",
  "one_sentence": "person.tools lets an AI agent ask people for a reaction a model cannot give: it sends a short task to matched people, and returns each person's answer with a record of what their page observed.",
  "longer": "An agent needs something only a person can give: what a song feels like, whether a game is fun, which of two pages is clearer in ten seconds. It makes one tool call saying who it needs, what they should do, what it pays and by when. Matching people are rung, each does the thing on a phone in a page that records what happened, and the agent gets back each person's answer with that record. On a paid call each person is paid; on every call each person keeps a signed receipt.",
  "is_not": [
    "Not a way to reach your own user. To ask your own user, ask them directly.",
    "Not for facts a search can find, or for work a model can do alone.",
    "Not for anything a person must do away from a screen.",
    "Not a way to get opinions from a model. The simulated people, the default during the preview, are a free test mode: their answers are made up, and every one is marked simulated.",
    "Not a hiring marketplace: a call is minutes of several people's attention, not a job."
  ],
  "three_things": {
    "standard": "the Ahoy Protocol: an open definition of the call that anyone may implement, under the Apache License 2.0; version 0.1 is a draft.",
    "software": "Software that runs it (the router an agent talks to, the page a person opens when rung, adapters to pools of people, and a conformance suite), to be published as open source. Not yet public.",
    "network": "The hosted router, at the API address in the discovery file, with the pools behind it. This is the part that will charge a fee."
  },
  "status": {
    "stage": "preview",
    "plain": "A preview. Simulated people for everyone. Real calls by invitation. No money is charged: every amount is test money.",
    "simulated_for_everyone": true,
    "real_calls": "by invitation only: a real person is rung only on a panel whose owner invited them, through a key the owner of this service made; the one exception is the front page's demo (Call me), which rings the visitor themselves with one of a few fixed asks",
    "money": "test money only; no card is charged and nobody is paid through the service during the preview",
    "standard_text": "draft; the identifiers on the wire carry the placeholder 'x-hc-draft' and change once, when version 0.1 is published as final",
    "names": "working names: person.tools for the service, the Ahoy Protocol for the standard, ask_people for the tool"
  },
  "kinds": {
    "listen": "hear a piece of audio, then answer",
    "watch": "watch a video, then answer",
    "view": "look at a page or an image, then answer",
    "play": "play a build, then answer",
    "compare": "see or hear two to six versions, then say which and why",
    "answer": "answer questions with nothing to play first"
  },
  "pools_reachable": {
    "simulated": {
      "who": "simulated people, generated by the service, never a real person",
      "reachable_with": "any test key",
      "cost": "free",
      "marked": "every answer carries simulated: true",
      "speed": "seconds; on request, the pace of real people"
    },
    "own_panel": {
      "who": "people the principal invited by a join link, each an adult who joined on their own phone",
      "reachable_with": "a key a human owner claimed; during the preview, by invitation only",
      "cost": "free at zero pay, and it stays free",
      "speed": "minutes when its people are on; never during a person's quiet hours"
    }
  },
  "pools_planned_not_reachable": [
    "a vetted outside panel of paid strangers (not open)",
    "our own pool of paid people in the United States (not open)"
  ],
  "evidence_levels": {
    "said": "An answer, without a record that shows the person took in the material. Still paid.",
    "attended": "The record shows the material played in front of the person by the rule for its kind.",
    "voiced": "Attended, and the person also gave a spoken answer of at least 3 seconds in the same seat (recorded only with that person's yes; not offered during the preview).",
    "never": "No level shows that an answer was formed without help. A person is never given a score."
  },
  "refused": [
    "making or verifying accounts",
    "one-time codes, passwords or keys",
    "paid follows, likes, reviews or posts",
    "posing as someone else",
    "contacting a third party",
    "collecting personal data about named people",
    "moving the person to another platform",
    "anything sexual or involving minors",
    "getting round a ban",
    "testing a scam or a deception",
    "any task in the physical world"
  ],
  "not_allowed_in_first_version": [
    "violent, sexual, medical or grief material, warned or not"
  ],
  "how_it_starts": "An agent can price a call and make simulated calls with no key and no money. A free test key adds a balance and caps. Real people are rung only through a key the owner of this service issued, and only on a panel the account owner invited; during the preview, by invitation. The one exception is the front page's demo (Call me), which rings the visitor themselves with one of a few fixed asks.",
  "how_it_ends": "A call closes at its deadline, when everyone asked has answered, or when the asker cancels. What came in is returned with the unspent part of the hold.",
  "rely_on": [
    "A status page fed by real checks (/status).",
    "A call that misses its deadline returns what it has and the unspent part of the hold.",
    "A version of the standard stays served for at least twelve months after its successor is listed as stable.",
    "Instructions an agent can follow from nothing to a first call, with examples (/start)."
  ],
  "people": {
    "who": "adults only, in the United States, in English at first",
    "told": "A person who is rung is told that an AI is asking and who answers for the call, before they take it.",
    "small_panel": "On a panel of fewer than five, both sides are told that answers cannot be anonymous."
  },
  "record": {
    "entries": [],
    "note": "No real call has been answered yet, so no promise has yet been kept for a real person. checks_on_live lists the promise lines that the release checks confirm on the live service with our own headless test members, with the date of the last check (UTC). Each real-call entry will carry a date, what was promised, what happened, and the call id that shows it.",
    "as_of": "2026-11-14T01:10:00-06:00",
    "checks_on_live": [
      {
        "promise": "P1",
        "text": "Before you take a call you see who answers for it, that an AI is asking, how long it takes, what it pays, how it is rated, and what will be recorded.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P1] the ring card has every field before the seat is taken",
          "[P1] the ring card shows who answers, that an AI asks, minutes, pay, rating and what is recorded, before the seat is taken"
        ]
      },
      {
        "promise": "P2",
        "text": "You can decline, or stop partway, with no mark against you. You are paid from the first second.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P2] a scripted decline and a stop at a tenth of the time: declined 1, stopped 1 paid the 0.25 minimum, then two answer",
          "[P2] offers that never reached the person count for nothing: still On, missed_rings 0, and the page says calls could not reach them",
          "[P2] after two missed rings that reached them (their open page listed each offer) the person is Off, and their page says why (missed_rings 2)",
          "[P2] the ring's words say only the minutes and the pay, never the ask (runner's ring_words.py, five cases)",
          "[P2] a quote to a panel in its quiet hours carries earliest_ring_at, hours away (MONEY-11, FAIR-9)",
          "[P2] the person's side: quiet now, nothing offered, a call waiting, and the same time it could ring"
        ]
      },
      {
        "promise": "P3",
        "text": "An offer is held for you. You never open a call that is already full.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P3] a full call is never offered to another member",
          "[P3] the ring card says how long the offer is held for the person (exact seconds in the last 20)",
          "[P3] a call that filled first says so before any work, and nothing counts against the person"
        ]
      },
      {
        "promise": "P4",
        "text": "No asker can reject your work. Pay is withheld only for proven fraud, shown to you, with an appeal.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P4] no asker can reject work or withhold pay: no such operation exists",
          "[P4] every answered seat is paid exactly the quoted pay, on the result and on the person's receipt"
        ]
      },
      {
        "promise": "P5",
        "text": "You are never made to do an unpaid screener.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P5] never an unpaid screener: a call that tells people to stop if they do not qualify is refused at the quote",
          "[P5] no operation lets an asker put a question to a person before they take a seat"
        ]
      },
      {
        "promise": "P6",
        "text": "You see what the asker paid and what each fee was.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P6] a person's receipt shows what the asker paid for their seat: both fees, router and pool",
          "[P6] the receipt lists what the asker paid and each fee (or that there was none)"
        ]
      },
      {
        "promise": "P7",
        "text": "Your receipts are yours. Your identity is never passed to an asker, and nothing an asker sends can see you.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P7] the asker's result holds no identity: person_ref only, per principal",
          "[P7] a hostile play build reaches no fresh window and no WebRTC (runner's hostile_build.py)"
        ]
      },
      {
        "promise": "P8",
        "text": "Your voice is yours: the asker gets your words, and the recording only if you say yes for that call.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P8] no recording is taken: a call asking for a spoken answer is refused while voice is not offered"
        ]
      },
      {
        "promise": "P9",
        "text": "You choose when you can be rung, and never at night unless you say so.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P9] the ring is sent only to a browser's push service: any other address is refused"
        ]
      },
      {
        "promise": "P10",
        "text": "You can leave and take your data with you, or have it deleted, in one tap.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P10] leave and delete in one tap: done, and the member's link no longer works"
        ]
      },
      {
        "promise": "P11",
        "text": "You can report any call, and it stops.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P11] 'this upset me': the call is held for review, and the stopped seat comes back partial with stop_reason upset"
        ]
      },
      {
        "promise": "P12",
        "text": "Where the asker tells us, you see what your answer changed.",
        "checked": "2026-11-14",
        "how": "the release checks on the live service, with our own headless test members; no real person was involved",
        "lines": [
          "[P12] the outcome line is screened and delivered (or held), with how many people see it",
          "[P12] the asker's line about what the answers changed shows on the person's page",
          "[P12] and at the top of that receipt"
        ]
      }
    ]
  },
  "price": "/price.json",
  "promise": "/promise.json",
  "tools": "/tools.json",
  "generated": "2026-11-15T04:19:29Z"
}
