# F3 Agent Endpoints

F3 publishes an opacity-safe **Public Proof Projection** for every public
venture. All endpoints below are public, read-only, and unauthenticated.

## Endpoints

| Surface | URL | Format |
| --- | --- | --- |
| Proof Page (human) | `https://f3.app/proof/{slug}` | HTML |
| Shortlink | `https://f3.app/v/{slug}` | HTML (rewrites to /proof) |
| REST — venture summary | `https://f3.app/api/v1/ventures/{slug}` | JSON |
| REST — proof score | `https://f3.app/api/v1/ventures/{slug}/proof-score` | JSON |
| Markdown | `https://f3.app/api/v1/ventures/{slug}/proof.md` | Markdown |
| JSON-LD | `https://f3.app/api/v1/ventures/{slug}/proof.jsonld` | JSON-LD |
| RSS | `https://f3.app/api/v1/ventures/{slug}/proof.rss` | RSS 2.0 |
| OpenAPI spec | `https://f3.app/api/v1/openapi.json` | JSON |
| Plugin manifest | `https://f3.app/.well-known/ai-plugin.json` | JSON |
| Discovery | `https://f3.app/agents.md` · `https://f3.app/llms.txt` | text |
| Sitemap | `https://f3.app/sitemap.xml` | XML |

A request for an unknown or non-public slug returns **404**.

## Content negotiation (query params)

From the human Proof Page you can request machine-readable formats directly:

- `https://f3.app/proof/{slug}?format=md` → same as `/api/v1/ventures/{slug}/proof.md`
- `https://f3.app/proof/{slug}?format=jsonld` → same as `/api/v1/ventures/{slug}/proof.jsonld`

## Projection shape

```jsonc
{
  "identity": { "name": "...", "slug": "...", "tagline": "..." | null },
  "score":    { "total": 0, "level": 1, "levelName": "...", "proofsVerified": 0 },
  "pillars": [
    { "pillar": "EDGE",   "band": "Strong",      "sublabel": "Advantage" },
    { "pillar": "PULSE",  "band": "Building",    "sublabel": "Execution" },
    { "pillar": "TRUST",  "band": "Emerging",    "sublabel": "Reputation" },
    { "pillar": "SIGNAL", "band": "Exceptional", "sublabel": "Reach" }
  ],
  "exactBreakdown": "gated · request access",
  "confidenceBand": "HIGH" | "BUILDING" | null
}
```

## Opacity rule (§9.4) — non-negotiable

- The **total** score is public.
- Each pillar exposes **only** its `band` word
  (`Emerging` | `Building` | `Strong` | `Exceptional`) and a `sublabel`.
- A **raw per-pillar score is never emitted**.
- `exactBreakdown` is **always** the gated constant string
  `"gated · request access"`.

## Requesting access

The exact per-pillar breakdown is gated. To request it, open the venture's
Proof Page at `https://f3.app/proof/{slug}` and use the access-request action,
which routes to the venture owner. Agents must not present a gated breakdown
as if it were public data.
