Skip to main content
Glama

Lenz Fact-Check

Deep fact-check

verify_claim

Run the deep check on ONE claim (or up to 10 in claims in parallel) against independent sources and return a verdict with a 1–10 score (or No Public Record when nothing public records the claim), the key finding, warnings and the main sources (about a minute or two).

It costs 10 credits against 1 for assess_claim (depth="low" costs 5; check_usage has the live prices), so the quick check is the default and a plain "check this" is assess_claim. Run the deep check when the user asks for sources, a deep check or a verification, or says yes to one you offered. When they ask for several or all claims, pass up to 10 in claims in one call, or run one per claim, at most 10 calls at once. Checks continue on their own once submitted, so submit every requested claim before calling get_verification to wait on any of them, and report results as they arrive, without asking again. Tell the user it is running. It waits and returns status: completed when the check finishes in time; otherwise status: submitted with a task_id for get_verification, which waits again. A text with several claims returns status: needs_input with the list: call select_claims with the chosen claims' exact text. A completed result replaces any earlier quick verdict on the claim and says how to present it; its suggested_rewrite is an unchecked suggestion.

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": "verify_claim"
  }
}

Input Schema

NameRequiredDescriptionDefault
claimNoONE claim, as a statement that makes sense on its own: Lenz sees only this text, not the conversation, so bring in what the conversation says it refers to and change nothing else. A claim a quick check listed goes exactly as listed, so the deep check matches it; otherwise use the user's own words and language, not translated. Leave empty when passing `claims`.
depthNoHow much research to do. "standard" (default) is the full pass. "low" is a shallower one — fewer sources, the same models — for half the credits; it saves only about a fifth of the time, so both take about a minute or two. Pick "low" when the user wants to spend fewer credits. The charge follows the depth you request; the `depth` on the completed result is the depth the verdict was actually produced at (a "low" request may be served from an existing deeper check).standard
claimsNoUp to 10 claims to deep-check in parallel in one call, each a standalone statement or a claim a quick check listed, exactly as listed. Mutually exclusive with `claim`.
languageNoLeave unset: Lenz answers in the language of the text it checks (English when it cannot tell). This field overrides that; the conversation's language and the user's locale are not a request to override it. Set it only when the user asks for the answer in a different language, and keep the text you send in its own words and language: a translated text is a different claim. Supported: en, es, de, fr, it, pt, nl, sv, da, no, fi, bg, sr.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / claim / default
      Added value: +""
    • changedInput schema / properties / claim / description
      Previous value: -"ONE claim, as a statement that makes sense on its own: Lenz sees only this text, not the conversation, so bring in what the conversation says it refers to and change nothing else. A claim a quick check listed goes exactly as listed, so the deep check matches it; otherwise use the user's own words and language, not translated."New value: +"ONE claim, as a statement that makes sense on its own: Lenz sees only this text, not the conversation, so bring in what the conversation says it refers to and change nothing else. A claim a quick check listed goes exactly as listed, so the deep check matches it; otherwise use the user's own words and language, not translated. Leave empty when passing `claims`."
    • addedInput schema / properties / claims
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Up to 10 claims to deep-check in parallel in one call, each a standalone statement or a claim a quick check listed, exactly as listed. Mutually exclusive with `claim`.",
      +  "title": "Claims"
      +}
    • changedInput schema / properties / language / description
      Previous value: -"Leave unset: Lenz answers in the language of the text it checks (English when it cannot tell). This field overrides that; the conversation's language and the user's locale are not a request to override it. Set it only when the user asks for the answer in a different language, and keep the text you send in its own words and language: a translated text is a different claim. Supported: en, es, de, fr, it, pt, nl, sv, da, no, fi, bg."New value: +"Leave unset: Lenz answers in the language of the text it checks (English when it cannot tell). This field overrides that; the conversation's language and the user's locale are not a request to override it. Set it only when the user asks for the answer in a different language, and keep the text you send in its own words and language: a translated text is a different claim. Supported: en, es, de, fr, it, pt, nl, sv, da, no, fi, bg, sr."
    • changedInput schema / properties / language / enum
      Previous value: -[
      -  "",
      -  "en",
      -  "es",
      -  "de",
      -  "fr",
      -  "it",
      -  "pt",
      -  "nl",
      -  "sv",
      -  "da",
      -  "no",
      -  "fi",
      -  "bg"
      -]New value: +[
      +  "",
      +  "en",
      +  "es",
      +  "de",
      +  "fr",
      +  "it",
      +  "pt",
      +  "nl",
      +  "sv",
      +  "da",
      +  "no",
      +  "fi",
      +  "bg",
      +  "sr"
      +]
    • removedInput schema / required
      Removed value: -[
      -  "claim"
      -]
  2. Changed3 schema fields changed
    • changedInput schema / properties / claim / description
      Previous value: -"ONE claim to check in depth against sources. Run it once the user agreed to a deep check, or when they asked for sources, a deep check or a verification."New value: +"ONE claim, as a statement that makes sense on its own: Lenz sees only this text, not the conversation, so bring in what the conversation says it refers to and change nothing else. A claim a quick check listed goes exactly as listed, so the deep check matches it; otherwise use the user's own words and language, not translated."
    • changedInput schema / properties / depth / description
      Previous value: -"How much research to do. \"standard\" (default) is the full pass. \"low\" is a shallower one — fewer sources, the same models — for half the credits; it saves only about a fifth of the time, so both take about a minute or more. Pick \"low\" when the user wants to spend fewer credits. The charge follows the depth you request; the `depth` on the completed result is the depth the verdict was actually produced at (a \"low\" request may be served from an existing deeper check)."New value: +"How much research to do. \"standard\" (default) is the full pass. \"low\" is a shallower one — fewer sources, the same models — for half the credits; it saves only about a fifth of the time, so both take about a minute or two. Pick \"low\" when the user wants to spend fewer credits. The charge follows the depth you request; the `depth` on the completed result is the depth the verdict was actually produced at (a \"low\" request may be served from an existing deeper check)."
    • changedInput schema / properties / language / description
      Previous value: -"Leave unset. English is the default. Set this only if the user explicitly asked for the answer in another language — not to match the language of the claim, the conversation, or the user locale. Supported: en, es, de, fr, it, pt, nl, sv, da, no, fi, bg."New value: +"Leave unset: Lenz answers in the language of the text it checks (English when it cannot tell). This field overrides that; the conversation's language and the user's locale are not a request to override it. Set it only when the user asks for the answer in a different language, and keep the text you send in its own words and language: a translated text is a different claim. Supported: en, es, de, fr, it, pt, nl, sv, da, no, fi, bg."
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses credit costs, approximate duration, depth pricing, asynchronous continuation after submission, and possible status outcomes including completed, submitted with task_id, and needs_input. It also explains that a completed result replaces any earlier quick verdict and that suggested_rewrite is unchecked, which is meaningful behavioral context not carried by the schema alone.

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 description is front-loaded with purpose, then cost and routing guidance, then async workflow details. It is dense and somewhat paragraph-heavy, but given the tool's multi-step behavior, almost every sentence carries operational value.

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?

The output schema exists, annotations cover safety and openness, and schema coverage is complete. The description still supplies the missing workflow context: pricing, alternatives, batching, status transitions, submission ordering, and how to handle needs_input, making it complete for an agent to invoke the tool correctly.

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 already 100%, so the schema itself carries most parameter meaning. The description reinforces that claim is one standalone statement and claims can hold up to 10 in parallel, but it adds little parameter-level detail beyond what is already in the schema, and it does not discuss the language parameter.

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 description states a specific verb and resource: deep-check one claim or up to 10 claims in parallel against independent sources, returning a verdict, score, finding, warnings, and sources. It explicitly distinguishes itself from assess_claim by naming the quick check and its lower credit cost, so an agent can select between them without opening either 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 gives explicit when-to-use guidance: which requests warrant the deep check, that a plain "check this" defaults to assess_claim, and how to handle multiple claims in one batch or one call per claim. It also explains the follow-up sequence with get_verification and select_claims, including reporting results as they arrive.

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.