# Zengqizhi Public Site API

This site exposes a small public, read-only API for agents. No account, token, cookie, or registration is required.

## Site catalog

`GET /api/site-catalog.json`

Returns the canonical site metadata, public pages, profiles, public or sealed project summaries, browser apps, and discovery URLs.

## Achievement snapshot

`GET /api/achievements`

Returns a cached, read-only snapshot of the site owner's public Codeforces, AtCoder, and GitHub activity. The response includes a generation timestamp and a separate availability status for each platform. A platform with no rated contest is represented as unrated with a null rating, not as rating zero. The GitHub heatmap represents overall contributions, which can include commits, issues, pull requests, and reviews.

## Markdown content negotiation

Send `Accept: text/markdown` to any of these page URLs:

- `/`
- `/about/`
- `/projects/`
- `/web_apps/`
- `/bless/`
- `/mbti/`
- `/radar/`

The response uses `Content-Type: text/markdown; charset=utf-8`, varies on `Accept`, and includes an estimated `x-markdown-tokens` value.

## MCP

The stateless Streamable HTTP endpoint is `POST /mcp`. It exposes three read-only tools:

- `get_site_catalog`
- `search_site_catalog`
- `get_site_page`

See `/.well-known/mcp/server-card.json` for the discovery card. Requests without an HTTP `Origin` header are accepted by normal non-browser MCP clients; browser origins are restricted to the site and local development hosts.

The endpoint supports the modern 2026-07-28 per-request protocol (including `server/discover`) and the stateless 2025 protocol family for compatibility.

## Limits and boundaries

- All responses contain public information only.
- There are no write methods, user accounts, OAuth scopes, purchases, or payments.
- External subdomains have independent availability.
- BSOD and Cloudflare error pages are simulations and are intentionally excluded from Markdown negotiation.
