# ipa-tutor

> Koine Greek scoring for agents. MCP Streamable HTTP at https://ipa.raymati.com/mcp. Tools: score, heard_as, recognize, create_upload. score_attempt aliases score. Send ipa, small audio_base64, or audio_url. proximity is 0 to 1. heard_as does not change proximity.

The public origin is https://ipa.raymati.com. Local IPA scoring is http://127.0.0.1:43117. Documented calls are IPA for public Greek words. No sample wav is published. HTML pages honor `Accept: text/markdown` (draft-consolidated-content-01). The `.md` URL is the stable alternate. `rel=describedby` points here.

## Tools

- [MCP endpoint](https://ipa.raymati.com/mcp): POST one JSON-RPC message. Tools `score`, `heard_as`, `recognize` (WAV via audio_base64 or audio_url), `create_upload` (PUT URL, memory in this build). `score_attempt` aliases `score`
- [Install](https://ipa.raymati.com/docs/install.md): ChatGPT, Claude, Cursor, VS Code, Gemini CLI, Claude Code
- [Record widget](https://ipa.raymati.com/apps/record): MCP Apps stub, `text/html;profile=mcp-app`
- [Server card](https://ipa.raymati.com/server.json): name `com.raymati/ipa`, remote type `streamable-http`. [/server-card.json](https://ipa.raymati.com/server-card.json) is the same document
- [Privacy](https://ipa.raymati.com/privacy.md): placeholder for Aaron to review
- [Terms](https://ipa.raymati.com/terms.md): placeholder for Aaron to review
- [OpenAPI 3.1](https://ipa.raymati.com/openapi.json): operations, schemas, and scored examples
- [Example pairs](https://ipa.raymati.com/docs/examples.json): each documented IPA request and the scorer response
- [Agent card](https://ipa.raymati.com/.well-known/agent-card.json): A2A discovery file. This host does not implement an A2A task API

## Well-known

- [security.txt](https://ipa.raymati.com/.well-known/security.txt): RFC 9116 contact and expiry
- [OpenAPI copy](https://ipa.raymati.com/.well-known/openapi.json): the same document as `/openapi.json`. Not an IANA name
- [Sitemap](https://ipa.raymati.com/sitemap.xml): every public URL
- [robots.txt](https://ipa.raymati.com/robots.txt): search and user-triggered agents are allowed. Training crawlers follow ALLOW_TRAINING_CRAWLERS (default allow)

## After deploy

- [Registries](https://ipa.raymati.com/docs/registries.md): official MCP registry DNS steps for `com.raymati/ipa`. Do not publish from CI
- [Submitting](https://ipa.raymati.com/docs/submitting.md): Claude, ChatGPT, Smithery, Glama, PulseMCP, mcp.so, APIs.guru. Do not submit from CI
- [Auth](https://ipa.raymati.com/docs/auth.md): anonymous free tier. OAuth 2.1 is a design, not a server

## Guides

- [Quickstart](https://ipa.raymati.com/docs/quickstart.md): curl, Python, JavaScript, Rust, and the MCP score call
- [Concepts](https://ipa.raymati.com/docs/concepts.md): proximity, learner status, feature diffs, error codes, stress, heard_as
- [Errors](https://ipa.raymati.com/docs/errors.md): RFC 9457 problem details and rate-limit headers
- [Reference](https://ipa.raymati.com/docs/reference.md): fields copied from the OpenAPI schemas
- [Changelog](https://ipa.raymati.com/docs/changelog.md): documentation on this host, score unchanged
- [Full guide](https://ipa.raymati.com/llms-full.txt): these Markdown pages in one file
- [Landing](https://ipa.raymati.com/index.md): same orientation as the HTML home page
