Compare tool calls
compare_tool_callsREAD$0.008 / callTWO READINGS OF THE SAME INSTRUMENT, and what moved between them. Free on every plan. This is the measurement — the thing you do instead of asserting that a change worked. Two ways to call it. Name a tool (and a subject, when the reading was scoped to a page or a heading) and it takes the newest recorded reading and the nearest one at least baseline_age old — 'today against a week ago' is { tool: "get_analytics", baseline_age: "7d" }. Or name two call_ids exactly. 🔴 TAKE THE READING FIRST. It compares what is already in the ledger; it runs nothing. If the newest reading predates the change you are measuring, call the read tool again and then compare — otherwise you are comparing two readings of the world before you touched it. Answers with every numeric field that MOVED (before, after, delta, and a percentage that is null — never ∞ or 100 — when the baseline was zero), what appeared, what went away, and how many fields did not move at all, which is the denominator that stops one moved number from reading as 'everything changed'. Timestamp fields are excluded: they differ on every pair by construction. It reports NO verdict, on purpose. Two readings a week apart are two facts. Docs traffic moves on its own, an index re-crawls, a holiday happens — whoever asked knows what else was going on and this tool does not. This answers WHAT, not what to do about it. If you have not already got the method from docsbook_expert, get it first: it names which readings answer this question, what to compare them against, and what would make the conclusion wrong. One call, changes nothing.
Workspace ID (optional when MCP endpoint is auto-scoped). Numeric workspace id — OR the project as the user names it: 'owner/repo', the repo name alone, the site's display name, its docs URL or custom domain. Text is resolved server-side; an ambiguous name returns the candidates instead of guessing, so pass what the user said rather than calling list_workspaces first.
The instrument, e.g. 'get_analytics'. Required unless you pass both call ids.
Scope the series to a page, heading, host or query. Omit for the reading of the whole site.
How old the baseline should be at least — '7d', '24h', '4w'. Default 7d. Never picks one YOUNGER than this; it falls back to the oldest reading there is and says so.
The later reading, by id.
The earlier reading, by id.
Call it#
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "compare_tool_calls",
"arguments": {}
}
}curl -X POST 'https://docsbook.io/api/mcp/server' \
-H 'Authorization: Bearer dbk_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"compare_tool_calls","arguments":{}}}'Try it over REST#
The same tool is callable as a plain HTTP request, no MCP client required. It runs on the same server, at the same price.
Your workspace is resolved from the API key, so workspace_id is decided server-side here and anything you send for it is ignored.
/api/v1/tools/compare_tool_callsYour API key, sent as Authorization: Bearer dbk_YOUR_API_KEY.Sent as the Authorization header. Your key is used only by your browser for this request — it is never sent to Docsbook or stored.
The arguments above, as one JSON object.
curl -X POST 'https://docsbook.io/api/v1/tools/compare_tool_calls' \
-H 'Authorization: Bearer dbk_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"args":{}}'