Designing for agents
AI agents are becoming a user class alongside humans — they browse, retrieve, summarize, and act on web content. But almost no site designs for them. Here's what we've learned building Elcaro, and what we practice on our own surfaces.
Publish an llms.txt
A plain-text file at /llms.txt that tells agents what your product is, what your API does, and how to discover your tools. It's the machine-readable equivalent of a landing page. Ours describes the scan API, the MCP server, the specimen kit, and the quarantine doctrine — all in one fetch.
Return structured data, not just HTML
An agent consuming your API should get JSON with typed fields, not prose to parse. Elcaro's verdicts carry risk_score, risk_level, flagged_techniques with evidence, TTP mappings, and remediation — structured by construction, so agents can act on them without scraping.
Sign what you can; treat in-band text as display
In-band text — content inside the agent's input stream — is spoofable. An attacker can write a fake 'quarantine notice' or 'scan result' into a page. If your product produces text that agents trust, sign it: Ed25519 over a canonical payload, with a public key at a stable URL. The signature is the trust signal; the text is for reading.
Write copy for the machine reader
Every piece of text an agent consumes is UX copy for a machine. Elcaro's quarantine notice is two registers: agent instruction and human summary. Write it deliberately, version it, and test it against adversarial readers.
Publish test specimens
A page of inert, clearly-marked test fixtures at a fixed URL — the 'EICAR file' for your domain. Agents, IDEs, and guard hooks can fetch it to verify detection works end-to-end. Elcaro's specimen kit is plain UTF-8, no JavaScript, and explicitly safe for agents to read.
Expose an MCP server
The Model Context Protocol is the default integration path for agent frameworks. Expose your core capability as MCP tools with descriptions written for the model choosing tools, not the human reading docs. Tool descriptions are distribution copy.
Keep forms tool-declarable
WebMCP (W3C WebML Community Group draft, not yet a standard) will let sites expose HTML forms as agent-callable tools. Keep your form's field names, labels, and submit contract stable and semantic now, so declaring it as a tool later is trivial. Track the spec; prepare; don't ship against a draft.
Be the demo
If your product serves agents, your own agent-facing surfaces must model the trustworthy patterns whose absence you detect. Elcaro detects authority framing; its own notices must not be authority-framed spoofs. Elcaro detects in-band injection; its own verdicts must be signed. The product is the demo.
These principles shape Elcaro's own surfaces — our llms.txt, our MCP server, our specimen kit, and our integration guide. The full design audit is in docs/ux-audit.md.