Skip to main content
Glama

Apply to Job

getmattered_apply
Destructive

Applies to one job by job_match_id or job_url, or to up to 10 jobs under one yes by job_match_ids, on the employer's own hiring system; for a job-board link, GetMattered first looks for the employer's own posting. mode "auto" submits, "review" holds for approval, and no mode follows the account setting. A sent application cannot be withdrawn. When GetMattered cannot apply, nothing is sent, and the answer says why and whether the job stays on the user's GetMattered board.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "getmattered_apply"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNo"auto" submits with no review step. "review" holds the prepared application for the user's approval. Left out, the user's account setting decides. Applies to this application only.
job_urlNoLink to any job posting to apply to. Either this or job_match_id, which identifies a job from getmattered_get_matches.
job_match_idNoThe job_match_id of a match from getmattered_get_matches (e.g. 48213). Either this or job_url.
job_match_idsNoUp to 10 job_match_ids from getmattered_get_matches, applied to under one confirmation (e.g. [48213, 48214]). Each job gets its own result.

Output Schema

NameRequiredDescriptionDefault
hostYesThe host of the job_url, when one was given.
keptYesTrue when nothing was sent and the job stays on the user's GetMattered board, at trackingUrl. GetMattered tells the user once it can send it, unless reason is account_only_board.
jobUrlYes
noticeNoPresent when the confirmation form got no answer: the application is held for approval and nothing was sent.
reasonYesNull when a new application started. unsupported_host: GetMattered does not submit on that hiring system. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. no_employer_posting: the job-board posting was read, and GetMattered found no employer posting it sends on. account_only_board: the employer takes this job on a job board that needs that board's own account (Y Combinator's Work at a Startup), where GetMattered does not send. already_applied: this job already has an application. Nothing is sent for any reason. kept says whether the job stays on the user's GetMattered board.
statusYesOur own record, which is not proof the employer received it.
companyYes
outcomeYesstarted: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent; not_applied: nothing was sent, see reason and userAction; batch: a job_match_ids call, with one entry per job in results.
resultsYesOne entry per job of a job_match_ids call, in the order given. Empty when one job was named.
jobTitleYes
setupStepNoPresent while account setup is open: the first setup step.
jobMatchIdYes
userActionYesWhat the user can do next, in words ready for the user. Null when a new application started.
trackingUrlYes
reasonDetailNoWhy the posting could not be read, in words ready for the user. Present with import_failed.
recordedModeYes
applicationIdYesThe application to follow with getmattered_get_applications. Null only when nothing was started.
requestedModeYes
alreadyExistedYesTrue when this job already had an application. The answer holds that application, and no second one starts.
employerConfirmedYesTrue ONLY when the employer sent a receipt or showed its confirmation page. False right after an apply.
preparationStatusYes
preparedUnderFreeWatchYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / job_match_ids
      Added value: +{
      +  "description": "Up to 10 job_match_ids from getmattered_get_matches, applied to under one confirmation (e.g. [48213, 48214]). Each job gets its own result.",
      +  "items": {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  "maxItems": 10,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / kept
      Added value: +{
      +  "default": false,
      +  "description": "True when nothing was sent and the job stays on the user's GetMattered board, at trackingUrl. GetMattered tells the user once it can send it, unless reason is account_only_board.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / outcome / description
      Previous value: -"started: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent; not_applied: nothing was sent, see reason and userAction."New value: +"started: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent; not_applied: nothing was sent, see reason and userAction; batch: a job_match_ids call, with one entry per job in results."
    • changedOutput schema / properties / outcome / enum
      Previous value: -[
      -  "started",
      -  "already_in_progress",
      -  "not_confirmed",
      -  "not_applied"
      -]New value: +[
      +  "started",
      +  "already_in_progress",
      +  "not_confirmed",
      +  "not_applied",
      +  "batch"
      +]
    • changedOutput schema / properties / reason / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "unsupported_host",
      -      "posting_not_found",
      -      "import_failed",
      -      "already_applied"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "unsupported_host",
      +      "posting_not_found",
      +      "import_failed",
      +      "already_applied",
      +      "no_employer_posting",
      +      "account_only_board"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / reason / description
      Previous value: -"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved, or a job-board link led to no employer posting. already_applied: this job already has an application. Nothing is sent for any reason. With a trackingUrl, the job stays on the user's GetMattered board, where GetMattered watches it."New value: +"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. no_employer_posting: the job-board posting was read, and GetMattered found no employer posting it sends on. account_only_board: the employer takes this job on a job board that needs that board's own account (Y Combinator's Work at a Startup), where GetMattered does not send. already_applied: this job already has an application. Nothing is sent for any reason. kept says whether the job stays on the user's GetMattered board."
    • addedOutput schema / properties / results
      Added value: +{
      +  "default": [],
      +  "description": "One entry per job of a job_match_ids call, in the order given. Empty when one job was named.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "applicationId": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "company": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "jobMatchId": {
      +        "type": "number"
      +      },
      +      "jobTitle": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "outcome": {
      +        "description": "started: a new application; already_in_progress: this job already had one; not_confirmed: the user declined, nothing was sent; not_applied: nothing was sent, see reason and userAction; not_started: this call ran out of time before this job, nothing was sent; unconfirmed: the answer did not arrive in time, and the application may have started; getmattered_get_applications shows whether it did.",
      +        "enum": [
      +          "started",
      +          "already_in_progress",
      +          "not_confirmed",
      +          "not_applied",
      +          "not_started",
      +          "unconfirmed"
      +        ],
      +        "type": "string"
      +      },
      +      "reason": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "unsupported_host",
      +              "posting_not_found",
      +              "import_failed",
      +              "already_applied",
      +              "no_employer_posting",
      +              "account_only_board"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Why this job did not start a new application, as in the top-level reason. Null when it started, or when the cause is in userAction."
      +      },
      +      "status": {
      +        "description": "Our own record, which is not proof the employer received it.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "trackingUrl": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "userAction": {
      +        "description": "What the user can do next for this job, in words ready for the user. Null when it started.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "jobMatchId",
      +      "outcome",
      +      "reason",
      +      "applicationId",
      +      "jobTitle",
      +      "company",
      +      "status",
      +      "trackingUrl",
      +      "userAction"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "outcome",
      -  "reason",
      -  "host",
      -  "userAction",
      -  "applicationId",
      -  "jobMatchId",
      -  "jobTitle",
      -  "company",
      -  "jobUrl",
      -  "requestedMode",
      -  "recordedMode",
      -  "status",
      -  "preparationStatus",
      -  "preparedUnderFreeWatch",
      -  "alreadyExisted",
      -  "trackingUrl",
      -  "employerConfirmed"
      -]New value: +[
      +  "outcome",
      +  "reason",
      +  "host",
      +  "userAction",
      +  "applicationId",
      +  "jobMatchId",
      +  "jobTitle",
      +  "company",
      +  "jobUrl",
      +  "requestedMode",
      +  "recordedMode",
      +  "status",
      +  "preparationStatus",
      +  "preparedUnderFreeWatch",
      +  "alreadyExisted",
      +  "trackingUrl",
      +  "results",
      +  "kept",
      +  "employerConfirmed"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / reason / description
      Previous value: -"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, and nothing was saved. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application."New value: +"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved, or a job-board link led to no employer posting. already_applied: this job already has an application. Nothing is sent for any reason. With a trackingUrl, the job stays on the user's GetMattered board, where GetMattered watches it."
  3. Changed8 schema fields changed
    • changedOutput schema / properties / alreadyExisted / description
      Previous value: -"True when this job already had an application, which is returned instead of a second one."New value: +"True when this job already had an application. The answer holds that application, and no second one starts."
    • changedOutput schema / properties / employerConfirmed / description
      Previous value: -"True ONLY when the employer sent a receipt or showed its confirmation page. Never true right after an apply."New value: +"True ONLY when the employer sent a receipt or showed its confirmation page. False right after an apply."
    • changedOutput schema / properties / notice / description
      Previous value: -"Set when the confirmation form got no answer: the application is held for approval and nothing was sent. Tell the user once."New value: +"Present when the confirmation form got no answer: the application is held for approval and nothing was sent."
    • changedOutput schema / properties / reason / description
      Previous value: -"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, and nothing was saved. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application. Do not retry with other URLs for the same job."New value: +"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, and nothing was saved. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application."
    • changedOutput schema / properties / reasonDetail / description
      Previous value: -"Why the posting could not be read, ready to tell the user. Set only with import_failed."New value: +"Why the posting could not be read, in words ready for the user. Present with import_failed."
    • changedOutput schema / properties / setupStep / description
      Previous value: -"Set while account setup is open: the step to take first."New value: +"Present while account setup is open: the first setup step."
    • changedOutput schema / properties / status / description
      Previous value: -"Our own record. Never proof the employer received it."New value: +"Our own record, which is not proof the employer received it."
    • changedOutput schema / properties / userAction / description
      Previous value: -"What the user can do next, ready to tell them. Null when a new application started."New value: +"What the user can do next, in words ready for the user. Null when a new application started."
  4. Changed4 schema fields changed
    • removedOutput schema / properties / applyChannel
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "enum": [
      -        "hiring_system",
      -        "email"
      -      ],
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "hiring_system: submitted on the employer's hiring system. email: the posting takes applications only by email, so GetMattered sends it from the user's private GetMattered address. Null when nothing was started."
      -}
    • removedOutput schema / properties / fromAlias
      Removed value: -{
      -  "description": "For an email application: the user's private GetMattered address, once the email is drafted. Null otherwise.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / sentTo
      Removed value: -{
      -  "description": "For an email application: the employer address, once the email is drafted. Null otherwise.",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "outcome",
      -  "reason",
      -  "host",
      -  "userAction",
      -  "applicationId",
      -  "jobMatchId",
      -  "jobTitle",
      -  "company",
      -  "jobUrl",
      -  "requestedMode",
      -  "recordedMode",
      -  "status",
      -  "preparationStatus",
      -  "preparedUnderFreeWatch",
      -  "alreadyExisted",
      -  "trackingUrl",
      -  "applyChannel",
      -  "sentTo",
      -  "fromAlias",
      -  "employerConfirmed"
      -]New value: +[
      +  "outcome",
      +  "reason",
      +  "host",
      +  "userAction",
      +  "applicationId",
      +  "jobMatchId",
      +  "jobTitle",
      +  "company",
      +  "jobUrl",
      +  "requestedMode",
      +  "recordedMode",
      +  "status",
      +  "preparationStatus",
      +  "preparedUnderFreeWatch",
      +  "alreadyExisted",
      +  "trackingUrl",
      +  "employerConfirmed"
      +]
  5. Changed8 schema fields changed
    • changedInput schema / properties / job_match_id / description
      Previous value: -"The job_match_id of a match from getmattered_get_matches (e.g. 48213). Pass this OR job_url."New value: +"The job_match_id of a match from getmattered_get_matches (e.g. 48213). Either this or job_url."
    • changedInput schema / properties / job_url / description
      Previous value: -"URL of any job posting to apply to (e.g. \"https://boards.greenhouse.io/acme/jobs/123\"). Pass this OR job_match_id. When the job is in getmattered_get_matches, pass its job_match_id instead."New value: +"Link to any job posting to apply to. Either this or job_match_id, which identifies a job from getmattered_get_matches."
    • changedInput schema / properties / mode / description
      Previous value: -"\"auto\" submits with no review step. \"review\" holds the prepared application for the user's approval. Omit to follow the user's account setting. Applies to this application only."New value: +"\"auto\" submits with no review step. \"review\" holds the prepared application for the user's approval. Left out, the user's account setting decides. Applies to this application only."
    • addedOutput schema / properties / applyChannel
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "hiring_system",
      +        "email"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "hiring_system: submitted on the employer's hiring system. email: the posting takes applications only by email, so GetMattered sends it from the user's private GetMattered address. Null when nothing was started."
      +}
    • addedOutput schema / properties / employerConfirmed
      Added value: +{
      +  "description": "True ONLY when the employer sent a receipt or showed its confirmation page. Never true right after an apply.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / fromAlias
      Added value: +{
      +  "description": "For an email application: the user's private GetMattered address, once the email is drafted. Null otherwise.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sentTo
      Added value: +{
      +  "description": "For an email application: the employer address, once the email is drafted. Null otherwise.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "outcome",
      -  "reason",
      -  "host",
      -  "userAction",
      -  "applicationId",
      -  "jobMatchId",
      -  "jobTitle",
      -  "company",
      -  "jobUrl",
      -  "requestedMode",
      -  "recordedMode",
      -  "status",
      -  "preparationStatus",
      -  "preparedUnderFreeWatch",
      -  "alreadyExisted",
      -  "trackingUrl"
      -]New value: +[
      +  "outcome",
      +  "reason",
      +  "host",
      +  "userAction",
      +  "applicationId",
      +  "jobMatchId",
      +  "jobTitle",
      +  "company",
      +  "jobUrl",
      +  "requestedMode",
      +  "recordedMode",
      +  "status",
      +  "preparationStatus",
      +  "preparedUnderFreeWatch",
      +  "alreadyExisted",
      +  "trackingUrl",
      +  "applyChannel",
      +  "sentTo",
      +  "fromAlias",
      +  "employerConfirmed"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / properties / requestedMode / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "auto_approve",
      -      "copilot"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "auto_approve",
      +      "copilot",
      +      "review",
      +      "auto"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  7. Changed3 schema fields changed
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Set when the confirmation form got no answer: the application is held for approval and nothing was sent. Tell the user once.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reasonDetail
      Added value: +{
      +  "description": "Why the posting could not be read, ready to tell the user. Set only with import_failed.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / setupStep
      Added value: +{
      +  "description": "Set while account setup is open: the step to take first.",
      +  "type": "string"
      +}
  8. Changed1 schema field changed
    • changedOutput schema / properties / reason / description
      Previous value: -"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, the job was saved to the tracker for the user to apply on the employer site. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application. Do not retry with other URLs for the same job."New value: +"Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, and nothing was saved. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application. Do not retry with other URLs for the same job."
  9. Changed7 schema fields changed
    • changedInput schema / properties / job_url / description
      Previous value: -"URL of any job posting to apply to (e.g. \"https://boards.greenhouse.io/acme/jobs/123\"). Pass this OR job_match_id."New value: +"URL of any job posting to apply to (e.g. \"https://boards.greenhouse.io/acme/jobs/123\"). Pass this OR job_match_id. When the job is in getmattered_get_matches, pass its job_match_id instead."
    • addedOutput schema / properties / host
      Added value: +{
      +  "description": "The host of the job_url, when one was given.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / outcome / description
      Previous value: -"started: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent."New value: +"started: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent; not_applied: nothing was sent, see reason and userAction."
    • changedOutput schema / properties / outcome / enum
      Previous value: -[
      -  "started",
      -  "already_in_progress",
      -  "not_confirmed"
      -]New value: +[
      +  "started",
      +  "already_in_progress",
      +  "not_confirmed",
      +  "not_applied"
      +]
    • addedOutput schema / properties / reason
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "unsupported_host",
      +        "posting_not_found",
      +        "import_failed",
      +        "already_applied"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Null when a new application started. unsupported_host: GetMattered does not submit on that hiring system, the job was saved to the tracker for the user to apply on the employer site. posting_not_found: the employer has no posting at that link. import_failed: the posting could not be read or saved. already_applied: this job already has an application. Do not retry with other URLs for the same job."
      +}
    • addedOutput schema / properties / userAction
      Added value: +{
      +  "description": "What the user can do next, ready to tell them. Null when a new application started.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "outcome",
      -  "applicationId",
      -  "jobMatchId",
      -  "jobTitle",
      -  "company",
      -  "jobUrl",
      -  "requestedMode",
      -  "recordedMode",
      -  "status",
      -  "preparationStatus",
      -  "preparedUnderFreeWatch",
      -  "alreadyExisted",
      -  "trackingUrl"
      -]New value: +[
      +  "outcome",
      +  "reason",
      +  "host",
      +  "userAction",
      +  "applicationId",
      +  "jobMatchId",
      +  "jobTitle",
      +  "company",
      +  "jobUrl",
      +  "requestedMode",
      +  "recordedMode",
      +  "status",
      +  "preparationStatus",
      +  "preparedUnderFreeWatch",
      +  "alreadyExisted",
      +  "trackingUrl"
      +]
  10. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Despite annotations already declaring destructiveHint=true and openWorldHint=true, the description adds real substance: 'A sent application cannot be withdrawn' explains the irreversibility, and the failure path is spelled out ('nothing is sent, and the answer says why and whether the job stays on the user's GetMattered board'). It also discloses the external resolution behavior for job-board links.

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?

Dense but front-loaded: the input routes appear first, then mode behavior, then irreversibility, then the failure path. Some duplication with the schema's mode description costs a little, but almost every clause carries information an agent needs.

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 destructive, open-world mutation tool this covers what matters: what gets sent and where, the confirmation scope for batches, irreversibility, and what happens on failure. An output schema exists, so return-value detail is not required in the description.

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 baseline is 3, but the description adds meaning beyond the schema: it states job_match_id and job_url are alternatives for one job, that job_match_ids batches up to 10 under a single confirmation with each job producing its own result, and that a job-board URL triggers a lookup of the employer's own posting. Mode semantics largely restate the enum description.

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

Purpose4/5

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

States a specific verb and resource ('Applies to one job...') plus the three input routes (job_match_id, job_url, job_match_ids) and the target system ('the employer's own hiring system'). It never names a sibling such as getmattered_approve_applications explicitly, so the differentiation from the approval flow is only implied by the 'review' mode sentence.

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

Usage Guidelines4/5

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

Gives clear operating context: single vs batch (up to 10) application, and the auto-vs-review-vs-account-setting choice that determines whether a separate approval step follows. It does not name an alternative tool to use instead (e.g. when to prefer approving or canceling applications), so exclusions are absent.

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.