# PyModel API

PyModel exposes a public contact endpoint for project inquiries and a read-only MCP endpoint for site discovery. No authentication or agent registration is required.

## Discovery

- API catalog: `https://pymodel.com/.well-known/api-catalog`
- OpenAPI: `https://pymodel.com/.well-known/openapi.json`
- Contact configuration status: `GET https://pymodel.com/api/health`
- MCP server card: `https://pymodel.com/.well-known/mcp/server-card.json`
- MCP endpoint: `POST https://pymodel.com/mcp`
- Protected Resource Metadata: `https://pymodel.com/.well-known/oauth-protected-resource`
- Authorization server metadata (anonymous `agent_auth`): `https://pymodel.com/.well-known/oauth-authorization-server`
- Markdown for Agents: send `Accept: text/markdown` on any page URL; prerendered pages also exist at `<path>.md`

## Contact API

`POST https://pymodel.com/api/contact` accepts JSON or form data. Send `Accept: application/json` for a JSON response.

Required fields: `name`, `email`, `initiative-type`, `system-context`, and `outcome`. `organization` is optional. Valid initiative types are documented in the OpenAPI description.

Submitting sends email to PyModel and a confirmation to the supplied address. Agents must show the final inquiry and obtain the user's explicit approval before submission. Do not send test or synthetic inquiries; the health endpoint reports configuration only and does not probe the email provider.

The endpoint is rate-limited to five attempts per source address per hour. Requests must declare `Content-Length` and remain below 64 KiB.

## Authentication

These public endpoints do not accept or require OAuth credentials. PyModel does not operate an OAuth authorization server or protected agent API.
