A field guide
Agent-native: software for a new primary reader.
Agent-native software is software designed so an AI agent is a first-class user: it can discover the product, understand it, act in it, be limited inside it, and verify what happened, without a human translating. It is not a chatbot bolted on, and not a scraper in disguise.
Try the Agent switch up top. It shows this page the way an agent receives it.
01
What does agent-native mean?
A product is agent-native when an autonomous agent can discover it, understand it, act in it, be limited inside it, and verify what happened.
The human is still in the loop, but at the points that matter: approval, oversight, and outcomes. Not at every click.
Cloud-native meant designing for the datacenter you actually run on. Mobile-native meant designing for a thumb and a small screen. Agent-native means designing for a reader that is fast, literal, tireless, token-limited, and has no eyes.
Three stages
| Agent-bolted-on | Agent-ready | Agent-native | |
|---|---|---|---|
| Interface | Chat widget over the same UI; agents drive a browser | Public API, partial coverage | Every capability is a tool, API, or CLI call; the UI is one client of many |
| Docs | PDFs, videos, marketing pages | Human docs plus an OpenAPI file | llms.txt, clean Markdown, schemas with examples, tool descriptions written for models |
| Auth | Shared human login, CAPTCHA | API keys, coarse scopes | Delegated, scoped, revocable agent identities with spend and rate limits |
| Errors | HTML pages, “something went wrong” | JSON with a status code | Code, cause, fix, and a retryable flag |
| State changes | Fire and hope | Sometimes idempotent | Idempotency keys, dry-run, receipts |
| Verification | Eyeball it | Logs for engineers | Queryable receipts; actor recorded as human or agent |
02
What are the principles of agent-native design?
Eight properties. Select a card to see the bolted-on version next to the native one.
Parity
Anything a person can do, an agent can do.
Anything a person can do in the UI, an agent can do through a stable interface. If the only way in is a button, the product is not agent-native.
Bolted-on
A “Refund” button with no endpoint behind it.
Native
Refund is a tool; the button calls the same tool.
Legibility
The product describes itself.
Schemas, examples, and tool descriptions are written so a model can pick the right call without a human reading the docs first.
Bolted-on
Docs live in a video and a PDF. The agent guesses.
Native
Schemas, examples, and tool descriptions written for models, plus llms.txt.
Idempotent by default
Agents retry. Make retries safe.
Writes accept idempotency keys, costly actions offer dry-run, and side effects are stated up front.
Bolted-on
A timeout, a retry, and the customer is refunded twice.
Native
Idempotency key on every write; dry_run on costly calls.
Errors that teach
A good error is the next prompt.
Return a machine-readable code, the cause, a suggested fix, and whether a retry can succeed.
Bolted-on
“Something went wrong” in an HTML page.
Native
{code, cause, fix, retryable}. The agent corrects itself.
Scoped authority
Autonomy is granted in amounts.
Least privilege, delegated tokens, spend caps, and human approval gates for irreversible actions.
Bolted-on
The agent borrows the owner’s full-power login.
Native
Per-agent identity, narrow scopes, spend caps, approval on irreversible actions.
Verifiable
Every action leaves evidence.
Every action returns a receipt and lands in an audit log. Agents can check their own work, and humans can check the agents.
Bolted-on
No record of who or what clicked the button.
Native
A receipt per action and an audit log that records human vs agent.
Context-thrifty
Tokens are the new bandwidth.
Support pagination, field selection, and concise formats. Prefer Markdown to markup soup.
Bolted-on
A 4,000-row response and 90% markup.
Native
Pagination, field selection, Markdown, and summaries on request.
Composable
Small primitives beat grand platforms.
Small primitives with text in and text out (CLIs, files, narrow tools) that agents can chain in ways you did not plan for.
Bolted-on
One monolithic “do everything” endpoint.
Native
Narrow tools and CLIs with text in, text out, ready to chain.
03
Same task, three readers
Refund order #1042. An illustrative example, not a benchmark.
- 1Log in
- 2Search orderstype “1042”
- 3Open order #1042
- 4Click Refund
- 5Choose a reasondropdown
- 6Confirm amount
- 7Confirm againmodal
- 1Screenshot the login page
- 2Guess the password field selector
- 3Dismiss cookie banner
- 4CAPTCHA: verify you are humanblocked
- 5Retry from the top
- 6Parse the HTML orders tablecolumn order changed
- 7Click Refundmodal not found
- 8Retry clickunknown: did it fire twice?
- 1Read tool schemarefund_order(order_id, amount, reason, dry_run, idempotency_key)
- 2refund_order(dry_run: true)preview: refund 80.00 to card ••4242
- 3refund_order(idempotency_key: "a1f9…")receipt: {refund_id: "rf_77", status: "succeeded"}
- 4get_refund("rf_77")verified: succeeded, actor: agent
04
What does an agent-native product look like?
Five layers, from being found to being trusted. The tools named here (llms.txt, AGENTS.md, MCP) are the current building blocks.
1Discover
llms.txt · AGENTS.md · Markdown pages · clean sitemap
2Describe
OpenAPI · JSON Schema · MCP tool definitions written for models
3Act
API · CLI · MCP server · packaged skills, with UI parity
4Authorize
Narrow scopes · per-agent identity · spend limits · approval gates
5Verify
Receipts · audit log · actor attribution · evals in CI
# Acme Payments
> Payments API. Refunds, charges, disputes.
> Start with /docs/quickstart.md
## Docs
- [Quickstart](/docs/quickstart.md): first charge in 5 calls
- [Errors](/docs/errors.md): every code and its fix
## Optional
- [Changelog](/changelog.md){
"error": {
"code": "refund_exceeds_balance",
"message": "Refund 120.00 exceeds refundable 80.00.",
"fix": "Retry with amount <= 80.00.",
"retryable": false
}
}05
How agent-native is your product?
Twelve yes-or-no questions. One point each. Nothing leaves your browser.
06
Agent-washing: what to avoid
- The corner chatbot that no other agent can call.
- CAPTCHA walls in front of a legitimate workflow with no API behind them.
- Docs as PDFs or video, or pages that only exist after JavaScript runs.
- Errors as HTML pages.
- OAuth that needs a human click on every call.
- Infinite scroll as the only way to get a list.
- The human’s full-power login handed to the agent “to keep it simple”.
07
How we got here
2023
Function calling and plugins let models call developer-defined tools.
2024
llms.txt is proposed as a model-readable site index; Anthropic introduces the Model Context Protocol.
2025
AGENTS.md and agent skills spread as ways to hand agents project and procedural context; coding agents make “agent as user” routine.
Now
Products get judged on how well agents can use them, not just people.
08
Go deeper
The future of interfaces
MCP, MCP Apps, WebMCP, and conversational UI that adds to forms instead of replacing them.
ReadReal examples
ConferenceOS, Agent Kontrol, and Cortex: what agent-native looks like in projects we build and run.
ReadFor agents
WebMCP tools, a remote MCP server, llms-full.txt, and Markdown negotiation: every way an agent can use this site.
ReadQuestions
Is agent-native just having an API?+
An API is necessary, not sufficient. Agent-native adds self-description, safe retries, teaching errors, scoped delegated authority, and verification.
Do humans get worse software when it is agent-native?+
No. Clear errors, undo, audit trails, and least privilege make products better for people too.
What is the difference between agent-native and AI-native?+
AI-native usually describes products that use AI inside the experience. Agent-native describes products that AI agents can operate: discoverable, callable, limited, and verifiable. A product can be either, neither, or both.
Where do I start making a product agent-native?+
Take the scorecard, pick the lowest-scoring principle, and fix it for your single most-used workflow.