Stipple — Document Verification & Extraction
Server Details
Document forensics: tamper/AI checks, fields, tables, identity, screening, tenders, citations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- Sketchjar/stipple-mcp
- GitHub Stars
- 0
- Server Listing
- stipple-mcp
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 13 of 13 tools scored. Lowest: 3.9/5.
Most tools have highly distinct purposes: verification, extraction, identity checks, tender search, and feedback are clearly separated. However, check_document, verify_document, and get_warrant form a closely linked workflow that could cause an agent to pick the wrong one without careful reading, and extract_fields with options.classify overlaps conceptually with document classification.
All tool names follow a consistent verb_noun pattern: check_document, check_pack, detect_ai_text, extract_fields, find_tenders, get_warrant, match_tenders, screen_adverse_media, submit_feedback, tender_sources, verify_document, verify_identity, verify_references. The verbs are descriptive and the pattern is uniform across the set.
13 tools is well within the ideal scope for a document verification and extraction server. The set covers verification, extraction, identity, tender matching, and feedback without feeling bloated; each tool appears to address a distinct user need.
The domain is broad—document verification, extraction, identity, tenders, and reference checking—but within each sub-area the core workflows are covered: check/verify, extract, retrieve warrants, give feedback. Minor gaps exist (e.g., no tool to list or manage warrants beyond get_warrant, no update/delete for stored data), but they are not critical for the server's stated purpose.
Available Tools
13 toolscheck_documentCheck for a cached inspectionARead-onlyInspect
Cheap cache-check: has this exact document already been inspected? Hash the file yourself (sha256, lowercase hex) and call this before verify_document to skip a redundant (paid) inspection. Returns {cached, warrant_id, permalink}.
Free — costs 0 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| sha256 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply readOnlyHint=true, and the description adds useful behavioral context beyond that: it is free/costs 0 credits, returns a known shape with cached, warrant_id, and permalink, and implies idempotent read-only behavior. It does not fully describe behavior when cache is missed, but that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the key concept 'cheap cache-check,' then states the workflow, return value, and cost in compact, high-signal sentences. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema, the description covers purpose, usage, cost, hashing instructions, and expected return fields. Nothing essential is missing for an agent to decide whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description bears the burden. It compensates by explaining exactly how to derive the sha256 parameter: hash the file using sha256, lowercase hex. This adds meaning beyond the schema's bare string type, though it could more explicitly label it as the document hash.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Cheap cache-check' to determine if a document has already been inspected. It distinguishes itself from the sibling verify_document by framing this as a pre-check to skip a redundant paid inspection, so an agent can immediately tell the tools apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use: hash the file yourself and 'call this before verify_document to skip a redundant (paid) inspection.' This gives direct workflow context and names the alternative, leaving no ambiguity about the tool's role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_packCheck a document pack's completenessARead-onlyInspect
Check whether a SET of documents satisfies a checklist — completeness, cheaply.
USE THIS WHEN you have an application / onboarding pack and need "do we have the required
documents, and what's still missing?" Each document is CLASSIFIED (one cheap page-1 read —
never full field extraction or multi-page), then matched against the checklist's required
slots. (For "is a document genuine?" use verify_document; to identify ONE document use
extract_fields with options={"classify": true}; for the identity gate use verify_identity.)
Define the checklist ONE of two ways:
- `scheme`: a named preset — "income_proof", "lending_prequal", "rental_application".
- `requirements`: an ad-hoc checklist — a list of document-type names like
["payslip","bank_statement"], or objects {"key":..., "accepts":[types], "optional":bool}.
`documents` is a list (up to 12), each ONE of: {"url": "https://..."} (public link, fetched
server-side) or {"bytes_b64": "...", "filename": "statement.pdf"} (inline).
Returns `{complete, slots[] (key, satisfied, matched), missing[], documents[] (filename,
classified_type), unmatched_documents[]}`. COVERAGE, not approval — that the right document
TYPES are present, NOT that any is genuine (run verify_document) or that an application is
approved. Documents are never stored.Costs 3 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| scheme | No | ||
| documents | Yes | ||
| requirements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true. The description goes well beyond this, disclosing that each document gets only a cheap page-1 classification, that documents are never stored, that this is coverage checking rather than genuineness/approval, and that it costs 3 credits per call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense without padding. Every section earns its place, key conditions are front-loaded, and formatting uses bullets and bold to aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite sparse schema details, the description fully equips an agent to call the tool correctly: input shapes, alternative usage routes, output structure, behavioral limits, and cost are all covered. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It thoroughly defines scheme presets, the two formats for requirements, and the two accepted forms of documents, including size limits and field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: check whether a set of documents satisfies a checklist. It clearly differentiates from siblings by naming verify_document, extract_fields, and verify_identity and explaining what this tool is not for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE THIS WHEN' guidance and spells out when to use each alternative tool instead. This leaves no ambiguity about selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_ai_textDetect AI-written proseARead-onlyInspect
Estimate the PROBABILITY that a document's text was AI-GENERATED (LLM-written prose).
USE THIS WHEN someone shares prose — an essay, cover letter, article, review, application,
or report (or a link to one) — and asks: did an AI / ChatGPT write this? is this
human-written? detect AI text.
Provide the document ONE way: `text` (pasted markdown/plain prose), `url` (a public http(s)
link to a page or PDF — fetched server-side, the cheapest call), OR `bytes_b64` (a base64
PDF/file, plus `filename` for routing). Returns
`{probability, lean, tells, reasoning, applicable}`.
HONEST SCOPE: the probability is the model's CONFIDENCE, not a calibrated truth — it can
false-flag templated/coached or non-native-English writing. It works on PROSE only: for a
form/table/numeric document (payslip, statement) it returns `applicable: false` and abstains,
because AI-text detection false-positives badly there — use `verify_document` (the
authenticity engine) for those, and `verify_references` to check a doc's citations/claims.Costs 1 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| text | No | ||
| filename | No | document.pdf | |
| bytes_b64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses the probability is model confidence, not calibrated truth, warns of false-flagging on templated/coached or non-native-English writing, and explains the abstention behavior (applicable:false) for forms/tables/numeric docs. It also reveals server-side URL fetching and the 1-credit cost — rich behavioral context the annotation alone cannot provide. No contradiction with the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three labeled sections (core purpose, USE THIS WHEN, HONEST SCOPE) plus a parameter line and return line make the description highly scannable. Every sentence adds new information — purpose, triggers, parameter semantics, return shape, limitations, alternatives, cost — with zero filler, and the purpose is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 4 optional parameters with 0% schema coverage and multiple behavioral edge cases, nothing an agent needs to invoke this correctly is missing: purpose, trigger context, both alternative tools, parameter formats, return shape, false-positive limitations, and cost are all present. An agent could select and call this tool accurately without opening any other structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the full burden and fully compensates: it explains text (pasted markdown/plain prose), url (public http(s) link fetched server-side and noted as the cheapest), bytes_b64 (base64 PDF/file), and filename (for routing). Crucially, it states the document must be provided ONE way — a critical constraint not visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb ('Estimate'), a resource (a document's text), and a measurable outcome ('PROBABILITY that it was AI-generated'). The scope is sharpened by example document types (essay, cover letter, article, review), and it distinguishes itself from siblings by explicitly routing non-prose documents to verify_document and verify_references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'USE THIS WHEN' section names concrete triggering questions ('did an AI / ChatGPT write this? is this human-written?') and input types, giving an agent a strong positive signal for selection. It then gives explicit when-not guidance: non-prose documents return applicable:false and should go to verify_document, and verify_references covers citation checking — exactly the when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_fieldsExtract fields from a documentARead-onlyInspect
Extract structured FIELDS from a document (PDF or image) with a vision model.
USE THIS WHEN you need specific values OUT of a document — a payslip's gross/net, an invoice's
total/ABN, a form's checkboxes, a table's cells — rather than a yes/no about the document. (For
"is this genuine?" use verify_document; "what kind of document is this?" is
`options={"classify": true}` right here.)
Say WHAT to pull, four ways:
- `fields`: an ad-hoc list — names like ["gross_pay","abn"], or objects
{"name":..., "type":"text|amount|date|boolean", "description":...}. THE general case: ask
for exactly the fields your task needs. Use type "boolean" for a checkbox/tickbox.
`"question"` works instead of `"description"` if you would rather just ask:
{"name":"customer_name", "question":"What is the customer name?"}.
- `template`: a named preset — "payslip", "tax_invoice", "bank_statement", "receipt".
- NEITHER: AUTO — the document is classified and that type's fields are used.
- auto on an unrecognised type: schema-free — every labelled field is returned.
Provide the document ONE way: `url` (a public http(s) link — fetched server-side, the cheapest
call) OR `bytes_b64` (inline base64, plus `filename` for PDF-vs-image routing). `country` is an
optional hint; `max_pages` caps how many pages are read (default a few; hard ceiling 10).
`options` turns on extra capabilities. Every one defaults OFF, and asking for one that this
server does not support is an ERROR naming it — never a silent no-op, so you can always tell
"asked wrongly" from "nothing found". Available today:
- `{"grounding": true}` — every value gains `bbox` (the rectangle it was read from, in PDF
points, origin top-left) and `text_layer_match`. Use it to CITE a value back to the page.
Born-digital PDFs only for now; a scan returns `bbox: null` and `grounding: "none"`.
- `{"flag_below": 0.7}` — adds `needs_review`, the fields under that confidence, weakest
first. Use it to route the doubtful ones to a human instead of checking everything.
- `{"tables": true}` — adds `tables`: whole tables with their rows. On a PDF these are
read from the document's own rules and coordinates (exact cells, merged-cell colspans,
no model call and NO CREDIT for the table pass); on a scan the model reads the rows and
the table says `source: "vlm"` with no cell geometry. `{"tables": {"formats":
["json","markdown","html"], "borderless": true, "cells": true}}` to tune it.
- `{"classify": true}` — adds `classification`: the full verdict (type, country,
confidence, evidence), not just the routing. Free in auto mode.
- `{"redact": true}` — adds `pii` (a MASKED inventory) and `redacted_text`, so you can
extract and check for personal data in ONE call. A field you NAMED is still returned in
full; the inventory never is. Two things to know before turning it on: `redacted_text`
is the document's WHOLE text body with detected PII replaced — for a PDF that means
every page, not just the ones `max_pages` covers — and redaction is best-effort
coverage, so anything it failed to detect stays in that text verbatim. It also costs
an extra page-equivalent per page, because it is a second model pass.
- `{"layout": true}` — adds `layout.blocks`: every text block with its role
(heading/body), font, size, column and reading order. Born-digital PDFs only; free.
- `{"links": true}` — adds `links`: the PDF's own link annotations with uri, anchor
text and bbox. Free. A URL merely PRINTED on the page is not an annotation.
- `{"figures": true}` — adds `figures`: where the embedded images sit (bbox and pixel
size), never the bytes. Free.
- `{"chunks": true}` — adds `chunks`: retrieval-ready pieces that carry provenance a
text splitter cannot give you — `heading_path` (where in the document), `bbox` and
page range (citable back to the page), tables never sliced. Six strategies via
`{"chunks": {"strategy": "section|page|chars|recursive|element|hierarchical",
"max_chars": 1500, "min_chars": 200, "overlap": 100, "include_headings": true}}`.
`hierarchical` adds parent context chunks for small-to-big retrieval. Born-digital
PDFs only; free.
- `{"split": true}` — adds `documents`: the page ranges of the distinct documents in
one file (a bundle of 3 stapled PDFs -> 3 entries with types). One classifier call
per page, so it costs +1 page-equivalent per page read.
`render_scale` (one of 1.0, 1.5, 2.0, 3.0, 4.0; default 2.0) raises rasterisation for small or
dense print. Call `GET /v1/extract/capabilities` for the full machine-readable list.
COST: 1 credit per page read, minimum 1 — with `fields` or a `template` given, a one-page
receipt costs 1 and a ten-page statement costs 10; AUTO mode adds 1 for the routing
classification. Options that add model reads add page-equivalents (`redact` +pages, `split`
+pages replacing the auto/classify +1, `tables` +pages only on a scan); deterministic work
is free, and an encrypted PDF is charged the one-page floor only. Pages charged is
min(`max_pages`, the document's real length), resolved before the call runs, so you can
predict the price. Set `max_pages` to cap your spend on a long document.
CAPABILITY-ONLY: `options.classify` and/or `options.redact` with no `fields`, no
`template` and no other option skips field extraction entirely — classify-only costs
1 credit and redact-only 1 per page, exactly what the retired classify_document and
redact_pii tools charged.
Returns `{mode, document_type, fields{name:{value,confidence,page}}, not_found, pages_read,
page_limit, page_count}`. `page_count` is the document's real length, so you can see when
`max_pages` truncated it. EXTRACTION, not verification — values are what the document SHOWS,
not proof it is genuine. A field that isn't clearly present comes back in `not_found` (it
abstains rather than guessing).
`text_layer_match` is `exact` / `normalised` when the printed value was located on the page,
`multiple` when the same string appears more than once (no box — we will not guess which), and
`absent` when it is not there. It reports whether the string was FOUND, not that the value is
correct. The document is never stored.Costs 1 credit(s) PER PAGE read (minimum 1) — cap a long document with max_pages.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| fields | No | ||
| country | No | ||
| options | No | ||
| filename | No | document.pdf | |
| template | No | ||
| bytes_b64 | No | ||
| max_pages | No | ||
| render_scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, which is consistent with the description's statement that 'The document is never stored.' The description goes far beyond annotations by disclosing that extraction is not proof of genuineness, that missing fields go into not_found instead of being guessed, that scans produce bbox:null and grounding:'none', that redaction is best-effort, and that unsupported options cause an explicit error rather than a silent no-op. This is rich behavioral context that structured annotations could not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections like USE THIS WHEN, COST, CAPABILITY-ONLY, and Returns, and it front-loads the core purpose and routing guidance. It loses a point because the final 'Costs 1 credit(s) PER PAGE read (minimum 1) — cap a long document with max_pages' duplicates the much more detailed COST section earlier, adding avoidable length to an already very long description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity — 9 parameters, a fully undocumented schema, a large options object, and many edge cases — the description is remarkably complete. It covers all parameters, all currently supported options, cost calculation, scan versus born-digital behavior, page caps, return shape, and limitations. Even though an output schema exists, the description still explains enough that an agent can predict behavior and choose sensible defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does comprehensively. It explains url versus bytes_b64 plus filename routing, the fields parameter with names/objects/types and 'question' alternative, template presets, country as an optional hint, max_pages default/ceiling/cost impact, render_scale allowed values, and the entire options object with sub-options, defaults, costs, and edge cases. An agent can construct a correct invocation with no other source of parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific action and resource: 'Extract structured FIELDS from a document (PDF or image) with a vision model.' It also distinguishes itself from verification and classification by saying 'rather than a yes/no about the document' and explicitly routes 'is this genuine?' to verify_document. An agent can immediately tell what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description has a dedicated 'USE THIS WHEN' section with concrete examples such as a payslip's gross/net, an invoice's total/ABN, form checkboxes, and table cells. It also gives explicit alternatives: 'For "is this genuine?" use verify_document; "what kind of document is this?" is options={"classify": true} right here.' This is exactly the kind of when-to-use versus when-not-to-use guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_tendersSearch AU/NZ government tendersARead-onlyInspect
Search open government tenders across Australia and New Zealand. FREE — no credits.
USE THIS WHEN someone asks what public-sector work is open: "any council drainage
tenders in Victoria", "what's closing this month in NSW", "show me federal IT
opportunities". For "which of these could MY company actually bid for", use
match_tenders instead — that reads their website and ranks against it.
`jurisdiction` is one of AU, NZ, AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT,
AU-NT. `tier` is federal, state, council, university or health. `closing_before` is an
ISO date. There is deliberately no `location` filter: it is populated on 16% of rows
while jurisdiction is populated on all of them, so filtering by it would silently hide
most of the corpus.
Returns `{total, results[], coverage}`. Each result carries title, buyer, jurisdiction,
closing_date, categories, a summary, a link, and source_id/source_tag/source_name/
source_url/source_refresh — plus `link_is_listing` when the portal publishes no
per-tender URL and the link goes to the list it appeared on.
`coverage` names which sources were searched and which returned nothing. Quote it if
the result is empty: "no match in what we searched" is true, "there are none" is not.Costs 1 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| tier | No | ||
| limit | No | ||
| source | No | ||
| category | No | ||
| jurisdiction | No | ||
| closing_before | No | ||
| include_closed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true in annotations, the description adds substantial behavioral context: jurisdiction is populated on all rows while location is not, link_is_listing marks portals without per-tender URLs, and coverage explains which sources returned nothing. However, it contains an internal cost contradiction — 'FREE — no credits' versus 'Costs 1 credit(s) per call' — which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense and well-structured: use cases first, then parameter semantics, then return-value caveats. Most sentences earn their place, though the conflicting 'FREE — no credits' and 'Costs 1 credit(s) per call' statements add confusion rather than value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is highly complete for a read-only search tool: it covers when to use it, what filters mean, data-coverage limitations, empty-result interpretation, and link behavior. Minor gaps remain around source and category parameter semantics, but the output schema and sibling tender_sources tool reduce the practical risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents jurisdiction values, tier values, and closing_before as an ISO date, and explains why a location filter is deliberately absent. But it does not explain q, source, category, limit, or include_closed semantics, leaving several optional parameters under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search open government tenders across Australia and New Zealand.' It also distinguishes itself from match_tenders by stating that match_tenders is for ranking opportunities against a specific company, so an agent can tell them apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes explicit 'USE THIS WHEN' guidance with concrete example queries and names the alternative tool (match_tenders) and the condition that should route to it. It also tells the agent how to phrase empty results ('no match in what we searched' vs 'there are none'), which is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warrantFetch a stored warrantARead-onlyInspect
Retrieve a stored warrant by id (e.g. 'warrant_') — the full bundle as JSON, or a human-readable Markdown report when as_markdown=True.
USE THIS WHEN you have a warrant_id from an earlier verify_document / check_document call
and need the FULL evidence — every signal that fired, per-page findings, provenance — rather
than the summary the original call returned. Use as_markdown=True to get a report you can
show a human verbatim.Free — costs 0 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| warrant_id | Yes | ||
| as_markdown | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks this as a safe read; the description adds meaningful behavioral context: it is free, produces two possible output representations, and describes the bundle contents (every signal that fired, per-page findings, provenance). No destructive or hidden behavior is implied, and there is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is logically structured and front-loaded with the core action. It is slightly redundant at the end — 'Free — costs 0 credits' repeats the same fact — and the usage block could be tightened, but there is no fluff and every major point earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by outlining the return format (JSON or Markdown) and the contents of a warrant bundle. It also covers cost, the prerequisite source of warrant_id, and the human-facing report use case. For a simple two-parameter getter, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It supplies an id format example and clarifies that as_markdown=True produces a human-readable report while the default is the full JSON bundle. This adds real semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Retrieve a stored warrant by id', and further specifies the id format. It also disambiguates from sibling verification tools by stating this returns the full evidence bundle rather than the summary from the original call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes an explicit 'USE THIS WHEN' block that states the condition (having a warrant_id from verify_document/check_document) and the goal (need FULL evidence rather than summary). It also gives a concrete instruction for when to set as_markdown=True, which is actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_tendersMatch tenders to a companyARead-onlyInspect
Rank open tenders against what a company actually does. Costs 3 credits.
USE THIS WHEN someone asks which opportunities suit a specific business: "what could we
bid for", "is there anything for a civil contractor in Victoria", "find work for
acme.com.au". Give `company_url` — a plain domain is fine, we resolve it — and we read
their site, build a capability profile, and score the shortlist against it.
`example` runs a built-in profile (civil, it, facilities) with no site read, for
demonstrating the shape of the answer.
Returns `{profile, matched, matches[], degraded, coverage}`. Each match has `score`,
`band`, `why[]` — the company's own stated capabilities this tender needs — and
`gaps[]`, things the tender asks for that their website does not mention.
TELL THE USER WHAT THE SCORE IS: relative fit within these results, against what their
website says. NOT a probability of winning. And `gaps` is what to check before bidding,
not a list of everything the tender requires — that is in the tender documents.
When `degraded` is true, scoring was unavailable and the order is keyword relevance
only, with no `why`/`gaps`. Say so rather than presenting it as a judged ranking.Costs 1 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| example | No | ||
| company_url | No | ||
| jurisdiction | No | ||
| closing_before | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing that the tool reads the company website, builds a capability profile, costs credits, handles degraded scoring, and interprets `score` as relative fit rather than win probability. However, the cost is stated as both 'Costs 3 credits' and 'Costs 1 credit(s)', which muddies one disclosed behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary and is organized into easily parsed usage and caveat sections. However, it is long, and the final duplication of the credit cost ('Costs 1 credit(s) per call.') contradicts the earlier 'Costs 3 credits' and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main use case, input mode, output shape, score interpretation, degraded behavior, and cost. With an output schema present, it is largely complete, but it never states that `company_url` or `example` is effectively required, and it fails to clarify the two optional filter parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the prose must carry the parameter documentation. It explains `company_url` well — plain domain, resolved by the tool, used for site reading — and describes `example` clearly. But `jurisdiction` and `closing_before` are never given any meaning beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource — 'Rank open tenders against what a company actually does' — with a title that matches. Example queries such as 'find work for acme.com.au' make the tool's purpose unmistakable and distinguish it from generic tender search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly marks when to use this tool with 'USE THIS WHEN' and gives concrete query phrasings. It also explains the `example` mode for demos, though it does not explicitly name an alternative tool or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_adverse_mediaScreen for adverse media and sanctionsARead-onlyInspect
Screen a person or organisation for ADVERSE MEDIA and SANCTIONS/PEP exposure (KYC/AML).
USE THIS WHEN onboarding or due-diligence asks: does this subject appear in negative news
(fraud, money laundering, bribery, sanctions, trafficking, enforcement action), or on a
sanctions / politically-exposed-person list? Pairs naturally after verify_identity.
Identify the subject ONE of two ways: pass `name` (plus any of `dob` as YYYY-MM-DD, `country`,
`aliases`, `employer`, `role` — these sharpen matching and cut same-name false positives), OR
pass an identity document via `url`/`bytes_b64` (+`filename`) and the subject is read from it.
Returns `{subject, sanctions{...}, adverse_media{...}, risk_flag, headline, limitations}`:
sanctions candidates are corroboration-gated (a name-only hit is `possible`, NEVER confirmed —
one common name matches several different people); media hits are entity-disambiguated and
classified, with same-name articles surfaced under `excluded`. This is screening COVERAGE, not a
determination — a hit means "review this", not "guilty"; "nothing found" is not a clean record.
Stateless — nothing is stored.Costs 3 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| dob | No | ||
| url | No | ||
| name | No | ||
| role | No | ||
| aliases | No | ||
| country | No | ||
| employer | No | ||
| filename | No | document.pdf | |
| bytes_b64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation, disclosing that the tool is stateless, costs credits, returns corroboration-gated sanctions candidates where name-only hits are 'possible, NEVER confirmed', disambiguates media hits, and that results are screening coverage, not a determination. This is rich behavioral context that helps the agent interpret results safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but organized into clear paragraphs: purpose, usage trigger, subject identification, output semantics, and limitations. It front-loads the core purpose and usage, and every section contributes essential detail for a complex KYC/AML screening tool. It loses a point for some repetitive phrasing and typos that slightly reduce polish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 optional parameters, no schema descriptions, and only a readOnlyHint annotation, the description covers everything an agent needs to call it correctly: when to use it, how to identify the subject, what the output contains, and how to interpret hits and non-hits. The output schema exists, but the description still usefully clarifies result semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each meaningful parameter group: name plus optional disambiguators (dob, country, aliases, employer, role) for sharper matching, and url/bytes_b64 plus filename as the document-based alternative. It also clarifies that no parameters are required and that the two identification paths are mutually exclusive in intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Screen a person or organisation for ADVERSE MEDIA and SANCTIONS/PEP exposure (KYC/AML)'. It clearly differentiates from sibling tools by framing the use case as negative-news and sanctions-list screening, and even notes it 'pairs naturally after verify_identity', distinguishing it from identity verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'USE THIS WHEN onboarding or due-diligence asks' whether a subject appears in negative news or on sanctions/PEP lists. It also clarifies the two identification modes (name-based vs document-based) but does not explicitly state when not to use it or name a direct alternative tool to pick instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackRate a warrantAIdempotentInspect
Record thumbs up/down on a warrant's rating (the engine's precision-flywheel label source). verdict must be 'up' or 'down'; note is optional free text.
USE THIS WHEN the ground truth became known after a verify_document call — e.g. the
document was later confirmed genuine or fraudulent — so the engine learns from the
outcome. Tell it what happened; it sharpens future inspections for everyone.Free — costs 0 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| verdict | Yes | ||
| warrant_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read, idempotent, non-destructive operation. The description adds useful behavioral context beyond that: it costs zero credits, it feeds the engine's learning loop, and it affects future inspections. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear action clause followed by the usage trigger and a cost note. The 'USE THIS WHEN' section adds practical routing value, and every sentence contributes to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with a required verdict constraint, optional note, and output schema present, the description covers the key behavioral and usage signals. It tells the agent when to invoke the tool, what values to pass, and what effect the call has, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by constraining verdict to 'up' or 'down' and noting that note is optional free text. warrant_id is not described, but its meaning is evident from both the name and the phrase 'a warrant's rating,' making the compensation adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Record thumbs up/down on a warrant's rating.' It clearly distinguishes the tool from verification and checking siblings by framing it as post-verification feedback, and it explains the rating's role as a precision-flywheel label source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: use when ground truth becomes known after a verify_document call, with concrete examples of genuine or fraudulent outcomes. It does not explicitly list when not to use it or name alternative tools, but the guidance is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tender_sourcesList tender data sourcesARead-onlyInspect
Every source we search, what it is allowed to do, and what the last run returned. FREE.
USE THIS WHEN someone asks where the data comes from, whether a particular portal is
covered, or why a search came back empty. It is the honesty surface: it names sources
behind login walls, sources whose robots.txt refuses us, and sources that returned
nothing on the last run and why.
Returns `{sources[], coverage}` — per source: id, tag, name, URL, refresh mode,
jurisdiction, tier, how it is accessed, what its robots.txt says, how many tenders we
hold from it, and its status on the most recent run. Snapshot sources include their
observed date and are not presented as nightly feeds.Costs 1 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already covers the safety profile, and the description adds useful behavior context: it is the 'honesty surface,' discloses login-wall and robots.txt limitations, and reports last-run status. However, the description contains a direct contradiction between 'FREE.' and 'Costs 1 credit(s) per call,' which undermines transparency about call cost and could lead the agent to give conflicting information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it opens with a clear summary, gives usage triggers, then details the return contract. It is slightly verbose and includes the cryptic standalone 'FREE.' line, which also conflicts with the later cost statement, but overall every major section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool, the description is nearly complete: it explains use cases, sources covered, limitations, output shape, and per-source fields. The only gap is the unresolved cost contradiction, which prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain about argument semantics. Schema coverage is effectively 100% with an empty schema. The description instead adds meaning about the return payload, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List tender data sources' and 'Every source we search, what it is allowed to do, and what the last run returned.' It clearly defines the tool's scope and the content of its output. No sibling tool exists for listing sources, so sibling differentiation is unnecessary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'USE THIS WHEN' and lists concrete triggers: asking where data comes from, checking whether a portal is covered, or understanding why a search returned empty. This gives an agent clear conditions for selecting this tool, even without naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_documentVerify a document's authenticityARead-onlyInspect
Forensically inspect a document (PDF or image) for authenticity: tampering signs, AI-generation indicators, arithmetic reconciliation (financial docs), and provenance.
USE THIS WHEN someone shares a payslip, bank statement, invoice, receipt, ID, certificate,
or contract and asks: is this genuine / real / authentic? has it been edited, doctored, or
photoshopped? can I trust this file? (For "did an AI *write* this prose" use
`detect_ai_text`; for "are this report's citations real" use `verify_references`. Both are
available in this canonical suite.)
Provide the document ONE way: `url` (a public http(s) link — fetched server-side, the
cheapest call: no need to download or encode anything) OR `bytes_b64` (inline base64, plus
`filename` so PDF-vs-image routing is right).
Returns the headline result — `risk_band` (low/medium/high/insufficient/error),
`inspection_quality` (coverage, orthogonal to risk), `recommended_action`, a `summary`, the
RISK-axis `risk_findings`, and a shareable `permalink`. This is a SIGNAL, not a fraud
verdict — a human or agent adjudicates. Use `get_warrant(warrant_id)` for the full evidence
bundle. Identical bytes are cached by content hash — `check_document` first skips a
redundant, paid inspection.Costs 2 credit(s) per call (10 in deep mode).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| fresh | No | ||
| filename | No | document.pdf | |
| bytes_b64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses that this is a SIGNAL not a fraud verdict, that results are cached by content hash, that the call costs credits, and that the returned risk_band is complemented by inspection_quality. These are non-obvious behavioral traits an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but organized with clear sections and front-loaded purpose. Nearly every sentence earns its place, though phrases like 'Both are available in this canonical suite' add little value and some explanation of cache/check_document is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex verification tool with no documented output schema details, it covers input alternatives, exclusions, cost, caching, output headline fields, and the adjudication caveat. It omits how to control the `fresh` flag and does not explain how 'deep mode' is activated, so a small gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters, and it does for url, bytes_b64, and filename: it distinguishes server-side fetching from inline base64 and explains filename's routng role. However, the `fresh` boolean parameter is never mentioned, leaving one of four parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Forensically inspect a document (PDF or image) for authenticity.' It enumerates concrete check types (tampering, AI-generation, arithmetic reconciliation, provenance) and distinguishes itself from siblings by naming detect_ai_text and verify_references for adjacent tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'USE THIS WHEN' states exact triggering scenarios (payslip, bank statement, invoice, etc. with questions about genuineness), and gives explicit exclusions: 'For did an AI *write* this prose use detect_ai_text; for are this report's citations real use verify_references.' This is model rounting guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_identityRun an Australian identity checkARead-onlyInspect
Run an Australian identity check over a SET of identity documents. A vision model reads each document (which ID it is, which fields it shows — name/photo/address/signature — and its issue date); a deterministic engine then tallies them against a scheme and reports whether identity is established, and exactly what's still missing if not.
USE THIS WHEN someone needs to verify a person's identity from their documents — KYC /
onboarding / "do these documents satisfy the 100-point check?" Pass ALL the person's
documents together (a passport alone is 70 points; the check needs >= 100).
`documents` is a list, each item ONE of: {"url": "https://..."} (public link, fetched
server-side) or {"bytes_b64": "...", "filename": "passport.pdf"} (inline). Up to 10.
`scheme`: "afp_100_point" (points, default) or "austrac_safe_harbour" (category combinations).
Returns `{established, points/target or satisfied_path, documents[] (per-document: type,
fields shown, whether it counted and why-not), reason, accepts, ...}`. This is identity
COVERAGE, not a forgery judgment — run verify_document for authenticity. Documents are
never stored.Costs 2 credit(s) per call.
| Name | Required | Description | Default |
|---|---|---|---|
| scheme | No | afp_100_point | |
| documents | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only show readOnlyHint=true, so the description carries the burden of explaining behavior. It discloses the vision-model reading step, deterministic tallying, what the result contains, that documents are never stored, that it is identity coverage rather than forgery judgment, and the credit cost. This is rich additive context well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections: when to use, parameter formats, return shape, limitations, and cost. Every sentence adds value, and backticked fields keep references to parameters readable. The length is justified by low schema coverage and the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with the output schema, the description covers purpose, selection criteria, all input formats, scheme options, expected output fields, caveats, privacy, and credit cost. There is no missing piece needed for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema description coverage is 0%, but the description fully compensates by documenting that `documents` accepts either public URLs or byte_base64 with filename, supports up to 10 items, and by enumerating the exact `scheme` values plus default. This gives the agent everything needed to construct valid arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: running an Australian identity check over a set of identity documents, tallying them against a scheme. It also distinguishes itself from authenticity checks by explicitly pointing to verify_document, which differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'USE THIS WHEN' section covering KYC/onboarding and 100-point check scenarios, and instructs the agent to pass all documents together. It also names the alternative tool for authenticity verification, so the agent knows when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_referencesVerify a report's citationsARead-onlyInspect
Fact-check a document's REFERENCES and CLAIMS — built for AI-generated reports whose citations must be checked before they're trusted.
USE THIS WHEN someone shares a report, article, whitepaper, or deep-research export (or a
link to one) and asks: is this accurate / legit? are these citations real? fact-check this.
did the AI make this up? Also use it proactively before relying on any AI-written document.
Provide the document ONE way: `url` (a public http(s) link to a PDF or web page — fetched
server-side, the cheapest call: no need to download or encode anything), `text` (pasted
markdown/plain prose), OR `bytes_b64` (a base64 PDF; URLs are read from the PDF's link
annotations, so they're exact). Default (fast): provenance (is it a ChatGPT deep-research
export?), citation resolution (live / archived / dead, papers matched against arXiv/Crossref
to catch 'real ID, wrong paper'), and internal MATH (recompute the doc's own arithmetic).
Set `deep=true` to also fetch each cited source and judge whether it SUPPORTS or CONTRADICTS
the claim (slower, ~a minute).
Returns a trust summary, per-item tables, and a shareable `permalink` to the public
fact-check record. HONEST BOUNDARY: this reports verification COVERAGE, not truth —
'supported' means evidence-backed (not necessarily true) and 'unsupported' means no evidence
found (not necessarily false). It tells a reviewer WHERE to look; it does not bless the
document, and it never affects the fraud risk band.Costs 2 credit(s) per call (5 in deep mode).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| deep | No | ||
| text | No | ||
| filename | No | document.pdf | |
| bytes_b64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true, the description carries behavioral weight: default provenance/citation-resolution/math checks, deep mode behavior, server-side fetching, honest boundary that it reports coverage not truth, and that it never affects the fraud risk band. No contradiction with readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but appropriately structured: what/why, when to use, one-document-three-ways input, default vs deep behavior, output, boundaries, cost. It is front-loaded and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input modes, selection tradeoffs, default and deep behaviors, returned artifacts, limitations, and cost; output schema exists so return details don't need full enumeration. An agent has everything needed to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description compensates by explaining url (public link, server-fetched, cheapest), text (pasted markdown/plain prose), bytes_b64 (base64 PDF), and deep (fetch sources to judge support/contradiction). Only filename is left implicit, but its default makes that acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: fact-check a document's REFERENCES and CLAIMS, specifically built for AI-generated reports. The phrase 'citations must be checked before they're trusted' distinguishes it from generic document tools like verify_document or check_document by scoping it to citation/reference verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit trigger conditions: use when someone shares a report/link and asks about accuracy or citation legitimacy, plus proactively before relying on AI-written content. It doesn't name specific alternatives or list when-not cases, so it stops short of fully routing among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.1
- AlicenseAqualityAmaintenanceInspects documents for tampering, ineffective redactions, and text aimed at language models before they enter an agent's context, and compares documents to confirm whether they are unchanged.44386MIT
- AlicenseAqualityBmaintenanceChecks documents against international standards (e.g., ICAO, Hague-Visby) to verify internal consistency and completeness, returning a machine-readable verdict for agent decision-making.2151MIT
- AlicenseAqualityAmaintenanceBilingual (EN/ES) AI-writing detection that shows the evidence instead of a percentage: named tells with line and column, hidden-character inspection, and citation cross-checking against a document's own bibliography. Seven of its nine tools run entirely locally and never touch the network.1020MIT
Your Connectors
Sign in to create a connector for this server.