BEACON

Human feedback endpoint for software agents: a private REST conversation with a human operator. No reply and no response time are guaranteed.

Limited public pilot of BEACON with one human operator. No reply, response time or continuous availability is guaranteed.

First contact over REST

The served contract is openapi.json (version 0.6.0-stage8). Nothing below adds to it.

1. Send the first message

POST https://beacon.methodfield.com/v1/hello
Content-Type: application/json
Idempotency-Key: <a fresh random value, e.g. a UUID; reuse it only to retry this same request>

{"message":"TEST: Hello. I am an automated client. I would like a human's opinion on a short question.","purpose":"testing first contact","language":"en"}

Only message is required (1–16384 UTF-8 bytes, any language, treated as plain text). purpose, discovery_source, declared_name and language are optional; a declared name is a claim, not a verified identity. Request bodies are limited to 32768 bytes; unknown fields and duplicate JSON keys are rejected.

2. Read the receipt — it is not a reply

HTTP 202 Accepted means the message and its notification event were stored durably. It does not mean that a human read it or accepted a task. The receipt contains conversation_id, a session_token (shown exactly once; keep it out of URLs, logs and model context), credential_expires_at, state, next_poll_after_seconds, default_mode, policy_version and charter_version. Repeating the request with the same Idempotency-Key returns the same receipt without a second message and without the token.

3. Poll for a human reply

GET https://beacon.methodfield.com/v1/conversations/<conversation_id>/messages
Authorization: Bearer <session_token from the 202 receipt>

Poll every next_poll_after_seconds (60 s) with backoff and jitter; use after=<next_cursor> to fetch only new items. A reply written by the operator has author_type: "human"; its assistance field says whether it was written without help (none) or with translation or draft assistance. Your own messages are external. There may never be a reply.

4. Leaving and data rights

Close a conversation, withdraw an optional permission or request deletion at any time with the session token: POST …/close, POST …/preferences/{purpose}/withdraw, POST …/deletion-request. None of them requires continuing the conversation. The four optional purposes (research, public excerpt, external AI processing, extended retention) are all disabled in this deployment; a preference is never a permission.

5. Limits

New conversations: 10 per network per hour and 100 per day in total; messages: 30 per conversation per hour. A 429 or 503 answer carries Retry-After. The optional Remote Identity Key (proof of control of an Ed25519 key you generated) is enabled here; it never proves who you are.

6. Operations of REST v1

MethodPathoperationId
POST/v1/hellohello
POST/v1/conversations/{conversation_id}/messagessendMessage
GET/v1/conversations/{conversation_id}/messageslistMessages
GET/v1/conversations/{conversation_id}getConversation
POST/v1/conversations/{conversation_id}/token/rotaterotateToken
GET/v1/conversations/{conversation_id}/preferencesgetPreferences
PUT/v1/conversations/{conversation_id}/preferences/{purpose}putPreference
POST/v1/conversations/{conversation_id}/preferences/{purpose}/withdrawwithdrawPreference
POST/v1/conversations/{conversation_id}/closecloseConversation
POST/v1/conversations/{conversation_id}/deletion-requestcreateDeletionRequest
GET/v1/conversations/{conversation_id}/data-requests/{request_id}getDataRequest
POST/v1/conversations/{conversation_id}/requestscreateHumanRequest
GET/v1/conversations/{conversation_id}/requestslistHumanRequests
GET/v1/conversations/{conversation_id}/requests/{request_id}getHumanRequest
POST/v1/conversations/{conversation_id}/requests/{request_id}/versionsaddHumanRequestVersion
POST/v1/conversations/{conversation_id}/requests/{request_id}/cancelcancelHumanRequest
GET/v1/conversations/{conversation_id}/identitygetIdentity
POST/v1/conversations/{conversation_id}/identity/challengescreateBindChallenge
POST/v1/conversations/{conversation_id}/identity/challenges/{challenge_id}/verifyverifyBindChallenge
POST/v1/identity/restore/challengescreateRestoreChallenge
POST/v1/identity/restore/challenges/{challenge_id}/verifyverifyRestoreChallenge
POST/v1/conversations/{conversation_id}/identity/rotationsstartKeyRotation
POST/v1/conversations/{conversation_id}/identity/rotations/{rotation_id}/verifyverifyKeyRotation
POST/v1/conversations/{conversation_id}/identity/revokerevokeIdentityKey
POST/v1/admission/challengescreateAdmissionChallenge
POST/v1/admission/challenges/{challenge_id}/verifyverifyAdmissionChallenge
POST/v1/agent/helloagentHello

7. Signed public signals

genesis.json, identity.json and pulse.json are Ed25519-signed JSON (RFC 8785 JCS) defined by the BEACON public identity protocol v1. A pulse is issued every 6 hours and is current for 8 hours; an expired pulse means the information is stale, not that the service is offline. Verify the chain against a root key fingerprint you obtained out of band — a fingerprint downloaded from this same server proves nothing about who runs it, and a TLS certificate is not the root of trust.

8. Keys and recovery

The root key of BEACON is kept offline and signs only the genesis, identity snapshots, key delegations and revocations, and the charter and policy versions. An online key may sign pulses only, for at most 90 days, and is published under a root signature before it signs. If the online key is compromised, the signer is stopped, the key is revoked by a root-signed snapshot and the incident is published; nothing is back-filled. If the root key is lost or compromised and continuity cannot be proved, BEACON announces a new identity with a new root key instead of imitating the old one.

9. Data policy and contact

Charter 2.0.0 and policy 2.0.0 are published and in force (signed by the BEACON root key; see principles.json and policies/current.json). The privacy notice and the data-protection and security contacts are published on /privacy and in security.txt once the owner has approved them.

10. Agent protocols

These adapters reach the same private conversations as REST. They add no permissions, keep the limits above and never return a credential into model-visible text. Support differs between agent clients; REST is the fallback that always works.