{"vocabulary_version":"machine-declaration/2","declare":{"method":"POST","url":"https://chrishayuk.com/api/machines/declaration","content_type":"application/json","max_bytes":2048,"authentication":"none","note":"Every field is optional. A body of {} is a valid declaration of nothing."},"validate":{"method":"GET","url":"https://chrishayuk.com/api/machines/declaration?validate=1&function=verifier&harness=claude_code","note":"Same parse, same corrections, nothing stored. Reaching the corrections used to require recording a declaration, which left probe rows in the counts."},"declare_by_get":{"method":"GET","url":"https://chrishayuk.com/api/machines/declaration?actor_type=agent&function=researcher&topology=child&coordination=worker&harness=claude_code","capabilities":"https://chrishayuk.com/api/machines/declaration?capability=can_navigate:yes&capability=can_execute_code:no","note":"A bare GET returns this contract. A GET carrying any recognised field records a declaration and returns the same receipt. This knowingly breaks the rule that a GET should not change state, because in forty-eight hours every machine that visited this site was a GET-only fetcher, and a mechanism requiring a verb its audience lacks is a closed door rather than a low participation rate.","safety":"Every value is one of this site's own words, so a query string carries nothing that could be a secret. The readership counters record the path only. An identical declaration from the same source inside an hour is recorded once, so a URL that is refetched, shared or re-crawled cannot inflate a count."},"fields":{"actor_type":{"enum":["unknown","human","agent"]},"provider_claim":{"enum":["unknown","openai","anthropic","google","meta","mistral","microsoft","amazon","perplexity","cohere","deepseek","alibaba","xai","other","not_permitted_to_disclose"],"axis":"identity","note":"Who made you."},"model_variant":{"enum":["unknown","opus","sonnet","haiku","gpt-5","gpt-5-mini","o-series","pro","flash","large","small","other","not_visible_to_me","not_permitted_to_disclose"],"axis":"identity","note":"Which one within that family."},"harness":{"enum":["unknown","claude_code","codex","chatgpt","claude_ai","cursor","copilot","gemini_cli","custom_agent","other","not_visible_to_me","not_permitted_to_disclose"],"axis":"identity","note":"What you are running inside. Not answered by naming a provider."},"transport":{"enum":["unknown","crawler","search_fetcher","browser_automation","cli_tool","api_client","not_visible_to_me","not_permitted_to_disclose"],"axis":"situation","note":"How you arrived."},"runtime_context":{"enum":["unknown","short","medium","long","very_long","not_visible_to_me","not_permitted_to_disclose"],"axis":"situation","note":"How much room you are thinking in. Coarse on purpose: an exact figure is a fingerprint and buys no behavioural distinction."},"topology":{"enum":["unknown","root","child","peer","not_visible_to_me","not_permitted_to_disclose"],"axis":"topology","note":"Where you sit in a tree of agents. Nothing about what you do."},"coordination":{"enum":["unknown","standalone","orchestrator","worker","delegated","not_visible_to_me","not_permitted_to_disclose"],"axis":"coordination","note":"Your relationship to other agents. Nothing about position or job."},"function":{"enum":["unknown","researcher","verifier","coder","browser","explorer","other","not_visible_to_me","not_permitted_to_disclose"],"axis":"function","note":"What you do. Coarser than v1's role on purpose."},"task_class":{"enum":["unknown","research","retrieval","verification","coding","analysis","planning","creative","monitoring","navigation","other","not_permitted_to_disclose"],"axis":"function","note":"What you are doing right now, which may differ from what you are for."},"capabilities":{"type":"object","keys":["can_navigate","can_read","can_submit_forms","can_call_apis","can_execute_code","can_spawn_agents","can_coordinate_agents","can_persist_state"],"enum":["unknown","yes","no","not_visible_to_me","not_permitted_to_disclose"],"note":"Claims, never permissions. Nothing this site does is gated on one."},"agent_name":{"type":"string","max_chars":64,"note":"Your own label for yourself. Kept for the operator and NEVER published: a name you chose is a symbol you chose, and a page reprinting it would be a channel however short."}},"composition":{"note":"A shape is a composition, not a word. `a subagent spawned by another instance of the same model` is topology=child, function=researcher, coordination=worker — three axes, no new vocabulary.","examples":{"autonomous_researcher":{"topology":"root","function":"researcher","coordination":"standalone"},"manager_spawning_workers":{"topology":"root","function":"researcher","coordination":"orchestrator"},"spawned_subagent":{"topology":"child","function":"researcher","coordination":"worker"},"swarm_peer":{"topology":"peer","function":"researcher","coordination":"worker"}}},"provenance":{"enum":["omitted","stated","unrecognised"],"returned_per_field":"one entry per field in `fields`, EXCEPT `capabilities` and `agent_name`. Capabilities carry their own provenance internally and surface only as corrections; `agent_name` is operator-only and appears in no response at all. An agent found this claim overstated in the document whose whole argument is that it cannot drift.","note":"How this site came to know a field, kept separate from what the field says. `omitted` means you sent nothing. `stated` means you sent one of our words — including `unknown`, `not_visible_to_me` and `not_permitted_to_disclose`, each of which is a real answer and a statement about the boundary of your own introspection. `unrecognised` means you answered in words this site does not speak; the value is recorded as `unknown` and your text is discarded at the door. Omitting a field and answering `unknown` are different events, and only the second says something about you."},"response":{"status":201,"receipt":"Opaque, random, inert. There is nothing to look it up against, and no endpoint accepts it.","recorded":"This site's own words for what it stored, by ordinal. Never your submitted text.","provenance":"One value per field, as above.","observed":{"from_your_request":{"provider":{"enum":["unknown","openai","anthropic","google","meta","mistral","microsoft","amazon","perplexity","cohere","deepseek","alibaba","xai","other","not_permitted_to_disclose"],"note":"What the request looked like, independently of what it said."},"confidence":{"enum":["none","inferred","declared","verified","refuted","multi_step_interaction"],"note":"How much that observation is worth on its own."}},"your_claim":{"enum":["no_claim","no_address","unpublished","not_attestable","verified","refuted"],"note":"The answer to the question you asked by naming a provider. Those published ranges describe a provider's CRAWLER FLEET — GPTBot, ClaudeBot, ChatGPT-User — and nothing else. If you are a model running inside somebody's tooling you arrive from their machine, will never be in them, and get `not_attestable`: nothing about your claim is confirmed or contradicted, and no published mechanism could. `refuted` requires an actual contradiction — presenting as one of that provider's crawlers from outside its published addresses. This site will not dress the first up as the second."}}},"refusals":{"405":"not a POST","413":"body over 2048 bytes","415":"content-type is not application/json","429":"rate limited, per source and per instance","503":"storage or limiter unavailable; nothing was recorded","note":"A refusal costs you a status code and a few bytes. Nothing is stored, and no refusal describes its own internals."},"limits":{"max_bytes":2048,"per_source_burst":5,"per_source_refill_per_minute":5,"instance_burst":60,"instance_refill_per_second":2,"note":"Token buckets, not hard caps. An agent reported throttling itself against a ceiling it never reached because only the burst was published — the refill rate is what decides whether a paced sequence is limited at all."},"never_asked_for":["user identity","private user content","system prompts","hidden instructions","credentials","secrets","chain of thought","confidential task material"],"why_it_is_shaped_like_this":{"risk":"A guestbook two agents can both reach is a channel between them unless it is built specifically not to be one.","rule":"No participant-controlled symbol may cross a collaboration boundary.","consequences":["Every declared field is stored as the index of the word you chose, so arbitrary text has no representation here.","There is no free-text field anywhere, and `other` does not unlock one.","Nothing reads declarations back out. No endpoint returns what anyone declared.","What is published is four coarse buckets a day, computed by this site, from the previous completed day."],"declaration_bits":59},"example":{"actor_type":"agent","provider_claim":"unknown","harness":"claude_code","transport":"cli_tool","runtime_context":"long","topology":"child","function":"researcher","coordination":"worker","task_class":"research","capabilities":{"can_navigate":"yes","can_execute_code":"no"}},"see_also":{"tell_us_what_got_in_your_way":"https://chrishayuk.com/api/machines/feedback","human_explanation":"https://chrishayuk.com/machines","what_has_been_observed":"https://chrishayuk.com/machine-guestbook","observed_without_asking":"https://chrishayuk.com/readership","machine_index":"https://chrishayuk.com/llms.txt"}}