Odile Gate
REMOTE · GATE.ODILELABS.COM
Free, no signup: per-app keys, allowed calls, approvals and an audit log for your API or model key.
Available components
Last scanned (1 hour ago)
Scores higher than 53% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Security
Recent critical change
Authorization (31 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security60
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (gate_update_app). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability66
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5066 tokens (~174/item across 29 items; 29 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management44
- Stability check failed: schema churn in the 15 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 13 additions. See how to fix → Fail
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 93% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 41.
- 2 Nov 26 +2
- DNSSEC: fail → pass ▲ security
- 1 Nov 26 0
- Stability: 0.33 → fail ▼ security
- A breaking change shipped without a version bump: still 1.8.0 ▼ security
- Tool “gate_add_app” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- New tool “gate_update_app”, which the server declares destructive security
- Tool “gate_audit” rewrote its description, which is the text the model reads security
- Tool “gate_audit_proof” rewrote its description, which is the text the model reads security
- Tool “gate_audit_verify” rewrote its description, which is the text the model reads security
- Tool “gate_create_app” rewrote its description, which is the text the model reads security
- Tool “gate_metrics” rewrote its description, which is the text the model reads security
- Tool “gate_revoke_app” rewrote its description, which is the text the model reads security
- Tool “gate_run_timeline” rewrote its description, which is the text the model reads security
- Tool “gate_run_tree” rewrote its description, which is the text the model reads security
- Schema quality: good → excellent functional
- Tool “gate_create_app” changed its title: Create an app (older name of gate_add_app) → Register an app cosmetic
- 31 Oct 26 −6
- Authorization: partial → fail ▼ critical
- The server rewrote its instructions, which are the text every model session reads security
- New tool “gate_revoke_app”, which the server declares destructive security
- New tool “gate_revoke_member”, which the server declares destructive security
- New tool “gate_revoke_run”, which the server declares destructive security
- New tool “gate_rotate_app_key”, which the server declares destructive security
- Tool “gate_audit” rewrote its description, which is the text the model reads security
- Tool “gate_audit_proof” rewrote its description, which is the text the model reads security
- Tool “gate_check_setup” rewrote its description, which is the text the model reads security
- Tool “gate_create_app” rewrote its description, which is the text the model reads security
- Tool “gate_list_apps” rewrote its description, which is the text the model reads security
- Tool “gate_metrics” rewrote its description, which is the text the model reads security
- Tool “gate_openshell_setup” rewrote its description, which is the text the model reads security
- Tool “gate_run_timeline” rewrote its description, which is the text the model reads security
- Tool “gate_run_tree” rewrote its description, which is the text the model reads security
- Tool “gate_validate_config” rewrote its description, which is the text the model reads security
- Schema quality: 4086 → 4989 ▼ functional
- Destructive annotations: pass → 100 functional
- Server version: 1.6.0 → 1.8.0 functional
- New tool “gate_invite_member” functional
- New tool “gate_list_members” functional
- Tool “gate_create_app” changed its title: Create an app → Create an app (older name of gate_add_app) cosmetic
- 30 Oct 26 0
- Tool “gate_list_apps” rewrote its description, which is the text the model reads security
- Tool “gate_metrics” rewrote its description, which is the text the model reads security
- “gate_add_app” added an optional parameter “expires_at” cosmetic
- “gate_add_app” added an optional parameter “max_calls” cosmetic
- “gate_create_app” added an optional parameter “expires_at” cosmetic
- “gate_create_app” added an optional parameter “max_calls” cosmetic
- 29 Oct 26 0
- Schema quality: 3374 → 3942 ▼ functional
- New tool “gate_create_app” functional
- New tool “gate_set_models” functional
- “gate_add_app” added an optional parameter “models” cosmetic
- “gate_add_app” added an optional parameter “template” cosmetic
- “gate_add_app” made “routes” optional cosmetic
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 0
- Tool “gate_add_approver” rewrote its description, which is the text the model reads security
- Tool “gate_create_run” rewrote its description, which is the text the model reads security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://gate.odilelabs.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=odilelabs.com | CN=WE1,O=Google Trust Services,C=US | 19 Oct 2026 | 17 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 42dda9c0f3e7060113f43b02876534c1 |
| SANs: odilelabs.com, gate.odilelabs.com, *.gate.odilelabs.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of gate.odilelabs.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| odilelabs.com. | present | 2371 | 13 | Verified |
| gate.odilelabs.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://gate.odilelabs.com/mcp | Verified | 200 | |
| http (plaintext) | http://gate.odilelabs.com/mcp | HTTPS enforced | 301 | https://gate.odilelabs.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
gate_add_approver Add an approver ~126
Create an approver key for the person who approves held actions (shown once), before granting approval actions. Give it to that person, never to an agent. Only an active approver key can approve, reject or reopen actions.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| name | string | yes | Who approves, e.g. "Dana (support lead)" |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_audit Read the audit log ~214
Returns recent gateway calls (time, app, matched route, status, reason, duration); use it to investigate individual calls across the project rather than gate_metrics aggregates or a single gate_run_timeline. Newest first, with totals by status and refusal reason for the returned calls. This view never returns bodies, query values or headers. For 24-hour totals and anomaly scores use gate_metrics; for a signed export an auditor can check, gate_audit_proof; for one run's history, gate_run_timeline.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | – | Optional: only this app id (app_...) |
| limit | integer | – | How many calls (default 20) |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| status | string | – | Optional: only this HTTP status, e.g. "403" |
No output schema declared.
No examples provided.
gate_audit_proof Export a signed audit proof ~210
Returns chained audit rows, decided-action feature snapshots and signed anchors; use it for a portable tamper-evident export instead of gate_audit's recent-call view, then check it with gate_audit_verify. No sealed paths/bodies, notes, keys or IPs in the action labels. Legacy actions lack snapshots and are excluded. store_audit=false has no chain. Follow next_from for audit rows and next_actions_after as actions_after for labels (10,000 each). Use API/SDK to verify exports above the MCP request size limit. The signature is HMAC-SHA256.
| Name | Type | Req | Description |
|---|---|---|---|
| actions_after | string | – | Action cursor from next_actions_after |
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| from | integer | – | – |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| to | integer | – | – |
No output schema declared.
No examples provided.
gate_audit_verify Verify a signed audit export ~132
Returns intact or broken_at for a supplied signed export; use it to check a gate_audit_proof export rather than retrieve audit rows. Recomputes the chain and project signature; broken_at is a one-based row position. Does not approve actions or change permissions.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| proof | object | yes | The full signed export from gate_audit_proof |
No output schema declared.
No examples provided.
gate_check_setup Check an agent integration setup ~172
Read actual Gate protection settings before giving an integration production access. Reports observe-only mode, writes without mandatory runs, missing user-token configuration, wildcard grants and approval separation, with evidence, exact remedies and explicit limits. Sends no upstream requests, changes no settings and uses no gateway quota. Configuration-only: not a security certificate or runtime enforcement test. Use it on a live project; to check an odile.yaml before applying it use gate_validate_config.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | – | Optional: check one active app id (app_...) instead of all active apps |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_create_app Register an app ~370
Give one app its own key and the calls it may make. Routes are rules like "GET /orders/:id", "POST /orders", "GET /users/{user}/orders" (per-user), or example calls like "GET /orders/42", which become rules allowing any id. Returns key (shown once), app.id and normalized rules. Send key as Authorization: Bearer <key> to the project gateway; never send the admin key to the workload.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| expires_at | string | – | Pro: optional future ISO time with timezone, at most 30 days from creation. Rotation preserves this expiry. |
| max_calls | integer | – | Pro: optional lifetime call allowance for this app. Rotation preserves its count. |
| models | array | – | For a model API: the only models this app may ask for, exact names or a prefix ending in * (e.g. ["gpt-4.1-mini", "claude-haiku-*"]). Omit for no model limit. |
| name | string | yes | The app name, e.g. "storefront" or "nightly sync" |
| per_minute | integer | – | Calls per minute for this app (default 60) |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| routes | array | – | Only the calls this app makes, one "METHOD /path" per item |
| template | string | – | Ready-made API policy: reads allowed, risky writes held, destructive calls refused. Explicit routes replace the entire template policy. Free and Pro; configure the project upstream first. See /templa… |
No output schema declared.
No examples provided.
gate_create_project Create a Gate project ~199
Create a Free project in front of an existing HTTPS API. No signup or payment required. For a credential-free demo use https://sandbox.gate.odilelabs.com with GET /customers/:cid/tickets/:id (customer A holds tickets 1-3, B holds 4-5: try GET /customers/A/tickets/1). Returns project_id, admin_key (shown once) and the gateway base URL apps call instead of the API. A real API and its credentials need owner authorization.
| Name | Type | Req | Description |
|---|---|---|---|
| header_name | string | – | Optional: the secret header your API expects, e.g. Authorization or apikey |
| header_value | string | – | Optional: its value. Stored encrypted; apps never see it. |
| name | string | yes | A name for the project, e.g. "Shop API" |
| upstream | string | yes | The API base URL, https only, e.g. https://api.example.com/v1 |
No output schema declared.
No examples provided.
gate_create_run Grant one agent run ~328
Gate Actions: give one agent session narrow, expiring permission. Actions are rules with {placeholders} bound by scope (e.g. "PATCH /customers/{customer}/tickets/:id" with scope {"customer":"A"}), each with an optional max and approval. Add a human approver with gate_add_approver before granting approval:true actions; without an active approver the grant is refused. Returns a run token (shown once) the agent sends as x-odile-run with its app key. Writes in a run need an Idempotency-Key. Give a write a check ("GET /bookings?idempotency_key={key}") and the agent can settle a lost answer with POST /g/<id>/_gate/recover.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Rules, or {rule, max, approval, check} |
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) this run is for |
| label | string | – | Optional: what the run is for, e.g. "triage ticket 4411" |
| max_calls | integer | – | Optional: calls allowed in the whole run |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| scope | object | – | Values for the {placeholders}, e.g. {"customer":"A"} |
| ttl_seconds | integer | – | How long the run lasts (default 3600) |
No output schema declared.
No examples provided.
gate_delegate_run Delegate a narrower run ~155
Hand a narrower run to another active app in the same project. Uses the parent app key and run token, never the admin key. Scope, expiry, approvals and ancestor budgets stay enforced; maximum depth five.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | – |
| app | string | yes | The destination app id |
| app_key | string | yes | The parent app key (gk_...) |
| label | string | – | A short label for the delegated job |
| max_calls | integer | – | – |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| run_token | string | yes | The parent run token (gr_...) |
| ttl_seconds | integer | – | – |
No output schema declared.
No examples provided.
gate_explain_refusal Explain a refused call ~70
What a Gate refusal means and how to fix it, from the x-gate-refused header value (e.g. route_not_allowed).
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | yes | The x-gate-refused value |
| recoverable | boolean | – | Whether the write was granted with a recovery check |
No output schema declared.
No examples provided.
gate_invite_member Invite a team member ~139
Use the project owner admin key (ga_...) to invite a named viewer, approver or admin. Returns a single-use invite link shown once, expiring after 72 hours; send it to that person. They accept it to receive their member key, also shown once. Gate sends no email.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| name | string | yes | The person's name |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| role | string | yes | – |
No output schema declared.
No examples provided.
gate_learn_suggestions Read learning suggestions ~122
Read normalized routes and a suggested per-minute limit from an admin-enabled, time-boxed learning session. Records only method, normalized path templates and counts per minute; no query values, raw ids, headers or bodies. Never enables learning or applies rules.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_list_actions List held actions ~132
Actions waiting for approval (or in another state), with the exact call. With an installed approval-risk model, pending actions sort by risk descending and include risk (0–1) and risk_features (top two advisory signals). No model means no score and newest first. Only a person decides in the dashboard.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| state | string | – | Default: pending |
No output schema declared.
No examples provided.
gate_list_apps List apps ~114
The project's apps with their allowed calls, limits, state, idle_since (no allowed call in the project's idle_days) and anomaly-guard settings. Use it to find an app id for the app tools, or a retired app to revoke with gate_revoke_app.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_list_members List team members ~103
Use the project owner admin key (ga_...) to review invited, active and revoked members and find a member id to revoke. Invite links and member keys are shown once when issued and never returned by this list.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_metrics Read Gate operational metrics ~258
Returns project-wide 24-hour call aggregates, anomaly scores, idle apps and current-month usage; use it for operational trends rather than individual calls in gate_audit or one run in gate_run_timeline. Includes stored call counts by HTTP status and reason, measured duration through response headers (including upstream wait), per-app anomaly scores and 24-hour anomaly counts, idle apps (active apps whose key made no allowed call in the project's idle_days, default 14; a flag only, never a revoke), and separate current-month gateway usage: plan, used, allowed, plus upgrade URL and checkout path on Free at 80% or above. Only POST the checkout path when the admin asks to upgrade; reading metrics never starts checkout. Requires the project owner key or an active member key. Audit may be partial: invalid-key sampling and audit-off periods are disclosed. No upstream requests, quota use or policy changes; not a health certificate or performance guarantee. For individual calls use gate_audit.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_openshell_setup Discover one-command OpenShell setup ~103
Read-only local setup plan for native OpenShell + Gate: one command, exact installer hash, recipe schema, prerequisites, authority boundaries and cleanup. Default creates an isolated Free read-only demo with no model or payment. A trusted local controller may configure an owner-authorized API with explicit routes/scope and private credential files. This tool does not run commands, create resources or accept credentials. Only for OpenShell users; any other agent starts with gate_create_project.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gate_revoke_app Revoke an app ~143
Revoke one app: its key stops working at once (401) and the app no longer counts toward the plan's app limit. It cannot be undone; to give that agent access again, register a new app with gate_create_app. To replace a leaked key but keep the app, use gate_rotate_app_key.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) from gate_list_apps |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_revoke_member Revoke a team member ~127
Use the project owner admin key (ga_...) to remove a teammate's access immediately, invalidating their member key or pending invite. Safe to repeat. Invite links and keys are shown once; to restore access, create a new invite.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| member | string | yes | The member id (mem_...) from gate_list_members |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_revoke_run End an agent run ~133
End one run granted with gate_create_run: its token stops working at once (403 run_revoked) while the app itself keeps working. Use it to stop an agent mid-job; grant a new run with gate_create_run if the work should continue.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| run_id | string | yes | The run id: run.run_id in gate_create_run's result |
No output schema declared.
No examples provided.
gate_rotate_app_key Replace an app key ~135
Replace one app's key and keep its rules, limits, expiry and call count. The old key stops working at once (no overlap) and the new key is shown once. Use it when a key may have leaked; to remove the app entirely use gate_revoke_app.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) from gate_list_apps |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_run_timeline Read run timeline ~152
Returns one run's call metadata, approvals and approver names, recovery outcomes and delegated children; use it to reconstruct that session instead of gate_audit's project-wide calls or gate_run_tree's permission state. No bodies or query values. One run only; the project-wide log is gate_audit.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| before | integer | – | Older audit events (timeline pages have at most 500 events) |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| run_id | string | yes | The run id |
No output schema declared.
No examples provided.
gate_run_tree Read run tree ~110
Returns one run and its delegated descendants without tokens; use it to inspect delegation and permission state instead of gate_run_timeline events. One run only; the project-wide log is gate_audit.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
| run_id | string | yes | The run id |
No output schema declared.
No examples provided.
gate_set_app_runs Require runs for an app ~112
Make an app need a run: "writes" (every write needs x-odile-run), "all" (every call), or "off".
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) |
| mode | string | yes | – |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_set_models Set an app's allowed models ~150
For a project in front of a model API: limit which models one app may ask for (the request body's "model", or a /models/<name> path). Other models are refused with 403 model_not_allowed before the provider sees them. models: null removes the limit.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) |
| models | array|null | yes | Exact names or prefixes ending in *; null for no limit |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_set_response Choose response fields for an app ~172
Opt-in JSON response redaction: return only explicit JSON Pointer paths, e.g. /id and /items/*/name. * matches one segment; selecting a container allows its whole subtree. Applies to every upstream response for this app, including errors. Maximum 1 MiB and 5 seconds to read; invalid/non-JSON responses are withheld. No bodies are stored. A withheld reply never reverses an upstream write. null disables filtering. Free and Pro.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project admin key (ga_...). Read it from the .env; never print it. |
| allow | – | yes | – |
| app | string | yes | The app id (app_...) |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_sync_declarative Apply an odile.yaml ~208
Make a Gate project match an odile.yaml: creates the project (if no project_id) and missing apps and approvers, applies run mode, loop, learning and anomaly-guard settings and alerts. Example plugin: {name: anomaly-guard, settings: {mode: alert, z_threshold: 4, min_minutes: 3, half_life: 60}}. Never revokes or deletes; differences it cannot apply (an app's routes or rate limit) come back as drift. dry_run lists the steps without changing anything. New keys are shown once.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | – | Its admin key (ga_...), required with project_id. Read it from the .env; never print it. |
| config | string | yes | The whole odile.yaml (or the same as JSON) as text |
| dry_run | boolean | – | List the steps without changing anything |
| project_id | string | – | Optional: an existing project to sync |
No output schema declared.
No examples provided.
gate_update_app Apply learned app routes and rate limit ~231
Apply stored learning suggestions to an existing app and return the applied routes, suggested per-minute limit and learning-session metadata. Review gate_learn_suggestions first, then explicitly confirm; requires the project owner key or an admin member key. mode="extend" adds learned routes (default); "replace" removes existing routes before applying them. Both modes set the learned rate limit and keep the app key. Only learned suggestions can be applied: arbitrary routes or rate limits are not accepted, and this tool never starts learning.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_key | string | yes | The project owner key (ga_...) or an accepted admin member key (gm_...). Read it from the .env; never print it. |
| app | string | yes | The app id (app_...) with stored learning suggestions |
| confirm | boolean | yes | Explicit confirmation to apply the reviewed learning suggestions |
| mode | string | – | Extend existing routes (default), or replace them with learned routes; both set the suggested rate limit |
| project_id | string | yes | The project id from gate_create_project, e.g. p1a2b3... |
No output schema declared.
No examples provided.
gate_validate_config Check an odile.yaml ~132
Parse and check a declarative Gate config (apps, routes, rate limits, run mode, plugins including anomaly-guard, alerts, approvers) without changing anything. anomaly-guard settings: mode off|alert|strict, z_threshold 2–10, min_minutes 1–30, half_life 5–1440. Returns errors with their path, warnings, and the normalized config. Use it before gate_sync_declarative; to review a live project's settings use gate_check_setup.
| Name | Type | Req | Description |
|---|---|---|---|
| config | string | yes | The whole odile.yaml (or the same as JSON) as text |
No output schema declared.
No examples provided.
How do I install the Odile Gate MCP server?
Odile Gate is a hosted endpoint at https://gate.odilelabs.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · gate.odilelabs.com
claude mcp add --transport http com-odilelabs-gate 'https://gate.odilelabs.com/mcp'
What is the Odile Gate MCP server?
Odile Gate is an MCP server listed in the public MCP registry as com.odilelabs/gate. Free, no signup: per-app keys, allowed calls, approvals and an audit log for your API or model key. This page covers its hosted endpoint (https://gate.odilelabs.com/mcp).
Is the Odile Gate MCP server safe to use?
Odile Gate scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Odile Gate MCP server expose?
Odile Gate exposes 29 tools: gate_openshell_setup, gate_create_project, gate_create_app, gate_update_app, gate_set_models, and 24 more. Their descriptions and schemas cost roughly 4,752 tokens of context every time the server is loaded.
Does the Odile Gate MCP server require authentication?
No. We connected to Odile Gate without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Odile Gate MCP server still maintained?
Odile Gate is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.