Sternly
Server Details
Checks finished AI work after it is done: figures, citations and quotations, with a signed record.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 9.5% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct resource and action: retrieving a check, reading workspace definitions, proposing a definition, and submitting a claim bundle for checking. The get/submit pair follows a standard asynchronous pattern and the definitions tools are clearly separated by their nouns. No two tools could plausibly be selected for the same task.
All four names use snake_case verb_noun form (get_check, get_definitions, propose_definitions, submit_claim_bundle). The verbs are meaningful and distinct, and the multi-word object in submit_claim_bundle still fits the pattern.
Four tools is a tight, focused surface that fits a check-and-definitions service, well within a reasonable range. It leans slightly thin in that the product appears to support recurring checks and versioned definitions, which would normally warrant a listing tool.
The submit-then-poll lifecycle and definition proposal are covered, but there is no way to list or discover prior checks, so an agent that lost a check id has a dead end. Definitions likewise support only read and propose, with no listing of pending proposals or version retrieval beyond the current set.
Available Tools
4 toolsget_checkRead a Sternly checkARead-onlyIdempotentInspect
The status of a check Sternly runs (running, done or failed) and, once it is done, its result: its headline, counts, depth, findings and the link to its signed evidence package. Use the check id that submit_claim_bundle returned.
| Name | Required | Description | Default |
|---|---|---|---|
| check_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context on top: the response is staged (status first, result only after completion) and the result includes a signed evidence package link. It does not mention what happens for an unknown or malformed check id, which is the main remaining gap.
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 sentences, front-loaded with what the tool returns and followed by the one procedural instruction that matters. Every clause carries information; nothing is repeated from the title or schema.
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 takes on the job of describing return values and does so by listing status, headline, counts, depth, findings and the evidence link. For a single-parameter read tool that is nearly complete; only the volume or shape of findings and whether repeated calls are expected while running are left unstated.
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 has to carry the single parameter, and it does by tying check_id to the value returned by submit_claim_bundle — provenance the bare pattern ^chk_[0-9a-f]{32}$ cannot convey. It does not restate the format, which is fine since the pattern already covers it, but no error semantics for a stale or malformed id are given.
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?
Names a specific resource (a Sternly check) and states the exact information returned, enumerating the status vocabulary (running, done, failed) and the result fields (headline, counts, depth, findings, evidence link). It also distinguishes itself from submit_claim_bundle by naming it as the source of the id, so an agent can separate the read step from the submit step 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: call this with the check id that submit_claim_bundle returned, and expect a result only once the status is done. That establishes the typical call sequence. It stops short of explicit exclusions or polling guidance (e.g. whether to re-call while running), so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_definitionsLook up the workspace's definitionsCRead-onlyIdempotentInspect
How the person's workspace defines its terms (each with its version, owner and the date it took effect). Give the definition as it is; do not change it.
| Name | Required | Description | Default |
|---|---|---|---|
| terms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, and non-destructive, so the safety profile is covered and the description's "do not change it" is largely redundant. What the description does add is the shape of the result (version, owner, effective date), which is genuinely useful context beyond the annotations, but it says nothing about behavior for terms that do not exist or whether omitting the argument returns the whole workspace.
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 with no filler, and the substantive content (the returned metadata) comes first. The opening fragment is slightly awkward but costs little.
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 and zero schema description coverage, the description carries most of the burden, yet it omits the behavior of the only parameter and the response for unknown or missing terms. It covers the tool's purpose and result fields but leaves the agent guessing at the actual call 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?
There is one optional parameter (terms, an array of strings capped at 50) with 0% schema description coverage, so the schema itself explains nothing about intended input. The description implies term lookup but does not say the parameter is a list of term names, nor what an empty or omitted value means.
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 conveys the content returned (workspace term definitions with version, owner, and effective date), but it opens with a noun phrase rather than a verb+resource statement of the action. It never distinguishes itself from the sibling propose_definitions, which is the closest-looking alternative and the one an agent is most likely to confuse it with.
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?
There is no guidance on when to call this versus get_check, propose_definitions, or submit_claim_bundle. The only usage-adjacent sentence, "Give the definition as it is; do not change it," is an instruction about handling the result, not a routing rule, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_definitionsPropose a definition to the workspaceBInspect
Send a definition the person wants to add, in their words, to the workspace, where a person approves it before it is used. Nothing proposed here takes effect by itself.
| Name | Required | Description | Default |
|---|---|---|---|
| definitions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent write, and the description adds meaningful context beyond that: proposals require human approval and nothing takes effect immediately. It still omits what happens on a duplicate term and what the proposer sees back, which matters given idempotentHint=false.
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 with the approval constraint front-loaded alongside the action. The second sentence largely restates the first's approval clause, so it is slightly redundant rather than maximally economical.
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 and the annotations cover only the safety profile, so the description should carry the full behavioral burden. It covers the staging/approval model well but leaves batch limits, duplicate handling, and the post-call state unexplained.
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% for a single required parameter that is an array of nested objects with term, definition, and note fields. The phrase 'in their words' usefully signals verbatim capture, but the description never explains the term/definition/note roles or the 20-item cap.
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 ('send a definition ... to the workspace') plus the outcome (human approval before use). It is clearly a write-to-staging operation, distinguishable from the read-oriented siblings get_definitions and get_check, though it never names those siblings explicitly.
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 approval workflow implies when to use it (capturing a person's own definition for review), but there is no explicit when-to-use or when-not-to-use guidance and no reference to get_definitions or submit_claim_bundle as alternatives. The agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_claim_bundleCheck finished work with SternlyAInspect
Hand finished work to Sternly for an independent check after the fact. Send the final text exactly as the person received it, what the person asked for in their own words, and the files, sources and programs you already used, with what each program printed. Send the work as it is: do not rewrite, shorten or add to it for Sternly, and do not mark which part came from where; Sternly reads the work itself. When the work is someone else's (the other side's brief, a filing before the court), say so in policy.mode, and name a producer only if you know who made it. Returns a check id and a link to give the person; get_check returns the result. With wait set to false, Sternly answers at once with the status running, and the check goes on.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| wait | No | When the answer comes. false: at once, with the check id and the status running, while the check goes on; get_check then returns the status and, once the check is done, its result. true: when the check is done. | |
| files | No | ||
| notes | No | ||
| layout | No | ||
| policy | No | The only part of a bundle that chooses what runs: closed enums and bounded numbers. `mode` is one of the enums and chooses nothing that runs: it names whose work this is, for the result's words (`capture/modes.py`). | |
| capture | No | How the work reached Sternly, and what the channel could not see (recorded in the package; it lowers grades). | |
| request | No | ||
| sources | No | ||
| producer | No | Who made the work. `vendor` decides independence: the judges are never from the producer's vendor. It is the maker of the producer's model (the lab), never where it was served. | |
| programs | No | ||
| tool_log | No | ||
| bundle_version | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the return contract (a check id and a link to give the person), the async behavior with wait=false, and the integrity rules ('do not rewrite, shorten or add to it', 'do not mark which part came from where'). That is meaningful behavior an agent cannot read off readOnlyHint/destructiveHint. It does not mention idempotency_key, which matters given idempotentHint=false.
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?
Front-loaded with the core action, then integrity rules, then mode/producer, then return and wait semantics — a sensible ordering. A few clauses are dense ('do not mark which part came from where; Sternly reads the work itself'), but nothing 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?
For a 14-parameter tool with no output schema and 29% coverage, the description covers the required path and the return value but leaves several nested structures (layout, capture, tool_log, notes) unaddressed. An agent can make a valid minimal call, but the richer bundle fields require reading the schema.
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 only 29% schema coverage across 14 parameters, the description carries real weight: it maps text, request ('what the person asked for in their own words'), files, sources, programs with printed output, policy.mode and producer to their purpose. It also constrains producer ('name a producer only if you know who made it'). notes, layout, capture, tool_log and idempotency_key remain 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 states a specific verb and resource: hand finished work to Sternly for an independent check. It also distinguishes itself from the sibling by saying 'get_check returns the result', so an agent knows this is the submission step, not the retrieval step.
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?
'after the fact' and 'finished work' bound when to call it, and get_check is named as the follow-up. It also tells the agent when to set wait=false. It stops short of explicit exclusions (e.g. not for work in progress), so it is clear context rather than full when/when-not guidance.
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.
4 tool updates
- First observed
get_check - First observed
get_definitions - First observed
propose_definitions - First observed
submit_claim_bundle
Related MCP Connectors
Independent, signed check of AI work: math, quotes, sources, links, code. Public verifiable log.
Free mechanical checks for AI text: unnamed counts, dangling references, bad arithmetic, misquotes.
Verifies AI agent work end to end: real artifacts and outcomes checked, not self-reported success.
Verify AI work against criteria and get signed receipts. From Spoolis, guarantees for AI work.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to inspect generated .docx and .pdf files before delivery, extracting structural, typographic, spacing, and language facts so formatting errors can be caught automatically.6MIT
- AlicenseNot gradedqualityDmaintenanceVerifies citations in reference lists by checking DOIs against public registries to catch AI-hallucinated or mismatched citations.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to run evidence QC gates mid-workflow—checking claims, sources, prose, and vault hygiene deterministically before research ships.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to obtain an independent review of their drafts, returning a pass/fail verdict with specific issues and suggested fixes, plus a signed receipt. Payments are made per check over x402, with no account or API key needed.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.