Skip to main content
Glama

Check a source is who they say they are

source_check

Someone says they are a doctor, a lawyer, a broker, a professor, a director of a company. This checks those particular claims against the official lists that would record them. Paste whatever you have — the pitch email, a name, a link — and the claims are read out of it. You get one of four answers: verified, partly verified, could not verify, or contradicted by the record. Under it: each claim that was confirmed, where it was confirmed and a link to the entry; each claim that was not, saying exactly which list was searched and came back empty; and a plain list of what was not checked at all, so a gap looks like a gap instead of a clean bill of health. It will never tell you somebody is fake. There is no such answer, because failing to find someone on a list is not evidence they are lying — plenty of real people are not on the list that would cover them, and "could not verify" means one search, on one day, in one place. What comes back is fixed at the moment it was made and never edited; checking again later produces a new one and leaves the first alone. Use it for "is this person who they say they are", "check this expert before I quote them", "should I trust this pitch", "is this doctor actually registered". Costs 25 credits and takes a few seconds. If you name a company MentionFox holds a record for, the answer starts with the MentionFox check on it: red flags found, in how many sources, with a link to the full findings. Plans and credits: https://mentionfox.com/pricing

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": {
      "input": "<input>"
    },
    "name": "source_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional. The subject's name, if it is not obvious from the input.
inputYesThe pasted pitch, name, email address or link naming the person to check. Paste it whole — the claims are read out of it.
titleNoOptional. The role or credential they state, if it is not obvious from the input.
employerNoOptional. The organisation they say they are with, if it is not obvious from the input.

Output Schema

NameRequiredDescriptionDefault
okNoTrue when the check ran and was saved.
tagNoA short code for why a check was refused, when it was.
errorNoPresent when the call could not do the work; says why and that nothing was charged where that is so.
checksNoEach claim checked: what was claimed, where it was looked up, what was found and a link to the entry.
messageNoA plain note about the answer, for example why candidates were returned instead of a result.
subjectNoWho the check is about, as read from the input.
verdictNoOne of: verified, partly verified, could not verify, contradicted by the record.
citationNoA line to cite this check by.
report_idNoId of the saved check. A check is never edited; checking again makes a new one.
created_atNoWhen the check was made (ISO date and time).
report_refNoShort reference to quote for this check.
not_checkedNoClaims that were not checked at all, so a gap reads as a gap.
cost_creditsNoThe price of one check.
pricing_noteNoWhat this call cost and what a repeat costs.
credits_chargedNoCredits this call took. 0 when nothing was charged.
credits_returnedNoCredits given back when the check could not finish.
mentionfox_checkNoPresent when the call named a company MentionFox holds a record for: MentionFox's own check on it (the sentence, red flags and notes with their source links, how many sources) and a link to the full findings.
verdict_sentenceNoThe verdict in one plain sentence.
balance_credits_beforeNoThe credit balance before this check.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / mentionfox_check
      Added value: +{
      +  "description": "Present when the call named a company MentionFox holds a record for: MentionFox's own check on it (the sentence, red flags and notes with their source links, how many sources) and a link to the full findings."
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "balance_credits_before": {
      +      "description": "The credit balance before this check."
      +    },
      +    "checks": {
      +      "description": "Each claim checked: what was claimed, where it was looked up, what was found and a link to the entry.",
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "citation": {
      +      "description": "A line to cite this check by.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "cost_credits": {
      +      "description": "The price of one check.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "created_at": {
      +      "description": "When the check was made (ISO date and time).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "credits_charged": {
      +      "description": "Credits this call took. 0 when nothing was charged.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "credits_returned": {
      +      "description": "Credits given back when the check could not finish.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "description": "Present when the call could not do the work; says why and that nothing was charged where that is so.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "message": {
      +      "description": "A plain note about the answer, for example why candidates were returned instead of a result.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "not_checked": {
      +      "description": "Claims that were not checked at all, so a gap reads as a gap.",
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "ok": {
      +      "description": "True when the check ran and was saved.",
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "pricing_note": {
      +      "description": "What this call cost and what a repeat costs.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "report_id": {
      +      "description": "Id of the saved check. A check is never edited; checking again makes a new one.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "report_ref": {
      +      "description": "Short reference to quote for this check.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "subject": {
      +      "description": "Who the check is about, as read from the input."
      +    },
      +    "tag": {
      +      "description": "A short code for why a check was refused, when it was.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "verdict": {
      +      "description": "One of: verified, partly verified, could not verify, contradicted by the record.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "verdict_sentence": {
      +      "description": "The verdict in one plain sentence.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "title": "Source check result",
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations budget: 25 credits and a few seconds of latency, an immutable snapshot that is never edited and never overwritten by re-checking, and a description of the four-outcome response shape plus the MentionFox prefix behavior. It also proactively discloses the tool's central limitation — "could not verify" means one search on one day in one place — which is exactly the failure mode an agent could misread. Consistent with annotations (non-idempotent, non-destructive, open-world).

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?

Effectively front-loaded: what it checks, what you get back, then the epistemic caveat, then use cases and cost. The anti-overreach paragraph is worth its length given the risk of an agent treating "could not verify" as "fraudulent," though it repeats the same point twice across two sentences. The pricing URL is a minor tail.

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?

Covers everything an agent needs despite an output schema being present: cost, latency, immutability semantics, the meaning of each of the four verdicts, and the conditional MentionFox prefix. Nothing material is left ambiguous for a call with one required free-text parameter.

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 schema already defines all four fields, giving a baseline of 3. The description adds real guidance the schema doesn't: paste the material whole rather than extracting fields, since the claims are parsed out of the input — which explains why name/title/employer are all optional and secondary. It stops short of describing how the optional fields interact with the parsed input.

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 ("checks those particular claims against the official lists that would record them") scoped to a concrete class of claims: doctor, lawyer, broker, professor, company director. This is clearly distinct from siblings like enrich_person or get_dossier, which build a profile rather than adjudicate credential claims.

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 several concrete trigger phrasings ("is this person who they say they are", "check this expert before I quote them", "should I trust this pitch") that map intent to the tool. It also bounds the answer set (it will never conclude someone is fake), which steers interpretation. What's missing is explicit routing to siblings — nothing says when to prefer enrich_person or compare_people instead.

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