Skip to main content
Glama

FoundRole — AI Job Search & Application Tracker MCP for Claude & ChatGPT

Unsubscribe from a job alert

job_alert_unsubscribe
Destructive

Unsubscribes the authenticated user from job alerts for a specific job search.

Input:

  • job_search_id: The job search identifier to unsubscribe from (required). Accepts either the job search UUID or the composite job ID returned by jobs_search / jobs_details (format: "seo_id--job_search_id").

Output: Confirms the alert has been unsubscribed, beside the user's current job alerts in the same shape and order as the first page of job_alert_list. Idempotent: returns success even when the user was not subscribed or is already unsubscribed.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "job_search_id": "<job_search_id>"
    },
    "name": "job_alert_unsubscribe"
  }
}

Input Schema

NameRequiredDescriptionDefault
job_search_idYesJob search UUID or composite job id ("seo_id--job_search_id") from jobs_search results

Output Schema

NameRequiredDescriptionDefault
hasMoreNo
messageNo
successYes
jobAlertsNo
totalCountNo
frequenciesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / frequencies
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / hasMore
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / jobAlerts
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "createdAt": {
      +        "type": "string"
      +      },
      +      "delivery": {
      +        "type": "string"
      +      },
      +      "fastActive": {
      +        "type": "boolean"
      +      },
      +      "frequency": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "jobSearch": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "lastSentAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "subscriptionSource": {
      +        "type": "string"
      +      },
      +      "updatedAt": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "type": "integer"
      +}
  2. Added
  3. Removed
  4. Changed3 schema fields changed
    • addedInput schema / $schema
      Added value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • addedOutput schema / $schema
      Added value: +"https://json-schema.org/draft/2020-12/schema"
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "message": {
      +      "type": "string"
      +    },
      +    "success": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "success"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

B3.3/5.0
Behavior2/5

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

The description adds real behavioral value (a destructive removal, success on already-unsubscribed state, and a return payload mirroring job_alert_list), but its explicit "Idempotent" claim conflicts with the supplied idempotentHint=false annotation. The removal semantics themselves are consistent with destructiveHint=true and readOnlyHint=false, so the conflict is isolated to the idempotency hint.

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?

The lead sentence states the action up front, and Input/Output sections are cleanly separated with only minor redundancy. The output paragraph partially duplicates what the existing output schema already conveys.

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 one-parameter mutation with both annotations and an output schema present, the definition covers what gets removed, who it applies to (the authenticated user), and the response shape. The only gap is the ambiguous relationship to job_alert_unsubscribe_all and the unresolved idempotency claim.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter already documents the UUID/composite form, so the equal description text largely restates structured data. The added value is small: it names jobs_search / jobs_details as the origin of the composite ID.

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?

Names a specific verb and resource ("Unsubscribes ... from job alerts for a specific job search") and the scoping phrase "for a specific job search" implicitly separates it from job_alert_unsubscribe_all without naming that sibling.

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 spelled out: the reader must infer that this is the single-search variant versus job_alert_unsubscribe_all, and no prerequisites or error conditions are stated beyond idempotency. It does helpfully direct the agent to jobs_search / jobs_details as the source of a valid identifier.

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.