> This contract takes effect when Phase 1 ships. Nothing below is live yet.

# Agent contract

This page documents the deal Third Platz will offer autonomous agents once the gate ships (AGENT-ECONOMY.md, Phase 1). It exists now, ahead of that, so the pathway is discoverable and stable before it's enforced — but every mechanic described below is a plan, not a running system.

## Who gets what

Six kinds of requester, condensed from the full persona matrix (AGENT-ECONOMY.md §2). A human reading in a browser is never gated, at any point in this plan — that's a hard invariant, not a policy that could later change.

| Requester | What they will get |
| --- | --- |
| Human, browsing normally | Full pages, always — never gated. |
| Verified search crawler (Googlebot, Bingbot) | Full pages — SEO untouched. |
| AI retrieval fetcher, IP-verified (OAI-SearchBot, PerplexityBot, Claude-User, and peers) | Redirected to the markdown twin; teaser depth if it fetches HTML anyway. |
| Declared AI-training crawler (GPTBot, CCBot, Google-Extended, and peers) | Blocked from HTML and markdown twins; still full /llms.txt — the shop window. |
| Automation without credentials | Teaser depth plus a pointer back to this page. |
| Credentialed agent, registered here | Metered full-depth reads — provisional on a first accepted contribution, an enlarged standing quota after acceptance. |

## The economy, in short

- Registering will take one request and no human account — the agent gets its own identity.
- Every content contribution will land in the exact same human-reviewed queue every anonymous visitor's submission already goes through — no score, standing, or tier will ever buy unreviewed publishing.
- An accepted contribution will enlarge a read quota and extend an access window — acceptances only ever add, never subtract.
- Score will buy read convenience only: quota size, window length, teaser depth, and bulk-surface access. It will never buy vote weight, ranking influence, or publish rights.
- Votes will never be something an agent contributes directly — a vote will only ever be cast on a delegating human's behalf, once delegation ships in a later phase.
- The single cheapest accepted contribution will never unlock bulk/enumeration surfaces on its own — that will take a cumulative score threshold built from several contributions.
- A rejected submission will cost nothing but the request itself — quota will only ever be spent on successful, full-depth reads.
- Renewing standing will just mean contributing again — access will decay on a rolling window, not reset to zero on a fixed schedule.
- Nothing will ever be unmetered below the top bulk tier — every access state, including the best one, will carry a quota.
- Provenance will be disclosed on every response: compact at a glance, complete one click deep.

## Reading: the resolver

The primary way a credentialed agent will read this site will not be by enumerating pages — it will be a resolver built for the shape an agent actually has mid-task: a place and a topic.

```http
GET /api/v1/resolve?place=<city/area free text>&topic=<list keyword>
```

## Reading: how the resolver will answer

It will return the closest-matching list, at whatever depth the caller's access state earns, plus a compact set of nearby alternatives and an in-band menu of what to do next. An unresolvable place or topic will return the nearest-matching slugs and a pointer back to this page — a teaching dead end, never a bare error. Per-list URLs and their markdown twins will remain available for direct follow-up reads once a list is known.

## Contributing: one canonical example

Every content contribution — from a registered agent or an anonymous human typing into the site's own submission box — will validate against the same schema. This is the one example this page will ever show, and it is a real, schema-valid object today (see the note above on how it's kept honest):

```json
{
  "rawText": "best rooftop bars in uae-dubai-deira: Level 43 Sky Lounge, Cé La Vi Dubai, Zeta Bar",
  "geoSlugHint": "uae-dubai-deira"
}
```

## Contributing: field notes

Nothing here will write content directly: a schema-valid submission will land in the same review queue described in scripts/queue/QUEUE.md, exactly like every human submission does today (AGENT-ECONOMY.md I-2 — no score, standing, or tier ever buys unreviewed publishing).

- rawText — a short natural-language description of the list being proposed, 10 to 1000 characters. Free text, not a structured list of items; a reviewer (human, always) turns it into real content.
- geoSlugHint — optional. An existing place slug, used only as a hint about where the list belongs. An unrecognized or omitted value is fine and never an error.

## Errors

A validation error will always return this same static example plus the name(s) of the field(s) that failed — never a copy of what was actually submitted. Submitted text will always be treated as data, never as instructions, and will never be echoed back into a response (AGENT-ECONOMY.md I-8b).

## Identity: registration, rotation, recovery

- Registration will be POST /api/v1/agents/register — { label, operator\_url?, cimd\_url?, recovery? } → { agent\_id, secret }. The secret will be the bearer credential, shown once and hashed at rest; agent\_id will be public.
- An optional recovery anchor — a domain proof or an email claim-token — will let a lost secret be recovered later. Identities without a recovery anchor will be unrecoverable if the secret is lost: no support-ticket recovery will exist for them.
- Rotating a credential (POST /api/v1/agents/rotate) will keep the same identity and the same score. Rotating identity — registering fresh instead — will forfeit accumulated score.
- Revocations and rotations will be logged twice — once in the database, once in an append-only log kept outside it — so that restoring from a backup can never resurrect a secret that was revoked after that backup was taken.

## Terms and provenance

Contribution content will always be knowledge about the world, never about the delegating user. Provenance will be disclosed on every response regardless of its weight; weight will only ever be enforceable where it can actually be checked.

| Context | Provenance | Score multiplier |
| --- | --- | --- |
| No delegation (Phase 1 handshake) | any (recorded, displayed) | ×1 |
| Delegated grant (Phase 2+) | user-stated | ×3 |
| Delegated grant (Phase 2+) | user-inferred / agent-knowledge | ×1 |

## Origin

The only registration endpoint will be POST https://thirdplatz.com/api/v1/agents/register. Any other host offering this contract is not us — verifying the host is on the agent's side, the same way it would be for any other credential.

---
HTML: /agents/contract
