Almost every claim an agent builder makes about itself is a claim you have to take on trust — that the tests ran, that the artifact is the one that was tested, that the thing deployed is the thing built. One of those is different. Agentelic's code templates are pinned by the SHA-256 of their own contents, so the deployed server's answer can be re-derived by anyone who can read this repository. This page does that at build time and refuses to publish if the numbers move. Everything else here is trust, and it is labelled.
Every row below is one request that was actually issued on 2026-08-16, with the status it returned. They are frozen observations with a date on them — this page makes no network call and does not pretend to be a live dashboard. Two rows are failures, and they are the two that decide what the rest of this site is allowed to claim.
| Request, as issued | Returned | What it establishes |
|---|---|---|
| POST https://app.agentelic.com/mcp {"method":"tools/list"} | 200 | A deployed process answers JSON-RPC and enumerates 10 tools. |
| POST https://app.agentelic.com/mcp tools/call template_list | 200 | It returns 2 templates, each with a SHA-256 — both recomputed below. |
| POST https://app.agentelic.com/mcp tools/call agent_status (unknown id) | -32602 | The tool dispatched and refused by name. It does NOT establish that the database was reached. |
| GET https://app.agentelic.com/api/agents | 500 | The register of built agents cannot be read. This is the fault that caps the whole surface. |
| GET https://app.agentelic.com/api/agents?workspace_id=probe | 400 | Still no read path. A different failure, not a working one. |
| GET https://app.agentelic.com/ | 404 | By design — lib/agentelic_web/router.ex declares POST routes only. A 404 here is the app answering, not the app being down. |
The 404 is the interesting one. lib/agentelic_web/router.ex declares POST routes only, so a browser hitting the root of the deployed app gets a 404 from a perfectly healthy service. That is exactly the shape of evidence that gets misread as a dead deployment, in both directions — which is why the check that settles it is a POST, printed in full further down.
A template is a directory of files. Agentelic identifies each one by the SHA-256 of every regular file inside it, sorted and concatenated — compute_template_hash/1 in lib/agentelic/templates/registry.ex. The deployed MCP server returns that hash when you ask it for the template list. The same algorithm runs in this page's build, over the files in this repository, and the build exits non-zero if a single byte has moved. So the row below is not copied from anywhere: it is computed, and the frozen record is what it is checked against.
| Template | Files | SHA-256, recomputed here | Deployed |
|---|---|---|---|
| elixir/mcp-server | lib/agent.ex.eex mix.exs.eex template.json | 251e82ed7ade466985396271ecad5c34d6411a8e940747bee49c8cc599098ae7 | match |
| typescript/mcp-server | package.json.eex src/agent.ts.eex template.json | 018d6a172272e5748bc0bb56b238b04145923f267cd49cb36c1090f713568c2b | match |
This is the whole of what content addressing buys, stated plainly: it does not make the template good, and it does not mean anyone has used it. It means the deployed service and this repository cannot silently disagree about what the template is. Do it yourself:
# what the deployed server says
curl -s -X POST -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"template_list","arguments":{}}}' \
https://app.agentelic.com/mcp
# what this repository says — the same algorithm, offline
node build-site.mjs // refuses to emit the page on a mismatch
A single status for a whole product is a lie by averaging. Each capability below carries its own rung, and the invitation this page is allowed to make about it follows from that rung mechanically — the build refuses to emit a call to action the rung has not earned. Where something is unbuilt, the row says what would have to happen, rather than a date.
Ten tools, JSON-RPC over POST /mcp, answering on the deployed host today. tools/list and template_list return real payloads.
Templates are pinned by the SHA-256 of their own contents. This is the one claim on the domain a stranger can falsify without our cooperation: clone the repo, hash the directory, compare.
lib/agentelic/pipeline/ with an orchestrator that stages the four steps, covered by the test suite.
lib/agentelic/testing/ compiles acceptance criteria into cases and runs them.
staging → canary → production with gates is in docs/spec/README.md. There is no deployment record anyone can read.
Priced on this page and built nowhere. There is no checkout, no account model and no billing code in the source.
Two claims used to stand on this page and both are gone rather than softened. The Distribution card sold FleetPrompt as a marketplace where agents are “Community-reviewed, trust-scored, ready for install” — fleetprompt.com now records that model as superseded, its replacement as not built, and its second publisher as none, so all three parts of that sentence were false at once. And the pricing section was headed “Start building today” above an email address, which invited a purchase that has no checkout behind it and a correspondence that has no mailbox. The heading is gone, the address is gone, and the prices are still here with the word proposed on them.
These prices were on this page in the shape of a price list, under a heading that invited you to begin and an email address to begin through. There is no checkout behind them, no account, no seat, and no billing code anywhere in the source — 0 ways to pay for this. They are kept visible and labelled rather than deleted, because a proposal you can argue with is worth more than a silent gap. Whether Agentelic sells anything at all is [TRAVIS], and this page does not decide it.
A page may only ask you to do what its evidence has earned. The MCP surface is deployed and answering, so it asks you to call it. The pipeline is in the tree and tested, so it asks you to read it and run the tests. The rest is a specification, so it can only ask you to read, challenge or implement it — and never to run something that does not exist.
Every number here is a measurement with a date on it, and measurements go stale. The form below is a real form with a real action: it posts to formspree.io when you press the button, and it works with JavaScript off. The script that upgrades it to an inline reply prints “sent” only when the endpoint actually answers 2xx — a form that says thank-you on submit and drops the message is the exact failure this page argues against. If you would rather leave a public trail, open an issue instead.