Skip to main content
Glama

halowerk-mcp

70 paid APIs as MCP tools. No account, no login, no subscription — a throwaway wallet with a few dollars is enough.

Your spend is capped before anything is signed:

Variable

Default

What it does

HALOWERK_MAX_PREIS_USDC

0.05

Ceiling per call. A more expensive service is refused, not silently bought.

HALOWERK_BUDGET_USDC

1.00

Ceiling per session. Once reached, the server refuses further calls.

HALOWERK_TROCKEN

off

Dry run: returns the price and the call plan, pays nothing.

Every paid answer carries bezahlt_usdc, budget_rest_usdc and the transaction hash, so the model and you see the same numbers.


Try it without a wallet

Two tools work with no wallet and cost nothing: halowerk_katalog lists every service with its price, and halowerk_preis tells you what a planned call would cost. Install it, browse, decide later.

{
  "mcpServers": {
    "halowerk": { "command": "npx", "args": ["-y", "halowerk-mcp"] }
  }
}

That goes in your Claude Desktop config (claude_desktop_config.json), Cursor's mcp.json, or Cline's MCP settings.

Related MCP server: UnifyAPI

Paying for calls

{
  "mcpServers": {
    "halowerk": {
      "command": "npx",
      "args": ["-y", "halowerk-mcp"],
      "env": {
        "HALOWERK_PRIVATE_KEY": "0x…",
        "HALOWERK_MAX_PREIS_USDC": "0.05",
        "HALOWERK_BUDGET_USDC": "1.00"
      }
    }
  }
}

Payment is x402 with USDC on Base. There is no account to create, no card, no invoice: the call carries a signed authorisation for the exact amount, and the service settles it.

Use a throwaway wallet

Create a fresh wallet, put a few dollars of USDC on it, use it for nothing else.

Not because this package is untrustworthy — because you have no reason to trust it yet. A key in an MCP config is a key that a model-driven process can reach. The way to make that safe is not to trust the code but to make the blast radius small: if the wallet holds three dollars, three dollars is the worst case.

You do not need ETH for gas. Payment uses EIP-3009 transferWithAuthorization, so a third party submits the transaction. A balance of exactly 0 ETH is normal and correct.

What the code does with your key

  • It is read from HALOWERK_PRIVATE_KEY and from nowhere else — no file, no argument, no prompt.

  • It is never logged, never put in an error message, never returned in an answer, not even truncated. There is a test for this: npm run pruefe searches the entire output for the first eight characters of a key and fails if it finds them.

  • src/x402.ts is about 300 lines and is the only file that touches it. It is meant to be read in five minutes.

Where your money can go

The server only ever pays the ten hosts baked into the catalogue at build time. The list is frozen in the package; it cannot be extended by a file, an environment variable or a tool argument.

This is the point of the whole design. A tool that accepts an arbitrary URL and pays for it is a payment instruction with a blank payee field. A model that reads a web page, a PDF or an email can be told, by that text, to call such a tool with an attacker's address. So:

  • The target host must match the built-in list exactly. No suffix comparison — halowerk.com.attacker.example passes any endsWith check and is a different host.

  • https only. Redirects are not followed: a 301 to a foreign host is the attack, not an inconvenience.

  • No IP addresses, no localhost, no private ranges.

  • On violation: refusal with the reason, before anything is signed.

halowerk_rufe_auf takes a tool name from the catalogue, never a URL.

Modes

Seventy tools at once makes the tool picker worse for everybody, especially if you have other MCP servers connected. So:

HALOWERK_MODUS

Tools

For

hero (default)

12 services + the 2 free ones

Everyday use

gateway

3 meta-tools + the 2 free ones

Minimal context; two extra round trips

all

70 services + the 2 free ones

You know what you want

In gateway mode: halowerk_suche finds a service by description, halowerk_beschreibe returns its input schema, halowerk_rufe_auf executes it.

Why these twelve

One measure only: what does an agent need more than once in the same task? A tool used once per session can be looked up; one used ten times belongs in the toolbox. All twelve are also text in, text out — in a chat window, a tool that needs a file upload first is close to unusable.

Tool

Repeats because

cost_estimate

before every model call

output_validate

after every model answer

tool_arg_validate

before every expensive or irreversible call

state_store

across every step of a long task

cve_check

per dependency list, and you look at it more than once

license_check

same audit, per package set

tls_chain

per host in an infrastructure check

jwt_verify

per token while debugging auth

webhook_signature

per webhook while debugging an integration

doc_diff

per file pair in a review

web_archive

per URL in a research task

invoice_audit

per invoice in a batch

Tiered prices — read this before you set a budget

Some services bill per unit: per audio minute, per 1000 characters, per sample point. For those, price_usdc is only the minimum.

The budget check therefore uses max_usdc, the ceiling. Checking against the minimum would approve 0.006 and pay 0.25 — the endpoint bills by length, and the length is in the request body, not in the catalogue.

If a service has no ceiling at all, it counts as unbounded and is not called without unbegrenzt_erlauben: true. A budget that checks against an unknown amount is not a budget.

What this package is not

  • It is not a wallet manager. It signs payments; it never moves funds anywhere else.

  • It does not create or store keys.

  • It does not phone home. The only outbound requests go to the ten catalogue hosts.

  • The catalogue is generated from the live services and shipped with the package. It is not fetched at runtime, so a compromised server cannot add itself to your allowlist between calls.

Development

npm run katalog   # regenerate katalog.json from the live services
npm run build     # compile TypeScript
npm run pruefe    # modes, spending brakes, attack tests, key-leak test

katalog.json is generated. Never edit it by hand — regenerate and republish, otherwise the package promises a price the service does not charge.

License

MIT. See LICENSE.

Available Tools

14 tools
cost_estimateHALOWERK: Estimate token use and price for a prompt across several models before you spendA
Read-only

Estimate token use and price for a prompt across several models before you spend anything, including cache and batch discounts.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Works out what a call would cost. Give either the text itself or a token count, plus the expected output length, and get input, output, cache-read and cache-write cost per model with the total. Token counts derived from text are estimates from character and word statistics, not a tokeniser, and typically land within about 15 percent — where an exact count matters, count with the vendor tokeniser. Prices come from a table with a stated date; a model whose price has moved since is reported with its table date, so an old figure is visible rather than silently wrong. Unknown model names are refused with the closest matches rather than guessed. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoThe prompt text. Either this or input_tokens.
batchNoApply the batch discount where the model has one.
callsNoNumber of identical calls to multiply by.
modelsNoModel ids to price. All known models if omitted.
input_tokensNoKnown input token count. Either this or text.
output_tokensNoExpected output length in tokens.
cached_input_tokensNoOf the input tokens, how many are served from cache.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the annotations. It discloses estimation methodology and accuracy ('estimates from character and word statistics, not a tokeniser, and typically land within about 15 percent'), pricing table staleness ('a model whose price has moved since is reported with its table date'), and unknown-model handling ('refused with the closest matches rather than guessed'). This is rich behavioral context beyond the safety hints.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and well-structured English text. However, it repeats the German pricing information at both the beginning and end ('Kostenpflichtig: 0.002 USDC je Aufruf...' and 'Preis 0.002 USDC je Aufruf...'), which is redundant and adds ~30 unnecessary words. Otherwise, every sentence carries useful information, so it's only slightly over-length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, all-optional tool with no output schema, the description provides a complete picture: what it does, what inputs to provide (text or token count, output length, cache/batch), what outputs to expect (input, output, cache-read, cache-write cost per model with total), accuracy caveats, pricing table date, unknown-model refusal, and the per-call fee. This is comprehensive and leaves no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the either/or relationship between 'text' and 'input_tokens' ('Give either the text itself or a token count'), the role of 'output_tokens' ('plus the expected output length'), and the cache/batch discounts tied to 'cached_input_tokens' and 'batch'. It doesn't mention 'calls' or 'models' explicitly, but the schema already covers those, so the added value justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource phrase: 'Estimate token use and price for a prompt across several models before you spend anything.' It clearly distinguishes itself from siblings by focusing on pre-spend estimation of token counts and costs, including cache and batch discounts. The second sentence 'Works out what a call would cost' reinforces the unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool ('before you spend anything') and provides input instructions ('Give either the text itself or a token count, plus the expected output length'). It also gives an explicit alternative for exact counts: 'where an exact count matters, count with the vendor tokeniser.' This meets the bar for when/when-not guidance with an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cve_checkHALOWERK: Check a package list against known vulnerabilities and get, per package, the sevA
Read-only

Check a package list against known vulnerabilities and get, per package, the severity breakdown and the lowest version that closes every finding.

Kostenpflichtig: 0.005 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.005 USDC je Aufruf.

Queries OSV.dev for a list of packages with versions across npm, PyPI, Go, Maven, crates.io, NuGet, RubyGems, Packagist and the Linux distributions. For each package it returns the vulnerabilities found with their identifiers, severity and summary, and the single figure that decides what to do next: the lowest version that fixes all of them, derived from the fixed-version events in the affected ranges. Findings are counted by severity and the whole list gets one worst-case verdict so a pipeline can gate on it. Severity is read from several places because databases disagree on where they put it, and the source of the rating is reported. OSV records what is published — a package with no finding is not proven safe, only unreported, and an internal or vendored package is invisible here. Preis 0.005 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesYesThe packages to check.
ecosystemNoDefault ecosystem for entries that do not name one.
min_severityNoOnly report findings at or above this severity.
include_detailsNoFetch summary and severity per finding. Off is faster but returns ids only.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses meaningful behavior: it queries OSV.dev, aggregates severity from multiple sources, reports a worst-case verdict, and includes pricing via x402. It also openly states that absence of findings does not prove safety—an important caveat not visible in annotations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then provides thorough details. However, the pricing information is repeated twice (once in German, once again), making it slightly redundant. The length is justified by the complexity of the tool, but the repetition prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description does an excellent job explaining return values: vulnerability identifiers, severity, summary, lowest fixing version, severity breakdown, and a worst-case verdict. It also covers the data source and limitations, giving the agent all necessary context for decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all parameters. The description adds some context by implying the 'packages' parameter can include versions, but it does not detail the exact format or relationships. This matches the baseline for high coverage without significant added semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the tool's function: 'Check a package list against known vulnerabilities and get, per package, the severity breakdown and the lowest version that closes every finding.' This is a specific verb+resource with clear outputs, and it distinguishes the tool from siblings like license_check or tls_chain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context on when to use the tool by listing supported ecosystems (npm, PyPI, etc.) and stating limitations: 'a package with no finding is not proven safe' and 'an internal or vendored package is invisible here.' These are implicit usage guidelines, but no explicit alternatives are named, so it misses a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doc_diffHALOWERK: Compares two versions of a document — PDF, DOCX, ODT, HTML, Markdown or plain teA
Read-only

Compares two versions of a document — PDF, DOCX, ODT, HTML, Markdown or plain text — and returns which paragraphs were removed, added or reworded, with a word-level diff inside every reworded paragraph and a symmetric similarity score.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Takes two documents, by URL, inline base64 or raw text, extracts the text of each and compares them. Paragraphs are the unit: the answer lists every block that was removed, added, or kept but reworded, and for reworded blocks it names the individual words that went and came, so a single changed number in a long clause is visible instead of the whole clause being flagged. Alongside the content diff a structural comparison reports headings, paragraph, list and table-line counts on both sides. The similarity score is deliberately symmetric — two times the shared words divided by the sum of both lengths — because a one-sided measure would rate a heavily shortened document as almost unchanged. Both sides are measured the same way over the same units; if the two inputs arrive in different formats, so that one text comes out of a PDF and the other out of a DOCX, that is reported as a caveat, because part of any structural difference then comes from the extraction path and not from the documents. Ordering and duplicate paragraphs are handled by a shortest-edit-script diff, not by set comparison. What this endpoint does not do is judge: it says what changed, never whether the change is favourable, material or lawful. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesThe earlier version. Exactly one of url, content_base64 or text.
bYesThe later version. Same shape as a.
ignore_caseNoCompare case-insensitively.
block_char_limitNoLonger block texts are shortened in the answer; the diff itself always runs on the full text.
ignore_whitespaceNoTreat runs of spaces and tabs as one space before comparing.
include_unchangedNoAlso list the unchanged blocks. Off by default — the changes are the answer.
max_blocks_returnedNoCeiling on returned blocks. What is dropped is counted and reported, never silently cut.

TDQS

A4.3/5.0
Behavior5/5

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

The description provides rich behavioral detail beyond the annotations: paragraph-level unit of comparison, word-level diffs for rewrites, symmetric similarity score formula, use of shortest-edit-script diff for ordering/duplicates, reporting of structural counts, and the caveat about different source formats. It also discloses the pricing model (0.002 USDC per call via x402), which is critical operational context. This far exceeds what readOnlyHint/openWorldHint/destructiveHint provide.

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

Conciseness3/5

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

The description is front-loaded with a strong first-sentence overview but becomes repetitive. The pricing information appears twice: once in German ('Kostenpflichtig: 0.002 USDC je Aufruf...') and again in English ('Preis 0.002 USDC je Aufruf, Abrechnung über x402.'). This redundancy inflates the length without adding value. Other sentences earn their place, but the duplicate pricing could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description does an excellent job of explaining what the response will contain: lists of removed/added/reworded blocks, word-level changes within reworded blocks, structural counts, and a similarity score. It also covers algorithm choices, edge cases (different input formats), and limitations (no judgment). This is complete enough for an agent to invoke the tool and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all 7 parameters with descriptions (100% coverage). The tool description adds no parameter-specific semantics beyond what the schema states: e.g., it doesn't elaborate on ignore_case or block_char_limit, but the schema's descriptions are clear. It does provide conceptual background (paragraph vs block) that indirectly helps understand parameters, but no direct enhancement. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement: 'Compares two versions of a document — PDF, DOCX, ODT, HTML, Markdown or plain text — and returns which paragraphs were removed, added or reworded, with a word-level diff inside every reworded paragraph and a symmetric similarity score.' This names the resource (documents), the operation (compare), and the output format, clearly distinguishing it from sibling tools like cve_check or license_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool is for and what it explicitly does NOT do: 'What this endpoint does not do is judge: it says what changed, never whether the change is favourable, material or lawful.' It also warns about the caveat when inputs come from different formats. While it doesn't name alternatives, the purpose is so specific and the sibling tools are so different that usage context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

halowerk_katalogHALOWERK: Dienste auflistenA
Read-only

Lists every HALOWERK service with its price, hub and one-line summary. Free — no wallet needed and no payment is made. Use this first to see what is available before spending anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
hubNoOnly this hub, e.g. sicher, modell, medien, buero.
sucheNoOnly services whose name or description contain all these words.
hoechstpreis_usdcNoOnly services whose maximum price per call is at or below this.

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it explicitly states 'Free — no wallet needed and no payment is made,' which is not covered by readOnlyHint=true. It also reveals that the tool returns a listing with specific fields. This is valuable contextual information that annotations don't provide.

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

Conciseness5/5

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

The description is three sentences, each earning its place: the first states the core purpose, the second clarifies cost-related behavior, and the third provides usage order guidance. It's front-loaded and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with no output schema, the description provides adequate context: it lists the fields returned (price, hub, one-line summary), confirms it's free, and advises when to use it. It doesn't fully differentiate from sibling tools but covers the essentials for an agent to decide whether to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed descriptions for all three parameters (hub, suche, hoechstpreis_usdc) with 100% coverage. The description does not add any additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists every HALOWERK service with price, hub, and one-line summary. It uses a specific verb and resource, and the phrase 'every HALOWERK service' gives scope. It doesn't explicitly distinguish from sibling tools like halowerk_preis, but the intent is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance: 'Use this first to see what is available before spending anything.' This tells the agent when to use the tool (before making purchases) but doesn't name alternatives or explicitly state when not to use it. It gives clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

halowerk_preisHALOWERK: Preis vorabA
Read-only

Returns what a planned call would cost, which amount the budget check uses, and whether it would pass the per-call cap and the session budget. Free — makes no payment. For tiered prices this reports the ceiling, not the minimum.

ParametersJSON Schema
NameRequiredDescriptionDefault
koerperNoThe intended request body. Optional; the estimate does not depend on it.
werkzeugYesTool name from halowerk_katalog.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds substantial behavioral context: it makes no payment, reports the ceiling rather than minimum for tiered prices, and specifies which amount the budget check uses. These are non-obvious traits that an agent would not know from annotations alone.

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

Conciseness5/5

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

The description is three sentences, front-loaded with purpose, and every sentence adds unique value: cost return, budget check, free/no payment, and ceiling behavior. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains return values (cost, budget check amount, pass/fail) and key constraints (free, ceiling). The tool is simple with two params and annotations cover safety; the description is complete for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add further parameter-level detail; it only mentions 'planned call' and 'tiered prices,' which are behavioral rather than param-specific. The schema already documents werkzeug and koerper adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns planned call cost, the budget check amount, and pass/fail status against per-call cap and session budget. It uses a specific verb 'Returns' and resource, and distinguishes itself by noting it is free and reports the ceiling for tiered prices, separating it from siblings like cost_estimate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: checking cost and budget feasibility before making a call. It implies alternatives by stating 'Free — makes no payment,' but it does not explicitly name when not to use it or mention sibling tools, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_auditHALOWERK: Recompute an invoice from its line items: totals, tax per rate, discounts and roA
Read-only

Recompute an invoice from its line items: totals, tax per rate, discounts and rounding, and report every deviation with the exact amount.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Rebuilds an invoice from its lines and compares the result with the stated totals. Line by line it checks quantity times unit price against the line total, applies line and document discounts in the right order, groups the net amounts by tax rate and computes the tax per group, then compares net, tax and gross with what the document claims. All arithmetic runs in whole cents, because adding decimal amounts as floating point produces cent-level noise that reads like an error by the issuer when it is an error by the checker. Rounding differences up to one cent per tax group are reported separately from real discrepancies. It also checks the formal side: a due date before the invoice date, a tax rate that is not one of the country standard rates, a negative line without a credit-note marker, and a missing VAT number where the reverse charge is claimed. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesYesThe invoice lines.
countryNoCountry whose standard rates the tax rates are checked against.
currencyNo
due_dateNoDue date as YYYY-MM-DD.
stated_netNoNet total as stated on the invoice.
stated_taxNoTax total as stated.
invoice_dateNoInvoice date as YYYY-MM-DD.
stated_grossNoGross total as stated.
reverse_chargeNoWhether the invoice claims the reverse charge.
default_tax_rateNoTax rate for lines that do not carry one.
customer_vat_numberNoCustomer VAT number, required for the reverse charge.
document_discount_pctNoDiscount on the whole document, applied after line discounts.

TDQS

A4.3/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by disclosing computation methodology: 'All arithmetic runs in whole cents, because adding decimal amounts as floating point produces cent-level noise' and explains formal checks like due date, tax rates, negative lines, and VAT. This provides rich behavioral context that annotations alone do not cover.

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

Conciseness3/5

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

The description is long and contains redundant pricing statements: 'Kostenpflichtig: 0.002 USDC je Aufruf...' near the beginning and 'Preis 0.002 USDC je Aufruf' at the end. While the content is organized with a clear summary, methodology, and formal checks, the repetition and mixed languages make it less concise than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description carries the burden of explaining return values. It says 'report every deviation with the exact amount' and mentions reporting rounding differences separately, but it does not describe the output structure (e.g., a list of discrepancies, fields returned). This is a significant gap for a complex tool with 12 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 92%, the baseline is 3. The description adds operational meaning by explaining how parameters are used: 'applies line and document discounts in the right order, groups the net amounts by tax rate' and checks due_date, invoice_date, reverse_charge, customer_vat_number. It explains the interaction between parameters beyond the schema field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Recompute an invoice from its line items: totals, tax per rate, discounts and rounding, and report every deviation with the exact amount.' It uses a specific verb ('recompute') and resource ('invoice') with clear scope. It distinguishes itself from sibling tools like cost_estimate or output_validate by focusing on invoice auditing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for verifying invoice correctness with details of checks performed, providing clear context. However, it does not explicitly state when not to use this tool or mention alternatives. Since the context is clear and there are no exclusions, it meets the 'clear context, no exclusions' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jwt_verifyHALOWERK: Verify a JWT signature and claims, and name the classic token attacks explicitlyA
Read-only

Verify a JWT signature and claims, and name the classic token attacks explicitly: alg none, HMAC confusion, unbounded lifetime, missing audience.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Decodes a JWT and checks it in two layers. Structure and claims: expiry, not-before and issued-at against the current time with the clock skew you allow, issuer and audience against the values you expect, and the token lifetime. Signature: HMAC with a shared secret, or RSA, RSA-PSS and ECDSA against a PEM key or a JWKS you point at, with the kid matched to the right key. On top of that it names the attacks that live in this exact spot: alg set to none, an HMAC algorithm where an asymmetric key is expected which is the classic key-confusion path, a token with no expiry at all, and an audience that does not name you. Without a key or secret the token is decoded and its claims judged, and the signature is reported as unverified rather than assumed good. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesThe JWT in compact form.
secretNoShared secret for HS256/384/512.
jwks_urlNoJWKS endpoint; the key is picked by kid.
public_key_pemNoPEM public key for RS/PS/ES algorithms.
expected_issuerNoIssuer the token must carry.
expected_audienceNoAudience the token must name.
clock_skew_secondsNoTolerance for exp and nbf.
max_lifetime_secondsNoFlag tokens valid for longer than this.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds valuable behavioral disclosures: the two-layer check (structure/claims and signature), the per-call cost of 0.002 USDC via x402, and the behavior when no key is provided. It also explains that it reports unverified signatures rather than failing or assuming success. No contradiction with annotations.

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

Conciseness2/5

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

The description is overly verbose and redundant, repeating the pricing information three times (Kostenpflichtig, Hoechstens, and final Preis lines). While the purpose is front-loaded, the repeated German pricing paragraphs and lengthy explanation detract from overall conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no output schema, the description is fairly complete: it specifies claim checks (exp, nbf, iat, issuer, audience, token lifetime), signature algorithms (HMAC, RSA, RSA-PSS, ECDSA), JWKS handling, and the no-key case. It does not explicitly describe the return format, but the level of behavioral detail largely compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all 8 parameters (100% coverage), so the baseline is 3. The description's references to 'clock skew you allow' and 'kid matched to the right key' are helpful but largely paraphrase the schema descriptions. It adds minimal new semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Verify a JWT signature and claims' and explicitly names the classic token attacks (alg none, HMAC confusion, unbounded lifetime, missing audience). This clearly separates it from siblings like cve_check or webhook_signature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool (any JWT verification task) and even adds a nuance: without a key, it decodes and judges claims but reports the signature as unverified rather than assuming good. However, it does not mention alternatives or exclusions compared to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

license_checkHALOWERK: Resolve package licences and classify them for commercial use: which force disclA
Read-only

Resolve package licences and classify them for commercial use: which force disclosure, which only need attribution, and which are unknown.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Looks up the declared licence of each package through deps.dev and sorts the result by the only question that matters for a closed, sold product: what does this licence demand. Permissive licences need attribution. Weak copyleft affects changes to the library itself. Strong copyleft can force disclosure of the whole work on distribution. Network copyleft such as AGPL and SSPL bites on operating the software as a service, which is the sharpest case for a paid API. Multi-licence expressions are handled by their operator — with OR the mildest applies because you may choose, with AND the strictest does. Packages whose licence is undeclared or outside the table are reported as unknown instead of assumed harmless. This is a classification to triage with, not legal advice, and the licence deps.dev records is what the package declared, which is not always what its files say. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
usageNoHow you use the code. saas = operated as a network service, which is what triggers AGPL.
packagesYesPackages to check.
ecosystemNoDefault ecosystem.

TDQS

A4.2/5.0
Behavior5/5

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

The description richly discloses behavior beyond annotations: how multi-license expressions are handled (AND/OR), unknown licenses are reported as 'unknown' rather than harmless, the data source (deps.dev) and its limitation, and a disclaimer that it is not legal advice. It aligns with readOnlyHint/openWorldHint and adds substantive context.

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

Conciseness3/5

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

The description is informative but verbose, with redundant pricing statements (mentioned twice in German) and a mixed English/German structure. The opening purpose is front-loaded, but the repetition and extra pricing details detract from conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides extensive behavioral context and limitations, covering classification logic, unknown handling, and disclaimers. However, with no output schema, it does not explicitly describe the return format or structure, leaving a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description indirectly references the 'usage' parameter by explaining network copyleft (AGPL) implications, but does not add syntax-level detail beyond the schema for packages or ecosystem. No significant added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Resolve package licences and classify them for commercial use' with specific categories (disclosure, attribution, unknown). This distinguishes it from sibling tools like cve_check and tls_chain, which address different concerns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context for when to use the tool: for a 'closed, sold product' and evaluating what each license demands. It explains scenarios (permissive, weak copyleft, strong copyleft, network copyleft) but does not explicitly state exclusions or alternatives to other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

output_validateHALOWERK: Check a model answer against a JSON schema and get every deviation named in plaiA
Read-only

Check a model answer against a JSON schema and get every deviation named in plain language with its path, plus whether the JSON was wrapped in prose or a code fence.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Validates output against a JSON Schema and reports each violation with its JSON path, the rule it broke and a sentence saying what to change. Accepts either a parsed object or the raw string a model returned: a payload wrapped in a code fence or surrounded by prose is unwrapped, and the wrapping is reported separately from schema errors so you fix the right layer. Draft 2020-12 and draft-07 are both supported, along with the common string formats. Optionally the repairable problems are listed: missing fields that have a default, and unexpected extra fields. It validates structure, never truth — a document that satisfies the schema perfectly can still be factually wrong, and nothing here checks that. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNoThe model answer, as a parsed JSON value. Either this or output_text.
schemaYesJSON Schema to validate against.
all_errorsNoReport every violation instead of stopping at the first.
output_textNoThe raw answer as text. Code fences and surrounding prose are stripped.
suggest_repairsNoList repairable problems (defaultable missing fields, extra fields).

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the read-only/no-destructive annotations, the description discloses paid usage via x402 (0.002 USDC per call), support for multiple JSON Schema drafts, separate reporting of wrapping vs schema errors, and optional repair suggestions. This adds significant behavioral context not present in annotations.

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

Conciseness3/5

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

The description is front-loaded with a strong purpose statement, but pricing information is repeated twice, once in English and twice in German, adding redundancy. The extra German paragraph does not earn its place, though the rest is well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input modes, unwrapping behavior, schema draft support, repair options, limitations, and return contents (paths, rules, wrapping). With no output schema, it gives a reasonable but not exhaustive picture of the response shape, leaving some detail to the agent's expectation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, giving baseline 3. The description adds value by explaining the output/output_text mutual exclusivity and that wrapping is reported separately, which clarifies the combined behavior beyond individual parameter descriptions. It also specifies that suggest_repairs covers defaultable missing fields and extra fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence clearly states a specific action: checking a model answer against a JSON schema, reporting deviations in plain language with paths, and noting wrapping. This distinguishes it from sibling tools like tool_arg_validate by focusing on model outputs and wrapping detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it accepts parsed or raw model output, handles code fences/prose, and explicitly limits itself to structure ('never truth'), telling users not to use it for factual verification. It does not name alternative tools, but the boundary is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

state_storeHALOWERK: Store, read, list and delete small pieces of agent state under a namespace, withA
Read-only

Store, read, list and delete small pieces of agent state under a namespace, with a mandatory expiry so nothing is kept forever.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Key-value state for agents that need to survive between calls. Every write carries a time-to-live; the maximum is 30 days and there is no way to store something permanently. Values are opaque JSON up to 64 KB, at most 1000 live keys per namespace. Actions: set, get, list, delete. A get on a missing or expired key answers found=false, it is not an error. The namespace is a plain string chosen by the caller and is not authenticated — anyone who knows it can read it, so do not put secrets in it. Expired rows are removed on access, not on a timer, so a list can lag a few seconds behind the exact expiry moment. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoKey. Required for set, get and delete.
limitNoMaximum keys returned by list.
valueNoAny JSON value. Required for set. Serialised size must stay under 64 KB.
actionYesWhat to do.
namespaceYesNamespace the key lives in. Not a secret and not authenticated.
ttl_secondsNoLifetime in seconds, at most 30 days.

TDQS

A3.6/5.0
Behavior1/5

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

The description explicitly lists 'set' and 'delete' actions and says 'Every write carries...', but annotations declare readOnlyHint=true and destructiveHint=false. This is a direct contradiction: the tool is described as mutating state, so the read-only hint is misleading. Although the text offers rich behavioral detail (TTL cleanup, found=false, namespace unauthenticated), the contradiction forces a score of 1 per rubric.

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

Conciseness3/5

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

The description is front-loaded with the core purpose and includes useful details, but it repeats the pricing/cost statement twice ('Kostenpflichtig...' and 'Preis...') and contains slightly disjointed German/English phrasing. It is reasonably sized but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by explaining the get behavior on missing/expired keys (found=false), removal behavior on access, 64 KB size limit, and 1000-key cap. It gives enough context for an agent to select and use the tool, though it could state error behavior for invalid actions or oversize values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3; the description adds value by enumerating the valid actions ('set, get, list, delete'), which the schema leaves as the vague 'What to do.' It also reinforces action-specific requirements (key for set/get/delete, value for set, TTL max) and adds the 1000-key limit. This goes beyond the schema without being redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb phrase—'Store, read, list and delete small pieces of agent state under a namespace'—and adds the key constraint 'mandatory expiry.' This clearly identifies the resource (agent state) and the supported operations, distinguishing it from sibling tools like web_archive and cve_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the intended use case: 'Key-value state for agents that need to survive between calls.' It also gives exclusions: no permanent storage (30-day TTL max) and not for secrets ('do not put secrets in it'). It doesn't name an alternative tool, but no obvious sibling provides this function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tls_chainHALOWERK: Read the TLS certificate chain of a host: every certificate with its names, valiA
Read-only

Read the TLS certificate chain of a host: every certificate with its names, validity, key type and signature, plus expiry warnings and whether the hostname is actually covered.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Opens a TLS connection and reports the chain the server presents. Per certificate: subject and issuer, validity window with days remaining, serial, SHA-256 fingerprint, key type and size, and the subject alternative names. Above that it answers the questions a monitor asks: is the requested hostname covered by the leaf certificate including wildcard rules, how many days until the nearest expiry, is any certificate self-signed or signed with a weak algorithm, does the server send its intermediates or leave the client to find them — a chain that validates in a browser can still fail in a language runtime that does not fetch missing intermediates. The negotiated protocol version and cipher are reported. It connects to the host itself, so there is no third-party dependency and no rate limit. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname or https URL, e.g. example.com.
portNoTLS port.
warn_daysNoWarn when a certificate expires within this many days.
servernameNoSNI name if it differs from host.

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses significant behavioral context beyond the annotations: it opens a network connection, is a paid operation (0.002 USDC per call via x402), and provides details about chain validation implications (e.g., missing intermediates). Annotations only declare readOnly and not destructive, so this added transparency is valuable and not contradictory.

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

Conciseness3/5

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

The description is front-loaded with a clear summary, but it contains redundant pricing information stated twice in German ('Kostenpflichtig...' and later 'Preis...'). The long final paragraph, while informative, could be tightened to avoid repetition and improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description provides a comprehensive list of what is reported: per-certificate details, hostname coverage, expiry days, self-signed/weak algorithm flags, missing intermediates, protocol version, and cipher. This is almost complete, though the exact output format is not specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all four parameters, so the baseline is 3. The description does not add parameter-specific semantics beyond mentioning 'expiry warnings' and 'days remaining' which loosely relate to warn_days, but it does not improve on the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read the TLS certificate chain of a host', listing the exact information returned (names, validity, key type, signature, expiry warnings, hostname coverage). This clearly distinguishes it from sibling tools like cve_check or jwt_verify, which address different security concerns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use by explaining that it connects directly to the host, has no third-party dependency, and no rate limit, implying reliability and self-contained operation. However, it does not explicitly state when to use this tool over alternatives or when not to use it, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tool_arg_validateHALOWERK: Check tool arguments against their schema before an expensive or irreversible caA
Read-only

Check tool arguments against their schema before an expensive or irreversible call, and get warnings for values that pass the schema but look like mistakes.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Two checks in one. First the arguments are validated against the tool input schema and every violation is reported with its path and a sentence saying what to change. Second, values that satisfy the schema but look wrong are flagged: an unset required field filled with a placeholder like "string" or "TODO", a number at a suspicious order of magnitude, an address that fails its checksum shape, a destructive flag set to true, an empty string where content was expected. Fields whose names suggest an irreversible effect — amounts, recipients, deletion and force flags — are held to the stricter standard. Warnings are heuristics and can be wrong in both directions: treat them as a prompt to look, not a verdict, and never as a substitute for the tool own checks. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesThe tool input schema.
argumentsYesThe arguments about to be sent.
tool_nameNoName of the tool, carried into the report.
irreversibleNoMark the call as irreversible. Raises every warning one level.
expected_magnitudeNoOptional per-field order-of-magnitude hint, e.g. {"amount": 100}. A value more than 100x off is flagged.

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses the two-stage behavioral process (schema validation and heuristic warnings) and importantly notes that warnings can be wrong in both directions, which is critical for interpretation. This goes beyond the readOnlyHint annotation by explaining how results should be used. It also adds pricing and x402 payment details, providing operational context.

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

Conciseness3/5

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

The description is front-loaded with its main purpose, but it contains redundant pricing information in both German and English, duplicating the same cost details. The structure is organized around the two checks, but the repetition and mixed-language content reduce efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description adequately covers its purpose, behavioral details, limitations, and usage context. It explains what the tool does, when to use it, and its caveats. It doesn't detail the return format, but this is acceptable given the absence of an output schema and the presence of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already has 100% coverage with descriptions for all 5 parameters, so the baseline is 3. The description adds value by explaining that fields suggesting irreversible effects are held to stricter standards, which gives additional meaning to parameters like 'irreversible' and helps the agent understand how field names might trigger heuristics. This slightly enhances the schema's semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Check') and resource ('tool arguments against their schema'). It also adds the usage context of expensive/irreversible calls, which distinguishes it from sibling tools like output_validate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use it 'before an expensive or irreversible call,' providing clear usage context. It also includes a caution that warnings are heuristics and not a substitute for the tool's own checks, which implies when not to fully trust it. However, it does not explicitly name alternative tools or state strict exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_archiveHALOWERK: List archived versions of a URL with dates, status codes and content changes, anA
Read-only

List archived versions of a URL with dates, status codes and content changes, and get the snapshot closest to any date you name.

Kostenpflichtig: 0.005 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.005 USDC je Aufruf.

Queries the Internet Archive for the captured versions of a URL and returns them with capture time, HTTP status, MIME type and content digest, oldest and newest first. Because consecutive captures share a digest when nothing changed, the versions where the content actually differed are marked — that is the list worth reading, not the raw capture log. A target date returns the nearest snapshot with the gap in days, which is what a citation of a page as it stood on a given day needs. Captures that returned an error at the time are separated from successful ones, so a run of 404s reveals when a page disappeared. The CDX index is the complete source but goes down regularly; when it does, the availability endpoint answers with the closest capture and the degraded state is reported rather than passed off as an empty history. Preis 0.005 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to look up.
limitNoHow many captures to return.
to_dateNoLatest capture to list (YYYY-MM-DD).
from_dateNoEarliest capture to list (YYYY-MM-DD).
target_dateNoFind the snapshot closest to this date (YYYY-MM-DD or ISO).
changes_onlyNoOnly captures whose content differed from the previous one.
include_errorsNoInclude captures that recorded an HTTP error.

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses important behavioral traits beyond the annotations: it mentions CDX index stability issues, fallback to the availability endpoint, reporting of degraded state, separation of error captures, and content-digest logic. These details go well beyond the read-only/open-world hints.

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

Conciseness4/5

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

The description is front-loaded with a clear summary, followed by a logically organized detailed explanation. However, pricing information is duplicated (once as 'Kostenpflichtig' and again as 'Preis'), adding redundancy and slightly bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description thoroughly explains what is returned (capture time, HTTP status, MIME type, content digest), the target-date gap in days, error separation, and degraded-mode reporting. It covers all essential aspects for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all 7 parameters with descriptions (100% coverage), so the baseline is 3. The tool description adds meaning for key parameters like `target_date` (returns nearest snapshot with gap in days), `changes_only` (content digest logic), and `include_errors` (separating error captures). It does not elaborate on `limit` or date range parameters, but the overall context compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific, compound action: 'List archived versions of a URL with dates, status codes and content changes, and get the snapshot closest to any date you name.' This clearly identifies the resource (archived versions) and the operations (list and get). It is distinct from sibling tools, which focus on cost, validation, and other concerns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear contextual use cases, such as 'what a citation of a page as it stood on a given day needs' and explains that the changed-versions list is 'the list worth reading.' However, it does not explicitly mention alternatives or when not to use the tool, though the niche is well-defined relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_signatureHALOWERK: Verify a signed webhook from GitHub, Stripe, Shopify, Slack, Svix or a plain HMAA
Read-only

Verify a signed webhook from GitHub, Stripe, Shopify, Slack, Svix or a plain HMAC scheme, with the timestamp window checked where the provider signs one.

Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.

Providers each build their signing string differently — some sign only the body, others prepend a timestamp, an id, or a version marker in a fixed order — and getting that order wrong produces a mismatch that looks exactly like an attack. This checks the signature the way the named provider actually specifies, with constant-time comparison, and returns the string that was signed so a mismatch can be debugged instead of guessed at. Where the provider signs a timestamp, it is checked against a tolerance window, because a signature valid forever lets any captured delivery be replayed. The body must be passed exactly as received, byte for byte: a re-serialised JSON payload has different bytes and will never match, which is the single most common cause of a failed check and is called out when the body looks reformatted. Preis 0.002 USDC je Aufruf, Abrechnung über x402.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe raw request body exactly as received, not re-serialised.
secretYesThe signing secret.
headersNoAll request headers; the right one is picked by provider.
providerYesWhich provider signed the request.
signatureNoThe signature header value. Required unless headers is given.
timestampNoTimestamp, if the provider signs one and it is not in the headers.
message_idNoMessage id for schemes that sign one, e.g. Svix.
tolerance_secondsNoHow old a signed timestamp may be.

TDQS

A4.3/5.0
Behavior5/5

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

The description goes well beyond the annotations (readOnlyHint, openWorldHint, destructiveHint) by disclosing security and behavioral details: constant-time comparison, timestamp tolerance window, returning the exact signed string for debugging, and the requirement for byte-for-byte body preservation. It also explains the consequences of re-serialization, which is critical for correct use. The annotations are consistent with the described read-only verification behavior.

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

Conciseness3/5

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

The description is front-loaded with the core purpose, but it repeats pricing information three times (Kostenpflichtig, Hoechstens, and Preis at the end) in a way that feels redundant. The technical explanation is valuable but could be trimmed to a more concise format. The structure is reasonably organized but not every sentence earns its place, so it is not a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters, no output schema, and supports multiple providers. The description covers major pitfalls (body serialization, timestamp tolerance, signing string order) but does not fully describe the return value beyond 'returns the string that was signed'. It also does not address error handling or what happens when verification fails, which is important for an agent to know given the absence of an output schema. Thus it is adequate but has clear gaps for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3, but the description adds valuable semantics beyond the schema. It explains that providers build signing strings differently (body-only vs. prepending timestamp, id, or version), which directly maps to parameters like timestamp, message_id, and signature. It also clarifies why the body must be exact, enriching understanding of the 'body' parameter. However, it does not detail each parameter individually, so it falls short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Verify a signed webhook' and enumerates specific providers (GitHub, Stripe, Shopify, Slack, Svix) as well as plain HMAC. This is a specific verb+resource that distinguishes it from sibling tools like jwt_verify, which handles JWT tokens rather than webhook signatures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: any time a signed webhook from the listed providers needs verification. It does not explicitly mention when not to use it or name alternatives, but the provider list and the distinctive description of signature construction give sufficient situational guidance. The note about passing the body exactly as received is also a usage hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools are clearly distinct, but halowerk_katalog, halowerk_preis, and cost_estimate all relate to pricing/cost estimation, which could lead to misselection if an agent is looking for a specific cost check. The descriptions are detailed enough to clarify, but the overlap is notable.

Naming Consistency3/5

The first two tools use a German brand prefix (halowerk_katalog, halowerk_preis) while the rest follow an English noun_verb or noun_noun pattern (e.g., cost_estimate, output_validate, cve_check). This mixed language and style is inconsistent but still readable and predictable after the first two.

Tool Count5/5

14 tools is well within the typical 3-15 range and each tool covers a distinct utility niche, from cost estimation and validation to security checks and document diff. The count feels appropriate for a general-purpose paid utility server.

Completeness5/5

Each tool appears to cover its advertised function completely: state_store offers full CRUD, security tools verify and report, and validation tools handle edge cases. There are no obvious dead ends or missing operations for the server's broad utility scope.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Marketplace MCP for paid HTTP APIs. Pay per call in USDC on Base via the open x402 standard — non-custodial. 13 tools for discovery, buying, and publishing APIs.
    63
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    55+ pay-per-call tools for AI agents over MCP: live telemetry, blockchain/on-chain checks, environmental, transit, finance, and network utilities. No API key or signup — agents pay per request with x402 USDC micropayments (Base and Solana).
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP clients to access all endpoints of an x402 gateway by paying real-time microtransactions (USDC on Base) per API call, with automatic tool discovery and spend guardrails.
    23
    248
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/halowerk/halowerk-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server