Skip to main content
Glama

Register an app

gate_create_app

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 to the project gateway; never send the admin key to the workload.

Input Schema

NameRequiredDescriptionDefault
nameYesThe app name, e.g. "storefront" or "nightly sync"
modelsNoFor 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.
routesNoOnly the calls this app makes, one "METHOD /path" per item
templateNoReady-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 /templates.
admin_keyYesThe project admin key (ga_...). Read it from the .env; never print it.
max_callsNoPro: optional lifetime call allowance for this app. Rotation preserves its count.
expires_atNoPro: optional future ISO time with timezone, at most 30 days from creation. Rotation preserves this expiry.
per_minuteNoCalls per minute for this app (default 60)
project_idYesThe project id from gate_create_project, e.g. p1a2b3...

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / template / enum
      Previous value: -[
      -  "stripe",
      -  "github",
      -  "shopify",
      -  "hubspot",
      -  "supabase",
      -  "slack",
      -  "recall"
      -]New value: +[
      +  "stripe",
      +  "github",
      +  "shopify",
      +  "hubspot",
      +  "supabase",
      +  "slack",
      +  "recall",
      +  "quickbooks",
      +  "xero"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / template / enum
      Previous value: -[
      -  "stripe",
      -  "github",
      -  "shopify",
      -  "hubspot",
      -  "supabase",
      -  "slack"
      -]New value: +[
      +  "stripe",
      +  "github",
      +  "shopify",
      +  "hubspot",
      +  "supabase",
      +  "slack",
      +  "recall"
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / expires_at
      Added value: +{
      +  "description": "Pro: optional future ISO time with timezone, at most 30 days from creation. Rotation preserves this expiry.",
      +  "format": "date-time",
      +  "type": "string"
      +}
    • addedInput schema / properties / max_calls
      Added value: +{
      +  "description": "Pro: optional lifetime call allowance for this app. Rotation preserves its count.",
      +  "maximum": 100000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  4. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: the key is returned only once, a response shape (key, app.id, normalized rules) is named, and — most valuably — it discloses that an example call like "GET /orders/42" is normalized into a rule allowing any id, which is a non-obvious and security-relevant widening of scope. It also warns not to send the admin key to the workload, which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded on capability, then the route grammar, then the return value, then the security caveat — a sensible order with no filler. The route-grammar sentence is long and slightly run-on with nested quoting, which costs a point but the density is earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter non-idempotent mutation with no output schema, the description covers the return contents, the secret-once caveat, and the credential handoff, which is the essential picture. It stops short of stating failure modes (duplicate name, template prerequisites beyond 'configure the project upstream') or that re-invoking creates an additional app rather than updating one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantics the schema does not carry: the three route dialects (path params, per-user, concrete example IDs) and the resulting normalization. It says nothing extra about models, per_minute, max_calls, or expires_at, but those are already fully documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (register an app, give it its own key and permitted calls) and immediately defines the domain concept that the whole tool hinges on: routes, with concrete literals. An agent knows exactly what artifact this creates, distinct from gate_create_project or gate_update_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the reader infers you call this when provisioning a new workload credential, and that you then send the returned key as a Bearer token. There is no explicit routing advice against siblings — nothing says to use gate_update_app to change routes afterward or gate_rotate_app_key to reissue a key — so an agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources