Every surface on this page is public and needs no API key. Responses allow any origin. Only the MCP server’s
submit_report tool writes anything, and only after the developer agrees.
| Resource | URL |
|---|---|
| Documentation index for LLMs | /llms.txt |
| Every page in one file | /llms-full.txt |
| Docs API (OpenAPI 3.1) | /openapi.json |
| API catalog (RFC 9727) | /.well-known/api-catalog |
| MCP server (Streamable HTTP) | https://elide.help/mcp |
| MCP server card | /mcp/server-card |
| AI catalog | /.well-known/ai-catalog.json |
| Sitemap | /sitemap-index.xml |
Markdown pages
Append .md to any page URL, or request the page with Accept: text/markdown:
curl https://elide.help/docs/installation.md
curl -H 'Accept: text/markdown' https://elide.help/docs/installation
HTML pages link to their Markdown version with <link rel="alternate" type="text/markdown"> and a Link response
header. A missing page requested as Markdown returns a Markdown 404 that links to /llms.txt.
Docs API
Base URL https://elide.help. Every operation is a GET.
| Operation | Request | Returns |
|---|---|---|
getApiIndex | /api/v1 | Version, status, every operation, the rate limit and the versioning policy |
listPages | / | Every page (or one section) with slug, URLs, title and description |
getPage | /api/v1/pages/{slug} | One page with its headings and Markdown |
searchDocs | / | Ranked pages with a snippet and the best-matching heading |
getReportStatus | /api/v1/reports/{id} | The status of a report sent with submit_report, and its issue URL once filed |
curl 'https://elide.help/api/v1/search?q=kotlin%20compiler&limit=3'
curl https://elide.help/api/v1/pages/installation
curl 'https://elide.help/api/v1/pages?section=api'
Versioned search
The default search remains local structural search over current English documentation. Hosted search is opt-in on deployments with a published search manifest and a configured provider. It never silently substitutes local results for hosted results.
mode | Matches |
|---|---|
local | Current English pages and sections using the shared local ranking |
bm25 | Full text, with titles and headings weighted above body text |
vector | Semantic similarity using the snapshot’s embedding model |
hybrid | BM25 and vector candidates combined by reciprocal rank fusion |
phrase | Consecutive indexed tokens, ranked with BM25 |
regex | Rust regular expressions within indexed text chunks |
glob | Case-sensitive glob patterns within indexed text chunks |
Use version=latest or an exact published documentation version and locale=en. The manifest identifies the
immutable namespace and revision behind each version; unavailable versions and locales return 404. The API path
version (/api/v1) is separate from the documentation version. Only published snapshots are available.
section=api or kind=page|section|sample|release|gap narrows results. limit is 1–50 and q is at most 200
characters. Regex does not support look-around or backreferences; regex, glob and phrase matches cannot span chunk
boundaries. Regex and glob return matches in stable ID order. Other modes rank by relevance. Scores are normalized
within each response and should not be compared across queries or modes. Optional rerank=true uses model reranking
for BM25, vector or hybrid candidates, adding provider work and latency.
curl 'https://elide.help/api/v1/search?mode=hybrid&q=call%20Python%20from%20JavaScript&version=latest'
curl -H 'Accept: text/markdown' 'https://elide.help/api/v1/search?mode=bm25&q=compiler§ion=toolchain'
curl 'https://elide.help/api/v1/search?mode=regex&q=elide%20%28run%7Cbuild%29&format=text'
format=json|markdown|text overrides the Accept header. All formats represent the same result set; JSON includes
the resolved docsVersion, locale, mode, backend and hosted revision. Explicit search responses support
HEAD, ETag, If-None-Match and Vary: Accept. Successful hosted responses are cached for five minutes per
immutable snapshot, complete query options and format. X-Search-Cache reports HIT, MISS or BYPASS; provider
errors are never cached. X-Search-Backend-Cache reports the regional cache status, or BYPASS on an edge cache hit.
A regional private Worker can share provider results across formats and edge locations
without exposing the database credential. Requests remain subject to the public API rate limit.
Streaming search
The experimental service accepts WebSocket connections at
wss://elide-docs-search.elidecloud.workers.dev/search/ws with subprotocol elide-search.v1.
It needs no cookies or authentication. Each JSON text message is a search with a fresh UUID id and string-valued
params, or a cancellation for that ID:
{"type":"search","id":"953f081d-b824-4a2a-8b82-e4dc533ee738","params":{"q":"call Java libraries","mode":"vector","version":"latest","locale":"en","limit":"8","telemetry":"off"}}
{"type":"cancel","id":"953f081d-b824-4a2a-8b82-e4dc533ee738"}
The server sends ready with the protocol, then accepted with the search ID. Results carry
{type:"results",id,phase,complete,status,headers,body}. The body follows the JSON search response, and headers
include its request ID, count, version, locale and revision. The ID is also the search request ID; an optional
request_id parameter must match it. Messages with invalid envelopes receive type:"error" with code and message.
Search validation failures retain the HTTP status and problem body in a terminal results message.
phase:"preview" is an early shortlist of at most three matches from the same snapshot’s compact structural index
at the edge, with mode:"local" and backend:"local". It is available for relevance modes when a matching English
preview is bundled. Streaming vector cache misses also start one parallel BM25 search for at most three results.
If it completes first, another preview arrives with mode:"bm25" and backend:"turbopuffer"; its results can be
merged with the structural shortlist. Each retrieval leg uses the existing shared cache. Preview frames have
complete:false. Optional phase:"retrieval" is reserved for cumulative provider results when a provider transport
can deliver them incrementally; the current transport returns completed result sets. phase:"complete" with
complete:true is the canonical result, or terminal HTTP error. A cache hit can go directly to completion.
The structural shortlist does not wait for provider work. Completion or cancellation suppresses late lexical frames;
cancellation also suppresses pending telemetry. Already issued events cannot be recalled.
The channel supports JSON only; use HTTP for Markdown or plain text. Search parameters, five-minute result caching,
and per-IP rate limits match HTTP. Each handshake and search consumes admission. Only completed results enter the
shared cache. telemetry=off in search parameters or the connection URL disables analytics; DNT and GPC from the
handshake also apply to every search. Headers and cookies cannot be supplied through message parameters.
Sessions allow two concurrent searches, 120 unique searches, 256 messages, and 4 KiB per text message. Cancelled work
retains its concurrency slot until it settles. Sessions close after 60 seconds idle or five minutes total; reconnect
when needed. Stop using partial results after their search is cancelled, superseded, or fails snapshot or response
integrity validation. Validated previews may remain usable when the provider fails transiently.
Errors
Errors use application/problem+json (RFC 9457). Each has a stable code and a resolution that says what to
change.
| Status | code | When |
|---|---|---|
| 400 | invalid_parameter | q is missing or too long, limit is out of range, or section is unknown |
| 404 | page_not_found | No page has the requested slug |
| 404 | report_not_found | No report has the requested id |
| 404 | api_route_not_found | No operation exists at the path |
| 404 | search_ | No search snapshot exists for the requested documentation version and locale |
| 405 | method_not_allowed | The method is not GET or HEAD; see the Allow header |
| 406 | not_acceptable | Search cannot provide a representation allowed by Accept |
| 429 | rate_limited | More than 120 requests in 60 seconds; wait for Retry-After |
| 502 | search_upstream_failure | The search provider returned an invalid response |
| 503 | Hosted search is unconfigured, has no published snapshot, is unavailable or timed out |
{
"type": "https://elide.help/developers#error-page-not-found",
"title": "Page not found",
"status": 404,
"detail": "No documentation page has the slug \"instalation\".",
"instance": "https://elide.help/api/v1/pages/instalation",
"code": "page_not_found",
"resolution": "List slugs with GET /api/v1/pages, or find a page with GET /api/v1/search?q=<terms>.",
"documentation_url": "https://elide.help/developers#errors"
}
Rate limits
The API and the MCP server allow 120 requests per 60 seconds per client IP. Every response carries
RateLimit-Policy: "docs";q=120;w=60. Over the limit, the response is a 429 with Retry-After and
RateLimit: "docs";r=0;t=60. For bulk reads, fetch /llms-full.txt once.
Versioning
The version is in the path: /api/v1. Changes within v1 only add fields and operations. A breaking change ships as
/api/v2; v1 then sends Deprecation and Sunset headers (RFC 9745, RFC 8594) for at least 180 days before it is
removed.
MCP server
https://elide.help/mcp serves the docs over the Model Context Protocol with the Streamable HTTP transport and needs no
authentication. It is stateless, except that a 2025-06-18 or 2025-11-25 client that declares elicitation gets an
Mcp-Session-Id so submit_report can ask the developer for consent. Supported protocol versions: 2026-07-28,
2025-11-25, 2025-06-18 and 2025-03-26.
| Tool | Does |
|---|---|
search_docs | Search pages, sections, code samples, release notes and documented gaps; returns slugs, headings, anchors and 0–1 scores. |
get_page | Return one page as Markdown, by slug, path or URL. |
list_pages | List pages with slugs and descriptions, optionally for one section. |
find_samples | Find runnable code samples by query, language, tag or level, with their command and output. |
compare_runtimes | Compare Elide with Node, Bun, Deno, CPython, Java or Kotlin; every claim cites its source and measurement. |
get_benchmarks | Every published benchmark number with its command, machine, date and recording. |
check_known_issue | Find open Elide issues and earlier reports that match a problem. |
preview_report | Validate and redact an elide.report/1 report, find duplicates, list missing evidence, and show the issue it would become. Stores nothing. |
submit_report | Send a report after the developer agrees; it becomes a public issue in elide-dev/elide. |
report_status | The status of a sent report: queued, filed, duplicate, declined or needs_human. |
Every page is also a resource with a text/markdown body, and the benchmark, comparison and compatibility data are
JSON resources under https://elide.help/_agent/. The compare and migrate prompts wrap the comparison and
migration workflows. Client config:
{
"mcpServers": {
"elide-docs": { "type": "http", "url": "https://elide.help/mcp" }
}
}
Claude Code:
claude mcp add --transport http elide-docs https://elide.help/mcp
Reporting problems
Agents report Elide bugs, slow runs, unexpected behavior and missing features with the developer’s consent:
elide agent bug --kind <bug|perf|expectation|feature> --jsonprints anelide.report/1skeleton with the Elide version and platform filled in. For a slow run,elide agent perf --json [--baseline "<cmd>"] -- <cmd>prints the measuredperfblock.check_known_issuefinds an existing issue;submit_reportwithduplicate_ofadds a +1 to it.preview_reportredacts home paths, tokens, keys, emails and IP addresses, shows the issue body, and returns aconfirm_tokenfor an accepted report.submit_reportwith thatconfirm_token, once the developer agrees, stores the report; headless runs such asclaude -pandcodex execmust use it, because they answer consent prompts themselves. Without a token,submit_reportasks the developer through elicitation when the client supports it, or returns aconfirm_tokento pass on a second call.
Reports become public issues in elide-dev/elide, usually within the hour; report_status and
GET /api/v1/reports/{id} track them. Each client IP can send 10 report calls a minute and 20 reports an hour.
Docs MCP server lists every tool, including the reporting tools, with prompts, resources and rate limits; Report a problem covers report kinds and consent.
This server answers questions about Elide and takes reports. To give an agent Elide’s build and run tools inside a
project, run elide mcp; see Project MCP server.
Elide in agents and scripts
Install the CLI:
curl -sSL --tlsv1.2 elide.sh | bash -s - # Linux and macOS
brew install elide-dev/elide/elide # Homebrew
Installation covers Windows, packages and containers.
- Elide for AI Agents: non-interactive flags, commands that need a terminal, and exit codes.
elide help <topic> --format=markdownprints any page of these docs from an installedelide.- CLI Reference lists every command.
Report problems with the MCP server’s submit_report tool or on
GitHub issues. For immediate help, join the
Elide Discord.