Connect your assistant.
One URL, no key.
ACE runs a public documentation server over the Model Context Protocol. Point Claude, Cursor, or any MCP client at it and it answers from the real gateway contract instead of guessing header names and error types.
The server
https://acefleet.dev/mcp
No authentication. No API key, no OAuth, no account. It serves documentation and nothing else — it cannot place inference calls, read tenant data, or mint credentials, so there is no credential to leak and nothing to provision before a developer tries it. Tenant-scoped operations live on a second, authenticated server so that this one can stay anonymous.
Claude Code
claude mcp add --transport http ace https://acefleet.dev/mcp
claude mcp add --transport http ace https://acefleet.dev/mcp -s user
claude mcp add --transport http ace https://acefleet.dev/mcp -s project
The -s project form writes .mcp.json into the repository. Check it in and every engineer who clones gets the docs server without setting anything up.
Claude web & desktop
- Open Settings, then Connectors.
- Choose Add custom connector.
- Paste
https://acefleet.dev/mcpand save.
Custom connectors are available on Claude Pro, Max, Team and Enterprise plans.
Cursor, VS Code & other MCP clients
Any client that speaks MCP over streamable HTTP takes the same URL. Most read a JSON config in this shape:
{
"mcpServers": {
"ace": {
"type": "http",
"url": "https://acefleet.dev/mcp"
}
}
}What the server exposes
| Tool | Arguments | What it does |
|---|---|---|
| search_docs | query, limit? | Ranked search across the API reference and every skill doc. Start here. |
| get_doc | id? | Read one document in full. Call with no id to list everything available. |
| get_provider_integration | provider? | The zero-trust header set, endpoint and runnable cURL for one upstream provider — or all of them. Header sets differ per provider and cannot be inferred. |
| list_blog_posts | limit? | Engineering write-ups and benchmark scorecards — background, not API contracts. |
| get_blog_post | slug | Read one blog post in full. |
Reference sections covered: Authentication & Credentials, Request Header Specification, Response Header Specification, Endpoint Reference, Integration Quickstarts, Provider Integrations (Zero-Trust Headers), Provider Surfaces & the Responses API, Echo Mode (Testing Without Spending), Error Contracts & Status Codes, plus a page for every gateway skill.
Administering your own org
https://acefleet.dev/mcp/admin
A separate server, behind OAuth against your acefleet.dev sign-in. OAuth against your acefleet.dev sign-in. Every tool resolves your organization from the verified session — no tool takes a tenant argument, so one account cannot reach another's configuration. Kept separate from the docs server so connecting to one never puts an auth challenge in front of the other.
| Tool | Arguments | What it does |
|---|---|---|
| preflight | — | Whether a call would work yet, and what is missing if not. Costs nothing and calls no provider — run it before the first request, not after it fails. |
| get_tenant_config | — | Your tenant id, active dev-key count, and which providers have a stored key. Start here. |
| list_dev_keys | — | Your active ACE dev keys: id, name, prefix, budget cap. Revoked keys are not listed. |
| list_available_models | — | Explicit model deployments, plus each key's access mode and allowlist. Configuration, not entitlement — the gateway decides what a call does. |
| list_provider_keys | — | Provider credentials in your vault, by provider and last-4. Never the key itself. |
| mint_dev_key | name? | Mint a dev key. Returns the plaintext once — ACE stores only its hash — so the value lands in the client's context and logs. |
| revoke_dev_key | dev_key_id | Revoke one of your dev keys. Cannot be undone. |
| store_provider_key | provider, api_key, endpoint?, models? | Store an upstream credential so calls for that provider stop needing a pass-through header. Overwrites any existing key for the provider. |
| delete_provider_key | provider | Remove a stored provider credential. Live traffic then needs a zero-trust header. |
| report_bug | summary, steps_to_reproduce, error_message?, request_id?, … | File a bug straight into the team's queue. Your org, providers and per-key model access are attached automatically — no form, no copy-paste. |
| set_echo_mode | dev_key_id, enabled | Switch a key to synthetic responses: exercise an integration end to end with no provider credential and no spend. Stays on until switched back. |
One warning worth reading before you connect. mint_dev_key returns the key in plaintext, because ACE stores only its hash and that response is the one moment the value exists. It will be written into your assistant's context and whatever logs your MCP client keeps. Reuse an existing key where you can, and revoke anything you would rather not have there.
Tell your assistant to use it
Connecting the server makes the documentation reachable; it does not guarantee the model reaches for it. Drop this into your repository's CLAUDE.md, AGENTS.md or Cursor rules so it does.
## ACE Gateway LLM calls route through the ACE gateway at https://engine.acefleet.dev. Auth uses two separate credentials — the ACE dev key (`Authorization: Bearer ace_dev_...`) identifies us to ACE; the provider key (`x-ace-openai-key`, `x-ace-anthropic-key`, ...) pays the upstream. Don't conflate them. Before writing or changing gateway integration code, look up the contract — do not infer header names or error types. Use the `search_docs` MCP tool if it is configured, otherwise fetch https://acefleet.dev/llms.txt and follow the API Reference links.
The instruction not to infer is the part that earns its place. Names like x-ace-route-to and error types like onboarding_incomplete cannot be derived from any general knowledge of LLM proxies — a model without a source will invent something plausible and your error handling will be written against it.
Clients that don't speak MCP
Two fallbacks, both public. The llms.txt index is the one to point a docs-aware tool at:
https://acefleet.dev/llms.txt
curl -X POST https://acefleet.dev/.mcp/invoke-tool/search_docs \
-H "Content-Type: application/json" \
-d '{"query": "error contracts", "limit": 3}'There is also a /llms-full.txt containing the entire corpus inline. It is built for a crawler or an indexing pipeline: at roughly 850KB it will not fit in a context window, so fetch the index and follow links rather than pasting the whole thing.