Skip to main content
Glama

Check a quotation against its source without AI

checkQuote
Read-only

Check a quotation against its source without AI. Use this to locate a quotation in supplied text or one public HTTPS source. Returns original passages, ranges, context, hashes, and URL provenance. Supply exactly one of source_text or url. Only whitespace may be normalized; case, punctuation, and word boundaries are preserved. Does not judge truth, paraphrases, or author intent. Source content is not retained. Source URL failures return non-2xx and source_unavailable; absent quotes in partial sources remain inconclusive. Source failures include recovery and upstream. For upstream_error, robots_unavailable, and retry_after_redirect, upstream contains stage (robots or source), HTTP status, and parsed Retry-After seconds; other failures set upstream to null. No automatic retries or waiting. Redirects requesting a future delay stop with retry_after_redirect. For retry_later failures with a valid upstream delay, the response exposes a Retry-After header; MCP preserves it in si.bozos/retry-after metadata. Upstream failures continue to use HTTP 424. To read a page before choosing quotations, call readSource with include_quote_source:true, then supply its quote_source.source_text and source_truncated without refetching. Retain the original reader response for URL provenance; submitted text is still labeled supplied_text. Same as POST https://bozos.si/api/v1/quote-check.

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": {
      "quote": "<quote>"
    },
    "name": "checkQuote"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNoPublic HTTPS URL. Uses the guarded Source Reader, checks robots.txt, and does not render JavaScript. HTML is checked as extracted main text; Markdown and plain text are literal.
quoteYesQuotation to locate. Case and punctuation are preserved; word-like edges must not cut into source words.
max_matchesNoMaximum returned passages. Counts cover all matches; matches_truncated reports omitted passages.
source_textNoCheck the supplied text literally. Supply exactly one of source_text or url.
max_charactersNoURL mode only: maximum checked Unicode code points. Truncation remains explicit.
source_truncatedNoFor supplied source_text only: declare that the text is a partial source. A missing quotation then returns matched:null and status:source_truncated.
context_charactersNoUnicode code points of source context to return before and after each match.
normalize_whitespaceNoCollapse Unicode whitespace runs to one ASCII space and trim the quotation for lookup. Case and punctuation remain unchanged. Exact and normalized occurrences are labelled separately.

Output Schema

NameRequiredDescriptionDefault
quoteYes
safetyYes
sourceYes
statusYes
matchedYes
matchesYes
offsetsYes
matchingYes
warningsYes
match_countsYes
interpretationYes
schema_versionYes
matches_truncatedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / matches / items / properties / page_end
      Added value: +{
      +  "description": "PDF sources only: one-based page where the match ends.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / matches / items / properties / page_start
      Added value: +{
      +  "description": "PDF sources only: one-based page where the match starts.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / source / properties / representation / enum
      Previous value: -[
      -  "extracted_html_text",
      -  "literal_text",
      -  "supplied_text"
      -]New value: +[
      +  "extracted_html_text",
      +  "literal_text",
      +  "supplied_text",
      +  "pdf_text_layer"
      +]
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

With annotations already covering safety (readOnly, non-destructive, openWorld), the description adds substantial non-obvious context: normalization rules, no source retention, inconclusive partial sources, redirect/retry behavior, HTTP 424 on upstream failure, and no automatic retries. This is well beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core purpose and usage, but then sprawls into dense error-handling minutiae (upstream stage/status, Retry-After, MCP si.bozos metadata, HTTP 424) that reads like API changelog detail rather than selection guidance. Several sentences do not help an agent decide to call the tool.

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?

Given an output schema exists, the description need not spell out return values, yet it still covers failure modes, partial-source inconclusiveness, and provenance thoroughly. Nothing an agent needs to call 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%, so baseline is 3, but the description adds real semantic value: the exact-one-of source_text/url constraint and the readSource handoff (supply quote_source.source_text and source_truncated without refetching). It mostly reiterates schema-documented behavior otherwise.

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 (check/locate) and resource (a quotation against its source), scoped to supplied text or one public HTTPS source. It also separates itself from the readSource workflow, so an agent can tell what it is versus siblings like checkCitations.

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?

Explicitly says when to use it ('Use this to locate a quotation in supplied text or one public HTTPS source'), states the mutual-exclusivity rule ('Supply exactly one of source_text or url'), and names the alternative flow ('call readSource with include_quote_source:true, then supply its quote_source.source_text').

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