MachineWitness
Server Details
EU archive of the machine-readable web: check a domain, order a time-stamped record or extract.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- martinschenk/machinewitness-mcp
- GitHub Stars
- 0
- Server Listing
- MachineWitness
TDQS
Scored across 6 tools
Each tool has a distinct target: per-reference status, per-domain coverage lookup, and three order_* products with clearly different scopes (point-in-time record, historical extract, daily subscription). The three order_* tools share the identical 'create a payment link' framing and could be momentarily confused at a glance, but the descriptions spell out distinct inputs (addresses vs. domains vs. subscription) and refusal rules.
All six tools follow a strict verb_noun snake_case pattern: capture_status, check_coverage, order_capture, order_extract, order_observation, suggest_domain. No deviations in casing or style.
Six tools is well-scoped for a service offering three orderable products plus status, coverage and suggestion lookups. No filler tools and no obvious missing companion operation at this count.
The ordering and lookup surface is solid, but lifecycle gaps remain: there is no way to verify a delivered record or extract's seal/reference, no tool to list or retrieve one's own orders, and no operation to cancel the observation subscription even though cancellation semantics are described. Agents can work around these only via e-mail, which is a real dead end for programmatic verification.
Available Tools
6 toolscapture_statusStatus of a point-in-time recordARead-onlyIdempotentInspect
Where a point-in-time record stands, by its reference (MW-K-…): awaiting payment, queued, capturing, first delivery sent, complete. Per witness: waiting, capturing, captured, failed or refused. Never returns the e-mail address, the addresses ordered or anything else about the customer.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | The order reference, e.g. MW-K-3F9A2C1D. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered structurally; the description adds the closed-world state vocabulary (awaiting payment, queued, capturing, first delivery sent, complete, plus per-witness waiting/capturing/captured/failed/refused) and an explicit negative scope ('never returns the e-mail address, the addresses ordered or anything else about the customer'), which is genuinely useful context. It stops short of stating behavior on an unknown reference or stale record.
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 compact sentences, front-loaded with the resource and its state vocabulary, ending with the privacy boundary. The two enumerations are information-dense rather than padding, though the second ('Per witness: …') interrupts the flow slightly.
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 correctly takes on the burden of describing return values by enumerating both record-level and per-witness states, and it bounds what is not returned. It omits error/invalid-reference behavior and any indication of whether status can change over time (polling expectations), leaving a small gap for a point-in-time status 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?
Schema coverage is 100% and the single parameter carries its own description with an example, so the schema does the heavy lifting. The description restates the reference prefix (MW-K-…) but adds no format, validation, or sensitivity detail beyond the schema. 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?
The description states a specific resource (a point-in-time record) and the information returned (its status, keyed by reference), and enumerates the possible states, so the agent knows exactly what it gets back. It does not, however, distinguish itself from siblings such as check_coverage or order_capture, so an agent still has to infer the boundary. Clear purpose, no sibling differentiation.
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?
Usage is only implied: 'by its reference (MW-K-…)' signals a lookup keyed on an existing order reference, and the enumerated states imply a polling/monitoring use. There is no explicit when-to-use-this versus check_coverage or order_capture, and no stated preconditions. Minimum viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_coverageCheck whether a domain is observedARead-onlyIdempotentInspect
Answer whether this archive observes a given domain, from which sealed day onward, which machine-readable files it requests, and at what cadence. Returns metadata only — never the contents of any file, and never an assessment of the domain or its operator. 'Not observed' is a statement about this archive, not about the domain: most of the web is not observed.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | A domain name, for example example.eu. A pasted URL is accepted. |
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 value beyond that: it states the return is metadata only, never file contents, never an assessment of the domain or operator, and pre-empts misreading 'not observed' as a judgment about the domain. It does not mention auth or rate limits.
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 sentences, front-loaded with what the tool returns, followed by output-scope limits and a caveat about the meaning of a negative result. Every sentence carries information, though the opening sentence is long and packs four distinct facts into one clause chain.
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, so the description carries the burden of describing the return — and it does, listing sealed day, requested files, and cadence. Combined with the explicit statement that no file contents or judgments are returned, an agent has enough to call it correctly; only error/edge behavior (invalid domain, subdomain) is unaddressed.
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?
Only one parameter exists and schema description coverage is 100%, including the note that a pasted URL is accepted. The description adds no additional semantics about the domain argument (normalization, subdomain handling, IDN), so the schema does the work and the baseline of 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?
The description names a specific verb and resource — answering whether this archive observes a given domain — and enumerates the dimensions of the answer (sealed day, requested machine-readable files, cadence). It is unambiguous about what the tool does, but it never references or contrasts with siblings like capture_status or suggest_domain, so an agent gets no explicit routing signal.
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?
Usage is implied: this is the lookup to run when you want to know if a domain is in the archive. There is no explicit when-to-use/when-not guidance and no named alternative (e.g., suggest_domain for unobserved domains, order_capture to add one), so the agent must infer routing from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_captureOrder a point-in-time record of public addressesAInspect
Create a payment link for a point-in-time record: both witnesses fetch the named addresses, take a full-page picture of each, and give each capture its own qualified electronic time-stamp. Up to twenty public addresses, all on the same domain. Before the link is created, every address is checked at no charge: a public domain name, not on the stop list, robots.txt allows our crawler, and it answers without a login; refused addresses are named with the reason. This call charges nothing. The capture starts only after a person has paid on the returned page; the record is then delivered by e-mail, and a second e-mail follows after the night's seal. Only addresses are asked for, never a purpose. Fees: https://machinewitness.eu/services
| Name | Required | Description | Default |
|---|---|---|---|
| No | Delivery address, prefilled on the payment page. Optional; the page asks for it otherwise. | ||
| language | No | Language of the payment page and the e-mails. Default en. | |
| timezone | No | IANA time zone of the requester (e.g. Europe/Berlin) for the expected start time. Default Europe/Madrid. | |
| addresses | Yes | Full addresses (https://…), one to twenty, all on one domain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description goes well beyond them: no charge at call time, per-address refusal with named reason, delivery by e-mail plus a second e-mail after the night's seal, and the fact that no purpose is collected. That is exactly the behavioral context an agent needs and cannot get from structured fields.
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 purpose is front-loaded in the first sentence, but the paragraph is a single run-on stream with redundancy (address count/domain repeat the schema, and the fees URL is tacked on). The behavioral detail earns its place, but tighter sentence structure and removal of schema echoes would improve it.
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 carries the return burden and largely does so: a payment link page is returned, refused addresses are named with reasons, and results arrive by e-mail. It does not specify the exact return shape or error object, leaving a small gap for a mutating 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?
Schema description coverage is 100%, so the schema already documents email, language, timezone and addresses. The description's 'up to twenty public addresses, all on the same domain' and 'only addresses are asked for, never a purpose' largely restate the schema rather than adding format or constraint detail, so the 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?
The description states a specific verb and resource: 'Create a payment link for a point-in-time record' of named public addresses, with clear scope (up to twenty, one domain). It is not a tautology of the name/title. It does not explicitly differentiate itself from siblings like check_coverage, whose pre-validation role it silently absorbs, so it stops short of a 5.
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 strong usage context: the call charges nothing, validation happens automatically before link creation, and the capture only starts after a person pays on the returned page. However it never names an alternative tool or states when NOT to use this one, so the routing guidance against check_coverage/capture_status is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_extractOrder an evidence extract for observed domainsAInspect
Create a payment link for an evidence extract: everything this archive recorded on a domain, as one verifiable document (every observed day, every file type, both witnesses, with the seals and verification instructions). One to twenty domains. A domain this archive never observed is refused by name before the link is created, because there would be nothing to deliver; use check_coverage first. This call charges nothing. After a person has paid on the returned page, a confirmation with the reference follows at once and the extract is normally delivered by e-mail within five working days. Only domains are asked for, never a purpose or a matter. Terms: https://machinewitness.eu/extract · Fees: https://machinewitness.eu/services
| Name | Required | Description | Default |
|---|---|---|---|
| No | Delivery address, prefilled on the payment page. Optional; the page asks for it otherwise. | ||
| domains | Yes | Domain names, one to twenty, e.g. example.eu. | |
| language | No | Language of the payment page and the e-mails. Default en. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: the link creation itself charges nothing, payment happens on a returned page by a person, a confirmation with reference follows immediately, and delivery is normally by e-mail within five working days. It also discloses pre-call refusal behavior for unobserved domains, which annotations cannot express.
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 action and artifact, then prerequisites, cost, and fulfillment timing in a logical order. Slightly dense with some overlap between 'One to twenty domains' and 'Only domains are asked for,' but every sentence carries information.
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?
No output schema exists, yet the description explains what is returned (a payment link) and the downstream flow (payment, confirmation with reference, e-mail delivery in five working days), plus terms and fee URLs. An agent has everything needed to call and set expectations for the user.
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%, so the schema already documents email, domains, and language with defaults. The description restates the one-to-twenty domain bound (also in the schema) and rules out purpose/matter fields, adding scope clarity but no new syntax or format detail.
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 and resource — 'Create a payment link for an evidence extract' — and defines exactly what the artifact is: everything the archive recorded on a domain, every observed day and file type, both witnesses, with seals and verification instructions. It also implicitly separates itself from capture/observation siblings by stressing it delivers what was already recorded and that 'only domains are asked for, never a purpose or a matter.'
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 an explicit prerequisite ('use check_coverage first') and a when-not condition (a never-observed domain is refused by name). It stops short of naming the sibling tools an agent might confuse this with (order_capture, order_observation), so the routing guidance is clear but not fully disambiguating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_observationSubscribe domains to daily observationAInspect
Create a payment link for the daily observation of domains, as a yearly or monthly subscription: from admission, within five working days of payment, two independent witnesses record each domain every day in full (homepage and the machine-readable files), seal each day and anchor it externally; the admission is entered in the public record. The customer pays for the measurement, not for a document: the data in hand is an evidence extract (order_extract). A domain already observed daily in the core is refused by name, because it costs nothing. On cancellation the subscription ends with the paid period and everything witnessed until then stays sealed. This call charges nothing; the subscription starts only after a person has paid on the returned page. Fees and tiers: https://machinewitness.eu/services
| Name | Required | Description | Default |
|---|---|---|---|
| No | Address for confirmations, prefilled on the payment page. Optional. | ||
| domains | Yes | Domain names, one to 500, e.g. example.eu. | |
| interval | No | Billing interval. Default year. | |
| language | No | Language of the payment page and the e-mails. Default en. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply a fair safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), but the description adds meaningful behavior: this call charges nothing, the subscription begins only after a human pays on the returned page, already-observed domains are refused, and cancellation preserves sealed records. That is real context beyond the structured fields.
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 purpose is front-loaded and most sentences carry operational information, but the body is a dense wall of semicolon-linked narrative that blends service marketing with policy. It is longer and less structured than the operational content requires.
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, but the description covers what the agent most needs: that the call itself is free and only produces a payment link, and that the subscription is gated on later human payment. Combined with full annotation and schema coverage, this is close to complete for a 4-parameter ordering 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?
Schema description coverage is 100%, so the schema already documents domains, email, interval, and language (including enum values and defaults). The description adds no per-parameter syntax or format guidance, so the 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?
The opening states a specific verb and resource: 'Create a payment link for the daily observation of domains... yearly or monthly subscription.' It also references the sibling order_extract as the eventual deliverable, giving the agent a partial sense of where this fits. It does not, however, explicitly distinguish itself from order_capture.
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?
Usage is implied rather than stated: the agent can infer this is the subscription/ordering path and that order_extract is the extract, but there is no explicit 'use this when... / use order_capture instead when...'. A genuine exclusion is present ('A domain already observed daily in the core is refused by name'), which slightly lifts it above pure inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_domainSuggest a domain for observationAInspect
Suggest that a domain be observed. This is a request, not an instruction: admission follows documented criteria (a connection to the European Union, publicly served machine-readable files) and is decided by the operator. The answer is always 'received' with 'guarantee: none' — it creates no obligation to observe the domain, no timeline, and no assurance that it will be added. A reason is required and is read by a person.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Reply address. Used to answer the suggestion and nothing else. | ||
| domain | Yes | The domain to suggest. | |
| reason | Yes | Why this domain should be observed. Written for a human reader; a sentence or two is enough. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: it discloses that the call creates no obligation, no timeline, and no assurance of addition, that the response is always 'received' with 'guarantee: none', and that a human reads the reason. This is exactly the kind of non-obvious behavioral context the annotations cannot convey.
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?
Four sentences, front-loaded with the core action, then the request-not-instruction framing, then the outcome. Every sentence carries distinct information with no repetition.
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 having no output schema, the description fully describes the return ('received', 'guarantee: none') and the downstream process, so an agent knows both what to send and what to expect.
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 baseline is 3, but the description adds meaning the schema lacks: the reason is required and is read by a person, framing it as human-facing prose rather than a machine field.
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 ('suggest that a domain be observed') and frames the action as a non-binding request. It implicitly separates itself from order_capture, but never names the sibling or explicitly contrasts the two.
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?
Explains what happens after the suggestion (criteria, operator decision) but never says when an agent should prefer this over order_capture or the other siblings. Usage is implied rather than stated.
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.
2 tool updates
- Added
order_extract - Added
order_observation
4 tool updates
- First observed
capture_status - First observed
check_coverage - First observed
order_capture - First observed
suggest_domain
Related MCP Connectors
Common Crawl's public web archive — find every time a URL was crawled since 2008 and read the…
Wayback Machine for agents: closest archived copy of a URL with its text, and full capture history
Parsed WHOIS, RDAP, DNS, certificates, nameservers and domain history for any domain.
Pay-per-call web intelligence MCP: fetch pages, check links, detect changes, verify claims.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for the Internet Archive's Wayback Machine. Search archived snapshots, extract page text from a specific date, track how a site has changed over time, check if broken links are recoverable, and perform research across Internet Archive collections.633 PyPI3MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching Common Crawl's web archive for crawl history of any URL since 2008. It also retrieves the exact captured page bytes from the archived records.34 npmMIT

siteglass-mcpofficial
AlicenseNot gradedqualityCmaintenanceEnables archival of any public URL as interactive snapshot (rrweb, PDF, PNG) and autonomous web QA for apps (register, scan, generate and run end-to-end flows).26 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables agents to retrieve the closest archived snapshot of a URL with extracted page text, and to query the complete capture history for a URL, prefix, host, or domain, with fallback to Common Crawl.4 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.