| agent.json referenced | agent-ready | ✗ | 0/1 | ailang serve-api generates A2A agent cards automatically — bonus if you're an early adopter |
| openapi.json referenced | agent-ready | ✗ | 0/2 | ailang serve-api generates OpenAPI 3.1 from Hindley-Milner type signatures |
| MCP endpoint referenced | agent-ready | ✗ | 0/2 | ailang serve-api --mcp-http exposes typed functions as MCP tools |
| Public API docs linked | agent-ready | ✗ | 0/2 | ailang serve-api hosts Swagger + ReDoc at /api/_meta/ by default |
| Webhooks documented | agent-ready | ✗ | 0/2 | ailang serve-api handles webhooks as typed handler functions with effect-tracked side effects |
| Rate limits documented | agent-ready | ✓ | 2/2 | Capability budgets — Net @limit=N is the symmetric server-side primitive for what agents see as rate limits |
| Streaming / SSE endpoint | agent-ready | ✗ | 0/2 | std/stream — ssePost and Stream effect handle event-source endpoints with typed event types |
| Sandbox / test environment offered | agent-ready | ✗ | 0/2 | ailang --ai-stub plus mock effect handlers — deterministic, capability-scoped fakes for any effect, including Net and AI |
| Authentication documented | agent-ready | ✗ | 0/2 | std/jwt for verification, IFC labels (string / string) to keep credentials out of public sinks at the type level |
| Idempotency keys documented | agent-ready | ✗ | 0/2 | Pure functions are idempotent by construction; requires/ensures contracts express idempotence as a static guarantee |
| AG-UI streaming protocol | agent-ready | ✗ | 0/1 | std/stream — the AG-UI event lifecycle (RUN_STARTED → TEXT_MESSAGE_CONTENT → TOOL_CALL_RESULT → RUN_FINISHED) is a textbook sum type. ADTs + exhaustive pattern matching make every event-type branch a compile error to skip. |
| HTTP 402 agent payments (x402 / pay-per-crawl) | agent-ready | ✗ | 0/1 | Net @endpoint-scoped capability budgets bound payment destinations; requires { amount <= budget } gates the payload; IFC labels keep the signed payment key out of public sinks. Same primitives cover x402 payload signing and Cloudflare's crawler-price negotiation. |
| AP2 Agent Payments Protocol | agent-ready | ✗ | 0/1 | Mandates ARE contracts. requires { intent.price <= mandate.maxPrice } + ensures { cart.total <= intent.price } is a one-to-one translation of an Intent/Cart Mandate into AILANG. Z3 can verify the bounds at compile time. |
| UTCP tool-calling protocol | agent-ready | ✗ | 0/1 | Typed function signatures are the manifest. ailang serve-api emits the same metadata as a UTCPManual (name, input/output schema, native endpoint) — direct-call discovery without a proxy server. |
| End-to-end encryption documented | privacy | ✗ | 0/2 | IFC labels (string) force decryption to flow through a typed boundary; the compiler refuses to publish sealed values without explicit declassification |
| Compliance certifications cited | privacy | ✗ | 0/2 | requires/ensures contracts express machine-verifiable claims; capability budgets bound audit-trail effects; effect rows leave nothing un-declared |
| Data minimisation language | privacy | ✗ | 0/2 | Capability scoping — each Net call declares its endpoint in the effect row, so "doesn't sell" becomes a type-system-enforceable claim, not a marketing one |
| Third-party domains restrained | privacy | ✗ | 0/2 | Capability scoping — each Net call declares its endpoint in the effect row |
| Data residency / on-prem language | privacy | ✗ | 0/2 | Three-runtime deploy — same module runs in WASM (browser), Cloud Run, and native CLI |
| Single-vendor LLM language | portable | ○ | 2/2 | std/ai multi-provider — switch from Anthropic to Gemini to OpenAI without rewriting |
| Multiple AI providers cited | portable | ✗ | 0/2 | std/ai — one Step API across Anthropic, OpenAI, Gemini, OpenRouter, Ollama, and custom-package providers |
| Cross-runtime / deployment portability | portable | ✓ | 2/2 | Effect handlers as runtime adapters — same .ail runs as WASM in the browser, a Cloud Run container, and a native CLI; only the handlers change |
| BYO key / model-agnostic | portable | ✗ | 0/2 | AILANG WASM — the full interpreter ships as a browser bundle, so caller-held keys (BYOK), offline apps, and embedded demos all work client-side |