klaro.legal Document Explainer
Server Details
Explains contracts, letters and tax notices clause by clause. Text, PDF or photos. Not legal advice.
- Status
- Healthy
- Uptime
- 99.9% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- klaro.legal
TDQS
Scored across 2 tools
The two tools have completely separate roles: explain_document starts an analysis and get_explanation polls for its result. The description explicitly ties them together via analysis_id, so an agent cannot mistake one for the other.
Both names follow the same snake_case verb_noun pattern (explain_document / get_explanation) and read as a natural start-and-fetch pair.
Two tools is on the thin side, but for a single-purpose document explainer with an asynchronous job pattern, both tools are necessary and neither is redundant. Nothing is padded onto the surface.
The start/poll pair covers the full lifecycle of the one operation offered, including the long-running OCR case. Minor gaps exist around cancelling or listing past analyses, but agents can work around those.
Available Tools
2 toolsexplain_documentExplain a contract or official letterARead-onlyInspect
Explains a contract, official letter, tax assessment or terms-and-conditions document in plain language, clause by clause. The document can be sent as plain text, as a base64-encoded PDF, or as base64-encoded photos of its pages. Send exactly one of the three. Scans and phone photos without a text layer are read by OCR, so a photographed letter works as well as a typed one. Returns every relevant clause with the original wording, a plain language version and why it matters, plus a short summary. It explains what the document says. It does not give legal advice, does not review the document and does not recommend a course of action. Plain text takes 20 to 60 seconds, a scan or photo longer because of OCR. If it is still running when this call returns, use get_explanation with the returned analysis_id.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The document as a base64-encoded PDF, for a file that has no usable text layer or whose layout matters. Up to 8 MB decoded. | ||
| text | No | The full text of the document to explain. | |
| images | No | Photos or scans of the document pages, base64-encoded, in page order. JPEG, PNG, HEIC or WebP, up to 15 images and 8 MB decoded in total. | |
| language | No | Language the explanation should be written in (ISO 639-1). Defaults to English. The document itself may be in any language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations it discloses latency characteristics (20–60s for text, longer for OCR), the asynchronous fallback path with analysis_id, and the shape of the returned explanation. The one gap is that it never says whether the analysis_id is always returned or only when timing out, though the polling sentence strongly implies the latter.
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?
Purpose is front-loaded, followed by input modes, exclusions, latency, and the async hand-off — a logical order with no filler sentences. It runs long for a tool description, but nearly every sentence carries operational information an agent would otherwise have to guess.
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?
There is no output schema, yet the description still sketches the return payload (per-clause original wording, plain-language version, rationale, plus a summary) and covers the async case. For a four-parameter, multi-modal document tool this is complete enough to call correctly on the first try.
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 100%, so per the rubric the baseline is 3, but the description adds a genuine constraint the schema does not encode: exactly one of text/pdf/images must be supplied, despite an empty required list. The OCR note also clarifies when the pdf/images paths are preferable to plain text.
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 ('Explains a contract, official letter, tax assessment or terms-and-conditions document, clause by clause') and names the concrete output unit (clause). It also explicitly separates itself from the only sibling by noting that unfinished work is retrieved via get_explanation with the returned analysis_id.
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 gives explicit input routing ('Send exactly one of the three'), states that photos and scans without a text layer work via OCR, and draws clear negative boundaries: 'does not give legal advice, does not review the document and does not recommend a course of action.' The hand-off condition to get_explanation is spelled out as well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_explanationFetch a running or finished explanationARead-onlyInspect
Fetches the result of an explain_document call that was still running. Pass the analysis_id it returned.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes | The analysis_id returned by explain_document. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, non-mutating read. The description adds that the operation is the retrieval half of an async pair, but says nothing about whether the result persists, how long it is available, or how to detect completion.
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?
Two short sentences, front-loaded with the action and followed by the single required input. Efficient, with only slight redundancy against the schema's own parameter 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?
For a one-parameter read tool with no output schema, the description covers what the tool returns (the explanation result) and where the input comes from. The main omission is any hint about the shape of the returned explanation or how to tell a still-running state from a finished one.
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 100% and there is only one parameter, so the schema already fully documents analysis_id. The description only restates that the id comes from explain_document, adding no format or syntax detail beyond the structured field. Baseline 3 applies.
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 (fetches) and resource (the result of an explain_document call), and ties it directly to the sibling explain_document by naming the analysis_id it returns. It does not explicitly say it is also used for completed explanations, which the title implies, leaving a small ambiguity.
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?
Gives clear context: use it after an explain_document call that was still running, passing the analysis_id it returned. It does not spell out the polling pattern (call repeatedly until complete) or when to stop, which is a minor gap for an async-result fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
explain_document3 fields changed- added
Input schema / properties / imagesAdded value: +{ + "description": "Photos or scans of the document pages, base64-encoded, in page order. JPEG, PNG, HEIC or WebP, up to 15 images and 8 MB decoded in total.", + "items": { + "type": "string" + }, + "maxItems": 15, + "type": "array" +} - added
Input schema / properties / pdfAdded value: +{ + "description": "The document as a base64-encoded PDF, for a file that has no usable text layer or whose layout matters. Up to 8 MB decoded.", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "text" -]
2 tool updates
- First observed
explain_document - First observed
get_explanation
Related MCP Connectors
Contract review that keeps your contracts: cited answers, Word redlines, key-date alerts.
Grounded, quoted readings of privacy policies and terms of service. Not legal advice.
Lease analysis: flag illegal/risky clauses by jurisdiction (ontario, bc, nyc, texas, general).
For individuals and small businesses: draft quotes, quote + agreement docs and contracts to sign.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables employees and independent contractors to submit contracts such as NDAs, offer letters, severance and invention-assignment agreements and get plain-language explanations of the clauses that deserve attention. Each flagged clause is cited to the relevant federal or state rule with a primary-source link and an "as of" date, over stdio locally or a remote Streamable HTTP endpoint.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables users to paste contracts, leases, terms of service, and other documents to receive a plain-English summary of key risks, deadlines, rights, and negotiation points.MIT
- FlicenseNot gradedqualityDmaintenanceAnalyzes contracts for safety score and risk assessment, identifying dangerous clauses and dispute patterns, with recommendations for improvements.-
- AlicenseNot gradedqualityBmaintenanceEnables users to turn household paperwork into answers about upcoming deadlines, warranties, and plain-language explanations, and to draft related messages such as payment extension requests.3 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.