Agents
How agents see this site
What a crawler or a model gets when it fetches these pages, and the exact curl that proves each claim.
Every claim on this page has a request under it. Run the request; if the output disagrees with the claim, the claim is wrong and this page is the bug.
One HTML for everyone
Every route is rendered to complete static HTML at build time. There is no user-agent branching anywhere in this site or its build — a browser, a crawler and a model fetching a URL receive the same bytes, and a JavaScript-disabled fetch is a whole page rather than a mount point.
A site that serves rendered HTML only to crawlers has two versions of itself, and eventually they disagree; the version nobody looks at is the one that rots. There is a test that greps the source for user-agent reads and requires zero.
curl -sS https://agentisend.com/docs | grep -c "Every endpoint"A Markdown twin of every page
Append .md to any page URL. The twin is generated from the same source the HTML renders — a guide from its own Markdown, a reference page from the OpenAPI operation, the catalogues from the catalogues.
curl -sS https://agentisend.com/docs/errors.md | head -5Content negotiation (Accept: text/markdown on the HTML URL, Content-Type: text/markdown, Vary: Accept) is origin configuration in the repo (deploy/edge/agentisend.conf) and is not live until the owner applies it. Until then, fetch the .md path. If a .md URL downloads as a binary, that is the same pending step.
Two indexes, both generated
/llms.txt is short enough to hold in a prompt: what this is, how to authenticate, the MCP endpoint, the figures, the plans, and every operation, error code and event as a URL. /llms-full.txt is every page concatenated under its own URL header.
Every figure in them is imported from the module that owns it — prices from the pricing module, ceilings and retention from the API's own constants, the SLA from the published SLA document. A test extracts every numeral from the output and fails if one of them has no source behind it.
curl -sS https://agentisend.com/llms.txt | head -30
curl -sS https://agentisend.com/llms-full.txt | grep -c '^# https://agentisend.com'Crawling is allowed, explicitly, per crawler
robots.txt names a group for each major AI and search crawler and allows all of them. The private block is repeated inside every group, because a crawler obeys only its own most-specific group (RFC 9309 §2.2.1) — a Disallow under User-agent: * alone applies to none of them.
Content-Signal: ai-train=yes, search=yes, ai-input=yes sits above the groups: training, search indexing and use as input to an answer are three separate permissions, and this is yes to all three.
curl -sS https://agentisend.com/robots.txt
curl -sS https://agentisend.com/sitemap.xml | grep -c '<loc>'The sitemap's lastmod is the git commit time of the file each page is generated from, not the build date. A lastmod that says "today" on every URL at every build is a field a crawler learns to ignore.
One machine-readable document per question
| Question | Fetch |
|---|---|
| What can I call? | /openapi.json |
| Where do I start, as an agent? | /agents |
| Where is everything? | /.well-known/agent.json |
| What does it cost? | /pricing.json |
| What are the ceilings? | /limits.json |
| How long are logs kept? | /retention.json |
| What is committed? | /sla.json |
| Is it up, and was it? | /status.json |
| How do I connect over MCP? | /.well-known/mcp.json |
| Where do I report a vulnerability? | /.well-known/security.txt |
curl -sS https://agentisend.com/.well-known/agent.jsonEvery URL in that manifest is checked by a test against the files the build writes, so a dead link in it fails the build rather than costing you a retry loop.
Structured data: one type per page
Each page carries exactly one JSON-LD block: SoftwareApplication with an Offer per tier on the home page, FAQPage on /faq, HowTo on the quickstart, BreadcrumbList on /docs, TechArticle on reference pages. The Offer prices are asserted equal to the pricing module, so a rich result cannot quote a price this site does not charge.
curl -sS https://agentisend.com/faq | grep -o 'application/ld+json'Private surfaces say so
The console and the API answer X-Robots-Tag: noindex, nofollow on every response. robots.txt is a crawl instruction, not an index instruction — a URL reached from a link elsewhere can be indexed without ever being fetched — so the header is the only thing that actually keeps a signed-in surface out of an index.
curl -sSI https://console.agentisend.com/ | grep -i x-robots-tagAvailability, measured
/status.json is static and carries no live state — a cached "operational" is the worst thing a status surface can serve. It names the two live endpoints instead: GET /status for the current per-component state, and GET /status/history for daily uptime over the last 90 days, counted from samples taken once a minute. A component that cannot be checked reports unknown, and unknown samples are excluded from the denominator, so a day nobody measured reports no samples rather than 100%.
curl -sS https://agentisend.com/status.jsonNot built yet
Nothing on this page describes a surface that does not exist. When something is planned but unbuilt it is listed here, in the same words as everything else — a page that describes what is coming in the same voice as what exists is a page nobody can act on.
The rule this page exists to keep
Every path this site advertises resolves. A link to a document that does not exist costs a reader one dead end and costs an agent a retry loop, and the second one is worse.