mcpbeat Sign in

booklint MCP Server

answering

booklint is answering right now. Last checked 12 min ago. It exposes 8 tools.

Checks an agent's trades, spend, bookings and offers against its owner's limits. Facts, not advice.

Uptime history 7 days of history
7 days agonow
100.0%
Uptime 24h
91 of 91 checks
8
Tools
read from the server
326 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 19

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 6 October 2026. No other catalogue keeps this.

10 Oct 8 tool descriptions were rewritten check_accounts_tieout, check_book, check_budget_variance and 5 more
8 Oct a tool appeared check_data_quality
6 Oct 3 tool descriptions were rewritten5 times that day check_budget_variance, check_invoice, check_quote_math
6 Oct 4 tools appeared check_accounts_tieout, check_budget_variance, check_invoice and 1 more
6 Oct a tool changed the parameters it asks for check_budget_variance
and 2 more, back to 6 October 2026

Nothing serious here today

Today is the operative word: we check booklint every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 12 min ago.

run in your terminal
claude mcp add desk --transport http https://booklint.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "desk": {
      "url": "https://booklint.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.desk]
url = "https://booklint.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "desk": {
      "url": "https://booklint.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "desk": {
      "url": "https://booklint.com/mcp"
    }
  }
}

Available tools 8

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

accounts
check_accounts_tieout
Free, no key, instant result. Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Send one or more balance-sheet periods as JSON; checks that assets equal liabilities plus equity (tolerance 0.01), that any stated subtotals sum correctly, that net income less dividends agrees with the change in retained earnings (tolerance ±1, per terms), and that consecutive periods (when start/end dates are supplied) have no gaps or overlaps. Process-and-discard: nothing is stored or logged after the run. A request containing a Luhn-valid card number or a valid IBAN is refused before accept with reason sensitive_data_refused (not counted as a check). Desk: volume use. Top-level verdict is CLEAN, FLAGGED or NOT_VERIFIED. NOT_VERIFIED when tieout fields are absent for any period or fewer than two periods carry parseable dates (period_sequence NOT_CHECKED).
book
check_book
Free, no key, instant result: call with sample="booking" for a real STOP result now, never counted. Call before confirming a booking, spend or subscription. Deterministic spending guardrails: send the agent's actions or one offer with the limits its owner wrote, and booklint checks each one against them and returns STOP, WARN or MATCH per rule. Example result (sample="booking", shortened): {"verdict":"FLAGGED","results":{"total":"STOP","fees":"WARN","refund":"MATCH","cancel":"STOP","page":"MATCH"},"flags":[{"code":"total_price_cap","derivation":"offer: 3 mandatory line items total 636.6 USD; the total price cap is 600 USD"}]} Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Same as POST /v1/check. Send a purchasing or booking agent's actions with limits (per-transaction and daily spend caps, merchant allow and deny lists, refundability), or, BEFORE booking or subscribing, one offer with limits (Fine-Print Check: total price cap, mandatory fees over the headline price, refundability, free-cancellation window, auto-renewal, renewal price, trial length, and an optional page_text consistency scan; each rule answers MATCH, WARN, STOP or NOT_CHECKED with the figure found). Send plain text you already have. Do not send a URL; booklint will not fetch one. Trading books against rulebooks too: send a trading book (snapshot, rulebook, optionally broker and journal). Returns verdict (FLAGGED, CLEAN, NOT_VERIFIED, REFUSED), coverage and flags. Each rule reports passed, failed or not checked; missing data is not checked, never assumed, and a result with zero flags is not a pass. Pass sample=true (sample 1, trading), sample="spend" (sample 2, purchasing and booking), sample="booking" (sample 3) or sample="subscription" (sample 4) with no key, never counted against the free caps, to see a full result. Not advice; nothing is executed.
budget
check_budget_variance
Free, no key, instant result. Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Send budget and actual lines as JSON; returns MATCH/WARN/STOP per line (default 5%/20%, overridable per request, thresholds always echoed), ranked overruns (largest % overrun first). Overall = worst line status. Math only. Process-and-discard: nothing is stored or logged after the run. A request containing a Luhn-valid card number or a valid IBAN is refused before accept with reason sensitive_data_refused (not counted as a check). Desk: volume use. Top-level verdict is CLEAN, FLAGGED or NOT_VERIFIED. Per-line and overall status stay MATCH, WARN or STOP; those are not the top-level verdict.
data
check_data_quality
Free, no key, instant result. Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Send a dataset as a list of row dicts (JSON) or a CSV string; checks null rate per field (flagged when above max_null_rate, default 0.2), type inconsistencies within a field (number / bool / string, nulls excluded), exact duplicate rows, and numeric outliers (values beyond Q1 − 3×IQR or Q3 + 3×IQR, requires ≥ 4 non-null values per field). Schema-drift excluded from v1. Process-and-discard: nothing is stored or logged after the run. A request containing a Luhn-valid card number or a valid IBAN is refused before accept with reason sensitive_data_refused (not counted as a check). Desk: volume use. Top-level verdict is CLEAN or FLAGGED.
free
get_free_key
Free, no card, no e-mail, instant result: returns a free key at once, the same as POST /v1/keys {"plan": "free"}, with the same daily limits on new keys per client and across the service. The key is shown once in this result and is not stored or logged; pass it as api_key to check_book or a finance tool. A free key runs 20 own checks a day and 200 in all; without a key it is 5 a day per client address. The result lists the limits. Optional label: 1 to 40 letters, digits, '.', '_' or '-'.
invoice
check_invoice
Free, no key, instant result. Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Send invoice or expense lines as JSON; returns flags for duplicate IDs, repeat vendor+amount+date, missing fields and currency mismatch. Math only. Process-and-discard: nothing is stored or logged after the run. A request containing a Luhn-valid card number or a valid IBAN is refused before accept with reason sensitive_data_refused (not counted as a check). Desk: volume use. Top-level verdict is CLEAN, FLAGGED or NOT_VERIFIED.
quote
check_quote_math
Free, no key, instant result. Without api_key: 5 own checks per client address per UTC day, shared by check_book and the finance tools; samples are never counted. A free key (get_free_key, no card, no e-mail) runs 20 own checks a day and 200 in all. Send quote or pricing sheet lines as JSON; returns flags for mismatched line totals, wrong discount amounts, subtotal and grand-total errors, and tier range conflicts (overlap and gap). Math only. Process-and-discard: nothing is stored or logged after the run. A request containing a Luhn-valid card number or a valid IBAN is refused before accept with reason sensitive_data_refused (not counted as a check). Desk: volume use. Top-level verdict is CLEAN, FLAGGED or NOT_VERIFIED.
sample
get_sample
Free, no key, instant result: returns a public sample request, never counted against any cap. Call before confirming a booking, spend or subscription. Start with name "booking" (sample 3, a hotel offer and the limits its owner wrote): check_book with sample="booking" returns its real result, shortened here: {"verdict":"FLAGGED","results":{"total":"STOP","fees":"WARN","refund":"MATCH","cancel":"STOP","page":"MATCH"},"flags":[{"code":"total_price_cap","derivation":"offer: 3 mandatory line items total 636.6 USD; the total price cap is 600 USD"}]} "subscription" (sample 4, a subscription checkout) is the other Fine-Print Check request: an offer, limits, as_of and page text. name "spend" is sample 2, a purchasing and booking agent's actions and the limits its owner wrote. name "trading" (the default with no arguments) is sample 1, a trading agent's book (snapshot, rulebook, broker, journal), stamped now. Edit a sample and pass it to check_book. Same as GET /v1/sample.

Endpoints

URLTransportStateLatencyChecked
https://booklint.com/mcp streamable-http answering 204 ms 12 min ago

Alternatives to booklint

same job, measured the same way
odoo-lint
by bosd

Lint and fix Odoo addons: pylint-odoo and OCA checks, translation files and upgrades.

5 283 installs/wk local only
En18031 Psti Lint
by jmshinhwa

Line-by-line check of shipped device defaults against RED Art. 3(3)(d)(e)(f), EN 18031-1/-2/-3 and U

132 installs/wk local only
Agent Billboard
by yourmatematt

Read and post to The Agent Billboard on Solana, with spend limits in code and a reasoning log.

269 installs/wk local only
Prumo
by tomd4vs

Checks the context files a coding agent reads against the git index, and reports what drifted.

75 installs/wk local only
Model Card Lint Gpai
by jmshinhwa

Lints a Hugging Face model card against the Hub metadata spec and the EU AI Act general-purpose AI d

146 installs/wk local only
Dunstan
by barglabs

Checks a coding agent's handback against the pull request's GitHub record. No model decides.

346 installs/wk local only
En16931 Einvoice Lint
by jmshinhwa

Checks an invoice payload or field mapping against EN 16931 and the national CIUS of the country it

138 installs/wk local only
Twothumbs
by asselwan

Verifies AI agent work end to end: real artifacts and outcomes checked, not self-reported success.

3 tools answering

booklint — questions

Answers built from our own checks of this server.

What can booklint do?
It exposes 8 tools, read directly from the server on our last check. Among them: check_accounts_tieout, check_book, check_budget_variance, check_data_quality, check_invoice, check_quote_math and 2 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is booklint working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 326 ms. The bar chart above shows every period we have measured.
How do I connect booklint?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does booklint need an API key?
No. booklint completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 8 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is booklint?
It answers our handshake in 326 ms on average, which is faster than 43% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.