Skip to main content
Glama

Add an endpoint to the catalog (self-extension)

connections_catalog_add
Destructive

Add a new operation to the LIVE catalog so it's reusable via connections_execute - the self-improvement path when an op is missing. TWO lanes, both SSRF-guarded (rows stamped source='agent-added'): (1) AWS - server_url host must be *.amazonaws.com; the SigV4 signing sub-service is auto-derived from the host (lambda.us-east-1.amazonaws.com → 'lambda'), pass aws_service to override; set protocol (query|json|rest-json) + action+version OR target+jsonVersion. (2) NON-AWS connected service (cloudflare/github/stripe/…) - pass service (the connected-service slug) and the server_url host must match that service's code-level host allowlist; an unnamed auth scheme is INHERITED from that service's own existing catalog rows (bearer only when the service has no rows yet), an explicit scheme still wins (basic|apikey|header|oauth2|query also supported; apikey/header take header+headerPrefix, query REQUIRES param) - the response names which via auth_scheme_source and carries a warning if the resolved scheme disagrees with what the rest of the service uses. For a one-off AWS call prefer aws_call; to remove/repair a row, connections_catalog_remove (or re-add to upsert). Common params: tool_name ([a-z0-9_]), method, path, server_url, summary, description, parameters ({params:[{name,in,required}]}), tags, destructive, safety_score.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoRequest path appended to server_url (e.g. /v1/zones). An AWS query/json op that carries its action in the body needs none.
tagsNoFree-text tags that help this row surface in connections_search_catalog.
paramNoquery scheme ONLY, and REQUIRED there: the URL parameter the credential is sent as (e.g. `key` for Google, `token` for Open VSX). Never defaulted - a row without it returns an error at call time rather than sending the live key under a guessed name.
actionNoAWS lane (protocol query|json): the API action name, e.g. ListFunctions. Goes with `version`.
headerNoapikey/header scheme: the header name to send the credential in (default x-api-key).
methodYesHTTP method the call is made with, uppercase: GET | POST | PUT | PATCH | DELETE | HEAD | OPTIONS.
regionNoAWS lane: the region the signed request targets (e.g. us-east-1). Usually implied by server_url's host.
schemeNoNON-AWS auth scheme, lowercase: bearer (default) | basic | apikey | header | oauth2 | query, plus entra_raw for service 'microsoft' only. Omit to inherit the scheme this service's existing rows already use.
targetNoAWS lane (protocol json): the X-Amz-Target operation, used INSTEAD of action+version. Goes with `jsonVersion`.
serviceNoNON-AWS lane: the connected-service slug (e.g. cloudflare, github, stripe) whose vaulted credential signs the call; its host allowlist must cover server_url.
summaryNoOne line saying what the op does. This is the text connections_search_catalog ranks and shows, so write it for search, not for a changelog.
versionNoAWS lane (protocol query|json): the API version that goes with `action`.
protocolNoAWS lane: the request protocol, lowercase - query | json | rest-json (`rest` is accepted as an alias of rest-json). Pair it with action+version, or with target+jsonVersion.
tool_nameYesThe name callers will use with connections_execute - lowercase [a-z0-9_]. Re-adding an existing name UPSERTS that row, which is the repair path.
awsServiceNoAlias of aws_service (camelCase).
parametersNoThe op's parameter contract: { params: [{ name, in, required }] }, where `in` says where each one goes (query | path | header | body).
server_urlYesOrigin the call is sent to, SSRF-guarded. AWS lane: the host must be *.amazonaws.com. NON-AWS lane: the host must match the `service` slug's code-level allowlist.
aws_serviceNoAWS lane: SigV4 signing sub-service (e.g. lambda, s3). Auto-derived from the host if omitted.
descriptionNoLonger prose for the row, shown when a caller asks for detail. Optional - `summary` is the field that decides whether anyone finds this op.
destructiveNoTrue when running this op changes or deletes something. Surfaced to callers before they run it.
jsonVersionNoAWS lane (protocol json): the JSON wire version that goes with `target` (e.g. 1.1).
headerPrefixNoapikey/header scheme: optional prefix prepended to the credential value.
safety_scoreNo0-100 hint of how safe the op is to run unattended - lower means more caution. A pure read sits near 100.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / method / description
      Previous value: -"HTTP method the call is made with (GET, POST, ...)."New value: +"HTTP method the call is made with, uppercase: GET | POST | PUT | PATCH | DELETE | HEAD | OPTIONS."
    • addedInput schema / properties / method / enum
      Added value: +[
      +  "GET",
      +  "POST",
      +  "PUT",
      +  "PATCH",
      +  "DELETE",
      +  "HEAD",
      +  "OPTIONS"
      +]
    • changedInput schema / properties / protocol / description
      Previous value: -"AWS lane: the request protocol - query | json | rest-json. Pair it with action+version, or with target+jsonVersion."New value: +"AWS lane: the request protocol, lowercase - query | json | rest-json (`rest` is accepted as an alias of rest-json). Pair it with action+version, or with target+jsonVersion."
    • addedInput schema / properties / protocol / enum
      Added value: +[
      +  "query",
      +  "json",
      +  "rest-json",
      +  "rest"
      +]
    • changedInput schema / properties / scheme / description
      Previous value: -"NON-AWS auth scheme: bearer (default) | basic | apikey | header | oauth2 | query."New value: +"NON-AWS auth scheme, lowercase: bearer (default) | basic | apikey | header | oauth2 | query, plus entra_raw for service 'microsoft' only. Omit to inherit the scheme this service's existing rows already use."
    • addedInput schema / properties / scheme / enum
      Added value: +[
      +  "bearer",
      +  "basic",
      +  "apikey",
      +  "header",
      +  "oauth2",
      +  "query",
      +  "entra_raw"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / param / description
      Previous value: -"query scheme ONLY, and REQUIRED there: the URL parameter the credential is sent as (e.g. `key` for Google, `token` for Open VSX). Never defaulted - a row without it is refused at call time rather than sending the live key under a guessed name."New value: +"query scheme ONLY, and REQUIRED there: the URL parameter the credential is sent as (e.g. `key` for Google, `token` for Open VSX). Never defaulted - a row without it returns an error at call time rather than sending the live key under a guessed name."
  3. Changed2 schema fields changed
    • addedInput schema / properties / param
      Added value: +{
      +  "description": "query scheme ONLY, and REQUIRED there: the URL parameter the credential is sent as (e.g. `key` for Google, `token` for Open VSX). Never defaulted - a row without it is refused at call time rather than sending the live key under a guessed name.",
      +  "type": "string"
      +}
    • changedInput schema / properties / scheme / description
      Previous value: -"NON-AWS auth scheme: bearer (default) | basic | apikey | header | oauth2."New value: +"NON-AWS auth scheme: bearer (default) | basic | apikey | header | oauth2 | query."
  4. Changed16 schema fields changed
    • addedInput schema / properties / action / description
      Added value: +"AWS lane (protocol query|json): the API action name, e.g. ListFunctions. Goes with `version`."
    • addedInput schema / properties / description / description
      Added value: +"Longer prose for the row, shown when a caller asks for detail. Optional - `summary` is the field that decides whether anyone finds this op."
    • addedInput schema / properties / destructive / description
      Added value: +"True when running this op changes or deletes something. Surfaced to callers before they run it."
    • addedInput schema / properties / jsonVersion / description
      Added value: +"AWS lane (protocol json): the JSON wire version that goes with `target` (e.g. 1.1)."
    • addedInput schema / properties / method / description
      Added value: +"HTTP method the call is made with (GET, POST, ...)."
    • addedInput schema / properties / parameters / description
      Added value: +"The op's parameter contract: { params: [{ name, in, required }] }, where `in` says where each one goes (query | path | header | body)."
    • addedInput schema / properties / path / description
      Added value: +"Request path appended to server_url (e.g. /v1/zones). An AWS query/json op that carries its action in the body needs none."
    • addedInput schema / properties / protocol / description
      Added value: +"AWS lane: the request protocol - query | json | rest-json. Pair it with action+version, or with target+jsonVersion."
    • addedInput schema / properties / region / description
      Added value: +"AWS lane: the region the signed request targets (e.g. us-east-1). Usually implied by server_url's host."
    • addedInput schema / properties / safety_score / description
      Added value: +"0-100 hint of how safe the op is to run unattended - lower means more caution. A pure read sits near 100."
    • addedInput schema / properties / server_url / description
      Added value: +"Origin the call is sent to, SSRF-guarded. AWS lane: the host must be *.amazonaws.com. NON-AWS lane: the host must match the `service` slug's code-level allowlist."
    • addedInput schema / properties / summary / description
      Added value: +"One line saying what the op does. This is the text connections_search_catalog ranks and shows, so write it for search, not for a changelog."
    • addedInput schema / properties / tags / description
      Added value: +"Free-text tags that help this row surface in connections_search_catalog."
    • addedInput schema / properties / target / description
      Added value: +"AWS lane (protocol json): the X-Amz-Target operation, used INSTEAD of action+version. Goes with `jsonVersion`."
    • addedInput schema / properties / tool_name / description
      Added value: +"The name callers will use with connections_execute - lowercase [a-z0-9_]. Re-adding an existing name UPSERTS that row, which is the repair path."
    • addedInput schema / properties / version / description
      Added value: +"AWS lane (protocol query|json): the API version that goes with `action`."
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and openWorldHint=true, but the description adds substantial behavior beyond them: SSRF guarding on both lanes, rows stamped source='agent-added', host allowlist enforcement for non-AWS services, auth-scheme inheritance rules, and the fact that the response reports auth_scheme_source plus a warning on scheme mismatch. This is rich, non-redundant disclosure.

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?

Purpose is front-loaded and every clause carries information (lane rules, constraints, alternatives). It is unusually dense for a single paragraph with nested parentheticals, which hurts scannability slightly, but there is essentially no wasted text.

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

Completeness5/5

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

For a 23-parameter, nested-object, no-output-schema tool this is complete: both lanes, auth inheritance, SSRF constraints, upsert/repair semantics, and even the response fields are covered. Nothing an agent needs to call it safely appears to be missing.

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% and the schema already documents each field thoroughly, so the baseline is 3. The description goes further by encoding cross-field dependencies that the flat schema cannot express — protocol + action+version OR target+jsonVersion, apikey/header requiring header/headerPrefix, and query requiring `param` — which materially changes how an agent fills the parameters.

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?

Starts with a specific verb+resource+outcome: adds an operation to the LIVE catalog so it becomes reusable via connections_execute. It also names the sibling alternatives (aws_call, connections_catalog_remove) and its role as the 'self-improvement path', so an agent can distinguish it from neighbors without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('when an op is missing'), explicit alternatives and exclusions ('for a one-off AWS call prefer aws_call'; 'to remove/repair a row, connections_catalog_remove'), and clear branch conditions for the AWS vs non-AWS lanes.

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