Skip to main content
Glama

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

Search career guides

knowledge_search
Read-onlyIdempotent

Searches FoundRole's published content by semantic similarity and returns the most relevant sources for a job-search question: career-guidance blog articles plus FoundRole site pages that describe the product's features (job tracker, H1B salary data, AI job search) and industry/sector career landings. Each article carries a title, url, summary, a content excerpt, publication date, and tags; each page carries a title, url, description, and its FAQ entries — enough material to answer the question and link the source.

Two optional facets add further result groups: company returns FoundRole's employer profile pages matching that company name; location returns the market landing page for that city, state, or country — an analytical page about that labour market, not a list of openings. The facets describe what the user is asking about — a company mentioned only in passing does not need the company facet.

Every response to a question also carries methodology: FoundRole's own explanation of how its pay estimates, real-or-ghost grades, remote checks and visa sponsorship records are computed, with the url of the page that publishes it. It answers where a FoundRole figure comes from.

Returns empty groups when nothing is relevant rather than padding with off-topic content. Results are the closest matches to the given question, not an index of the site's full coverage; questions about overall topic coverage are answered by knowledge_topics, which lists the blog's categories and tags with article counts. It does not search job listings and reports no open-job counts — jobs_search covers live roles, including questions about openings for a particular job title.

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": {
      "query": "<query>"
    },
    "name": "knowledge_search"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum articles to return (default 5)
queryYesThe career, job-search, or FoundRole product question to answer
companyNoA company name, when the question is about that employer — returns FoundRole company profile pages
locationNoA city, state, or country, when the question is about that labour market — returns its market landing page

Output Schema

NameRequiredDescriptionDefault
pagesNo
articlesNo
totalCountNo
methodologyNo
companyPagesNo
landingPagesNo
profileSetupUrlNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / methodology
      Added value: +{
      +  "properties": {
      +    "summary": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • removedOutput schema / properties / system_instruction
      Removed value: -{
      -  "type": "string"
      -}
  3. Changed5 schema fields changed
    • removedInput schema / properties / job_title
      Removed value: -{
      -  "description": "A job title or role, when the question is about openings for it — returns job-listing landing pages",
      -  "type": "string"
      -}
    • changedInput schema / properties / location / description
      Previous value: -"A city, state, or country refining job_title, or alone when the question is about jobs in that place"New value: +"A city, state, or country, when the question is about that labour market — returns its market landing page"
    • removedOutput schema / properties / companyPages / items / properties / openJobs
      Removed value: -{
      -  "type": [
      -    "integer",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / landingPages / items / properties / openJobs
      Removed value: -{
      -  "type": [
      -    "integer",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / proUrl
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
  4. Changed11 schema fields changed
    • addedInput schema / properties / company
      Added value: +{
      +  "description": "A company name, when the question is about that employer — returns FoundRole company profile pages",
      +  "type": "string"
      +}
    • addedInput schema / properties / job_title
      Added value: +{
      +  "description": "A job title or role, when the question is about openings for it — returns job-listing landing pages",
      +  "type": "string"
      +}
    • addedInput schema / properties / location
      Added value: +{
      +  "description": "A city, state, or country refining job_title, or alone when the question is about jobs in that place",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"The career or job-search question to answer from the blog"New value: +"The career, job-search, or FoundRole product question to answer"
    • removedOutput schema / properties / articles / items / properties / score
      Removed value: -{
      -  "type": "number"
      -}
    • addedOutput schema / properties / companyPages
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "headquarters": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "industry": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "openJobs": {
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / landingPages
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "description": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "openJobs": {
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / pages
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "description": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "faq": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / proUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / profileSetupUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / system_instruction
      Added value: +{
      +  "type": "string"
      +}
  5. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safe-read profile (readOnly, idempotent, non-destructive), so the description carries the rest and does: it discloses that empty groups are returned rather than padded results, that results are nearest matches rather than a site index, and that every response includes a methodology block with its publishing URL. It also flags what the tool will not return (no job listings, no open-job counts).

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?

It is front-loaded with the core search behavior and the facet rules come next, but three paragraphs is on the long side and the return-shape sentence partially duplicates what the output schema already declares. Nearly every sentence is load-bearing, though — the verbosity is density, not padding.

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 semantic-search tool with two facet parameters and high ambiguity against sibling tools, the description covers routing, facet semantics, empty-result behavior, the always-present methodology block, and negative scope. Despite an output schema existing, the summary of return fields still helps an agent decide whether the result answers the question.

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 adds real semantics the schema cannot: the company and location facets each spawn an additional result group, and location yields an analytical labour-market page rather than a list of openings. The only gap is that `limit` is left entirely to 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?

The opening sentence gives a specific verb and resource (semantic search over FoundRole's published content) plus the exact result types: blog articles, product feature pages, and industry landing pages. It explicitly distinguishes itself from knowledge_topics (topic coverage) and jobs_search (live openings), so an agent can route without opening the 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?

It names both alternatives and the condition that selects each: coverage questions go to knowledge_topics, openings questions to jobs_search. It also gives a usage heuristic for the optional facets — 'a company mentioned only in passing does not need the company facet' — which is exactly the kind of judgment call an agent would otherwise get wrong.

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.