Elliot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ELLIOT_DIR | No | Where receipts and audit state are stored. | .elliot/ in the working directory |
| ELLIOT_ROLE | No | Set to `reviewer` for a separate reviewer-only MCP server process (or `auditor` for the auditor process). | |
| GITHUB_TOKEN | No | Used by `verify_github` for private repos and higher rate limits. | |
| ELLIOT_SIGNER_ID | No | Human-readable signer label included in signed receipts. The label is not an identity proof by itself. | public-key fingerprint |
| ELLIOT_GITHUB_API | No | GitHub API base URL, for GitHub Enterprise or tests. | https://api.github.com |
| ELLIOT_SIGNING_KEY | No | Path to an Ed25519 PKCS#8 private key. When set, every saved receipt is signed. Keep it outside the repository. | |
| ELLIOT_NPM_REGISTRY | No | Registry used by `verify_npm`. | https://registry.npmjs.org |
| ELLIOT_REVIEW_TOKEN | No | Enables isolated review mode; configure the same non-empty secret on auditor and reviewer server processes. | |
| ELLIOT_ALLOW_PRIVATE_URLS | No | When set to 1, allows `verify_url` to reach loopback, private-network and link-local addresses. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| verify_urlA | Check that a URL (a deploy, a preview, a page) actually responds with the expected status and, optionally, contains expected text. Use before claiming something is deployed or live. |
| verify_outcomeA | Run a command and arguments in a disposable repository copy under the host OS sandbox. Writes stay in the copy, network is blocked, and VERIFIED requires exit code zero. For a shell pipeline use command bash with args ["-c", "..."]; Elliot adds set -o pipefail so a failing step is not hidden by the last one. Put every file the check needs in the repository: files elsewhere (such as /tmp scripts) do not exist inside the sandbox. If the OS sandbox cannot start, returns INCONCLUSIVE without running the command. |
| verify_attestationA | Verify an Ed25519-signed Elliot receipt and its digest. Returns valid=true only when the signature passes and an explicitly supplied public key matches; without one it reports cryptographic validity but marks signer identity untrusted. |
| verify_githubA | Check what GitHub actually says: whether a PR is merged, whether CI checks passed on a PR or commit, or whether a commit/branch was really pushed. Set GITHUB_TOKEN for private repos. |
| verify_npmA | Check the npm registry for a package and version. Use before claiming a package or release was published. |
| elliot_snapshotA | Fingerprint every tracked and untracked file in the git repository before starting a task, so verify_changes can later prove what really changed. |
| verify_changesA | Check whether files really changed, compared with a snapshot taken before the task (or with HEAD if no snapshot is given). Use before claiming code was fixed, cleaned, refactored or written. |
| elliot_reportA | Summarise recent receipts: how many claims were checked and how many held up. Show this to the user when they ask what the agent really did. |
| elliot_audit_startA | Start auditing whether this repository does what its README, docs and security/pricing pages say. Pins the commit, lists the files that make claims, and returns the protocol to follow. |
| elliot_record_claimA | Submit one claim with its verdict and evidence. Elliot checks that the claim's source quote is really in the docs at those lines, that every evidence quote is really in the code at those lines, and runs every 'absent' search itself. If anything does not check out the claim is rejected: fix the citation and submit again. |
| elliot_record_behaviorA | Record something risky the code does that the docs never mention (for example, it sends usage events, stores a key in plain text, or skips permission prompts) and no doc sentence promises otherwise. If a doc sentence does promise otherwise, use elliot_record_claim on that sentence instead. Never attach this to an unrelated sentence. |
| elliot_review_packetA | Returns only findings and checked evidence for review. Give it to a fresh reviewer process. With ELLIOT_REVIEW_TOKEN configured, the auditor endpoint cannot record review decisions; connect the reviewer only to a separate ELLIOT_ROLE=reviewer server. |
| elliot_record_reviewA | For the reviewer process: confirm, downgrade or reject one finding. In isolated mode provide the audit-scoped reviewer_token from the evidence packet. Confirm needs evidence you checked yourself (a code quote or an absent search); reject needs a code quote showing the claim holds. All evidence is checked against the files. |
| elliot_audit_finishA | Close the audit and write report.html, report.md and claims.json into elliot-report/-/ at the repository root. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each verify_* tool targets a distinct verification source (URL, sandbox command, GitHub, npm, git diff, signed receipt), and the audit lifecycle tools (start / record_claim / record_behavior / record_review / finish) have clear distinct roles that the descriptions explicitly contrast. The only real confusion risks are elliot_record_claim vs elliot_record_behavior (both record evidence into an audit) and elliot_report vs elliot_audit_finish (both emit results), and the descriptions do enough to separate them. The auditor-vs-reviewer split adds cognitive load but is spelled out.
There are two clearly separate naming families (verify_<target> and the elliot_ namespace), and the elliot_ family mixes structures: elliot_audit_start / elliot_record_claim (noun_verb) alongside elliot_snapshot and elliot_review_packet (no clear verb). Each family is internally readable, but the merged set does not follow a single predictable pattern, so an agent cannot infer a call from a name alone.
14 tools is comfortably within a healthy range for a server that bundles two related capabilities (receipt-backed verification and a docs-vs-code audit protocol). Each tool maps to a real step in one of those workflows, with no obviously redundant tool, though elliot_report and elliot_audit_finish sit close enough that the count could be trimmed by one.
The surface covers the full verification lifecycle (snapshot → verify → attest → report) and the full audit lifecycle (start → record claims/behaviors → review → finish), which is strong end-to-end coverage. Gaps are modest: verification targets only cover npm and GitHub (no PyPI/Docker/registry equivalents, forcing agents into verify_outcome), and there is no tool to retrieve individual receipt contents, only an aggregate summary.