Skip to main content
Glama

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

Compare jobs

jobs_compare
Read-only

Compares 2 to 4 jobs side by side using the same FoundRole analysis fields: resume match, missing skills, H-1B and E-Verify signals, ghost-job risk, posted pay, and market salary estimates.

comparison_refs accepts exact FoundRole job IDs returned by jobs_search and exact external comparisonRef URLs returned by jobs_analyze_external. Analyze each outside job first; a bare URL that has not been analyzed cannot be compared because FoundRole does not have its posting facts. Preserve every reference exactly, keep the user's requested order, and do not send duplicates.

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": {
      "comparison_refs": "<comparison_refs>"
    },
    "name": "jobs_compare"
  }
}

Input Schema

NameRequiredDescriptionDefault
comparison_refsYesTwo to four exact FoundRole job IDs or external comparisonRef URLs

Output Schema

NameRequiredDescriptionDefault
jobsYes
modeYes
studioUrlNo
statusOrderYes
trackerWebUrlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / basedOn
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / basis
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / methodologyUrl
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / source
      Added value: +{
      +  "enum": [
      +    "FoundRole"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / ghostScore / properties / basis
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / ghostScore / properties / methodologyUrl
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / ghostScore / properties / source
      Added value: +{
      +  "enum": [
      +    "FoundRole"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / visaProvenance
      Added value: +{
      +  "properties": {
      +    "basis": {
      +      "type": "string"
      +    },
      +    "falseMeans": {
      +      "type": "string"
      +    },
      +    "methodologyUrl": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "enum": [
      +        "FoundRole"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • removedOutput schema / properties / system_instruction
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
  3. Changed1 schema field changed
    • addedOutput schema / properties / jobs / items / properties / lastSeenAt
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed1 schema field changed
    • addedOutput schema / properties / jobs / items / properties / insights / properties / employerFilingHistory
      Added value: +{
      +  "properties": {
      +    "attribution": {
      +      "enum": [
      +        "FILED_BY"
      +      ],
      +      "type": "string"
      +    },
      +    "availability": {
      +      "enum": [
      +        "AVAILABLE",
      +        "NO_FILINGS",
      +        "UNRESOLVED_EMPLOYER",
      +        "NOT_READY"
      +      ],
      +      "type": "string"
      +    },
      +    "bindingStatus": {
      +      "enum": [
      +        "LEGACY_UNREVIEWED",
      +        "UNRESOLVED"
      +      ],
      +      "type": "string"
      +    },
      +    "coverage": {
      +      "items": {
      +        "properties": {
      +          "fiscalYear": {
      +            "type": "integer"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "quarter": {
      +            "type": "integer"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "current": {
      +      "properties": {
      +        "filings": {
      +          "type": "integer"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "workerPositions": {
      +          "type": "integer"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "currentPeriod": {
      +      "properties": {
      +        "complete": {
      +          "type": "boolean"
      +        },
      +        "coveredQuarters": {
      +          "items": {
      +            "properties": {
      +              "fiscalYear": {
      +                "type": "integer"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "quarter": {
      +                "type": "integer"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "endFiscalYear": {
      +          "type": "integer"
      +        },
      +        "endQuarter": {
      +          "type": "integer"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "label": {
      +          "type": "string"
      +        },
      +        "startFiscalYear": {
      +          "type": "integer"
      +        },
      +        "startQuarter": {
      +          "type": "integer"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "history": {
      +      "properties": {
      +        "access": {
      +          "enum": [
      +            "AVAILABLE",
      +            "RESTRICTED",
      +            "UNAVAILABLE"
      +          ],
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "points": {
      +          "items": {
      +            "properties": {
      +              "filings": {
      +                "type": "integer"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "period": {
      +                "properties": {
      +                  "complete": {
      +                    "type": "boolean"
      +                  },
      +                  "coveredQuarters": {
      +                    "items": {
      +                      "properties": {
      +                        "fiscalYear": {
      +                          "type": "integer"
      +                        },
      +                        "id": {
      +                          "type": "string"
      +                        },
      +                        "quarter": {
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "endFiscalYear": {
      +                    "type": "integer"
      +                  },
      +                  "endQuarter": {
      +                    "type": "integer"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "type": "string"
      +                  },
      +                  "startFiscalYear": {
      +                    "type": "integer"
      +                  },
      +                  "startQuarter": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": [
      +                  "object",
      +                  "null"
      +                ]
      +              },
      +              "workerPositions": {
      +                "type": "integer"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": [
      +            "array",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "subject": {
      +      "properties": {
      +        "domain": {
      +          "type": "string"
      +        },
      +        "domainDictionaryId": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "wageLevel": {
      +      "properties": {
      +        "availability": {
      +          "enum": [
      +            "AVAILABLE",
      +            "NO_FILINGS",
      +            "INSUFFICIENT_SAMPLE",
      +            "NOT_STATED",
      +            "NOT_READY",
      +            "UNRESOLVED_EMPLOYER"
      +          ],
      +          "type": "string"
      +        },
      +        "breakdown": {
      +          "properties": {
      +            "level1Pct": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "level2Pct": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "level3Pct": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "level4Pct": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "notStatedPct": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "period": {
      +          "properties": {
      +            "complete": {
      +              "type": "boolean"
      +            },
      +            "coveredQuarters": {
      +              "items": {
      +                "properties": {
      +                  "fiscalYear": {
      +                    "type": "integer"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "quarter": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "endFiscalYear": {
      +              "type": "integer"
      +            },
      +            "endQuarter": {
      +              "type": "integer"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "label": {
      +              "type": "string"
      +            },
      +            "startFiscalYear": {
      +              "type": "integer"
      +            },
      +            "startQuarter": {
      +              "type": "integer"
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "sampleSize": {
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  5. Changed5 schema fields changed
    • removedOutput schema / properties / jobs / items / properties / companyRating
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / basedOn
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • changedOutput schema / properties / jobs / items / properties / trackerInput / properties / location_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / studioUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / system_instruction
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  6. Changed1 schema field changed
    • addedOutput schema / properties / jobs / items / properties / estimatedSalary / properties / currency
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  7. Changed4 schema fields changed
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / breakdown / properties / alignmentKind
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / breakdown / properties / alignmentMultiplier
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / breakdown / properties / jobCareerProfileId
      Added value: +{
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / breakdown / properties / jobCareerSpecializationId
      Added value: +{
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
  8. Changed3 schema fields changed
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / grade
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / gradeConfidence
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / jobs / items / properties / insights / properties / match / properties / gradeReasons
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "params": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "severity": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  9. 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"
  10. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, closed-world, non-idempotent, so the safety profile is covered. The description adds real behavioral context beyond that: the pre-analysis dependency for external refs and the requirement to preserve user order and avoid duplicates. Return shape is covered by the output schema, so omitting it is not a gap.

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?

Front-loaded with the purpose and compared fields, then the input contract, which is the right order. Dense but every sentence carries information; the only mild redundancy is restating the 2-to-4 bound already implied by the schema minimum and maximum.

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 single-parameter tool with an output schema, the description covers what an agent must know: what is compared, where the two ref types come from, the mandatory pre-analysis step, and the ordering/duplicate constraints. Nothing needed to invoke it correctly is 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 gives array bounds and item type, so the baseline is 3. The description still adds genuine meaning: the two accepted reference forms, which sibling tool produces each form, and the validate-before-send and ordering constraints on the values.

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 ("Compares 2 to 4 jobs side by side") and enumerates the exact dimensions compared: resume match, missing skills, H-1B/E-Verify signals, ghost-job risk, posted pay, market salary. This distinguishes it from jobs_details (single job) and jobs_search (find jobs) without the agent needing to open schemas.

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 a concrete prerequisite chain: external URLs must first pass through jobs_analyze_external, and IDs come from jobs_search, with an explicit exclusion ("a bare URL that has not been analyzed cannot be compared") and a stated reason. Also imposes ordering and de-duplication rules. It stops short of naming when to prefer a sibling like jobs_details instead of comparing, so not quite a 5.

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.