MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

Whirrwork

Robot jobs, sourced prices with history, providers by country, robot-vs-human costs, and RFQs.

Checks passed
12 / 22

2 failed · 8 not measured

Median response
109 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
24

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 109 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name whirrwork.

  • Pass
    Lists tools

    tools/list returned 24 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 109 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 109 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    94 of 166 parameters have a description (57%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-25T18:02:18.822823Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Whirrwork

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http whirrwork https://whirrwork.com/mcp

Capabilities

Tools 24

buy_rent_or_hire

Total cost of buying a robot vs renting it (lease / robots-as-a-service) vs hiring a service over a period, with break-even months and the cheapest option ("within_10_percent" = too close to call). Defaults come only from sourced price rows hand-tagged buy / rent / service for the job (each with source_url and as_of; pick another with buy_receipt / rent_receipt / service_receipt, or "none"); any number the buyer gives overrides the receipt. Running costs (upkeep, staff hours x wage, setup fee, resale) are the buyer's own and have no default. Same maths as whirrwork.com/tools/buy-rent-or-hire/. Without job, returns jobs_with_receipts. Not a quote, not a forecast. Examples: {"job":"commercial-floor-scrubbing","months":36}; {"job":"crop-spraying-drone","months":24,"qty":300}; {"job":"commercial-floor-scrubbing","months":60,"upkeep":150,"hours":20,"wage":18}.

Discovered
compare_providers

Side-by-side comparison of 2-10 providers: coverage for a country, engagement models, published prices (USD-normalized), HQ, contact routes, shared jobs, last checked. Facts only, no ratings.

Discovered
compare_robot_models

Side-by-side specs of 2-4 models of the same robot type: one row per spec with each model's maker-published value and source (null = not published), plus each model's assessment. Models of different types are refused with an explanation. Example: {"ids":["tennant-x4-rovr","avidbots-neo-2"]}

Discovered
compare_robot_vs_human

Cost comparison of human labour (or a human service) against robot options (buy, lease, robots-as-a-service, robot service provider) for one of 22 jobs in one of 8 countries (US, DE, GB, JP, CN, IN, BR, MX). Uses the same model as whirrwork.com/tools/robot-vs-human/: every default input has a source or is flagged as an assumption (see input_sources). Returns monthly/annual cost, cost per unit, payback months, break-even utilisation, 5-year NPV vs the baseline, a verdict, non-cost factors, sensitivity ranking, and projections to 2035 with a crossover year range (robots-fast, base, robots-slow). Projections are modelled estimates, not facts: say so, and quote the range rather than one year. Examples: {"job":"warehouse-picking","country":"US"}; {"job":"commercial-floor-cleaning","country":"DE","inputs":{"volume":60000}}; {"job":"machine-tending","country":"US","region":"US-TX","include_projections":false}.

Discovered
estimate_cost

Arithmetic on published prices: unit price × quantity, using exact unit conversions (acre↔hectare, sq ft↔m², mile↔km), preferring benchmarks whose region matches the country, converting currency at a dated ECB rate. Returns the range plus the basis rows (each with source_url, as_of, region match) and caveats. Returns estimate=null with a reason when no sourced benchmark fits; never invents a number. Example: {"use_case":"crop-spraying-drone","quantity":500,"unit":"hectare","country":"BR","currency":"USD"}.

Discovered
estimate_drone_show_cost

Cost of a drone light show of N drones: every published per-drone price x drones (best match for the country first, peak-date prices only when peak=true), plus the published whole shows closest in drone count (NEVER scaled to your size; implied per drone = show price / stated drones), the same-country span, a check of a quote the buyer received (per drone vs the published range in that currency) and too_few_receipts when fewer than 3 prices apply to the country. Every price has source_url and as_of. Same maths as whirrwork.com/tools/drone-show-cost/. Currencies are NEVER converted. Not a quote and not a Whirrwork estimate: say so. Examples: {"drones":200,"country":"US"}; {"drones":100,"country":"GB","quote":9000,"currency":"GBP"}; {"drones":500,"country":"CN"}.

Discovered
estimate_drone_spraying_cost

Cost of drone crop spraying for the buyer's field: every published per-acre, per-hectare, per-mu (China) and per-10-are (Japan) drone spraying rate in the dataset x area x passes, with the best-matching rate for the country (national, recent first), the same-country span, flags taken from the source (chemicals extra, minimum area, starting price, older than 12 months) and every rate's source_url and as_of. Same maths as whirrwork.com/tools/drone-spraying-cost/. Only unit conversion (1 ha = 2.4710538 acres = 15 mu = 10 x 10 a); currencies are NEVER converted. Not a quote and not a Whirrwork estimate: say so. If country_has_rates is false, say there is no published rate for that country rather than borrowing one. Examples: {"area":100,"unit":"acre","country":"US"}; {"area":40,"unit":"ha","passes":3,"country":"BR"}; {"area":250,"unit":"ha","country":"CN"}.

Discovered
find_providers

Shortlist providers for a job and place. Ranked: lists the region > lists the country > lists part of the country > headquartered there (HQ is not a service area) > works worldwide. Each result has coverage + coverage_reason, engagement models, published pricing with USD conversion, min_published_price_usd and public contact routes. Coverage is country-level unless the provider published regions. Filters combine (AND). Example: {"use_case":"drone-light-show","country":"AE"}; {"use_case":"commercial-floor-scrubbing","country":"CA","region":"ON","engagement_model":"raas"}.

Discovered
find_robots_for_job

Which kinds of robot do a job (primary type first, then alternatives), with the commercial models we have catalogued for each type: maker-published key specs, list price where published, and the Whirrwork assessment (a score only when independent trials or tests exist; otherwise "Not enough evidence to rate"). Use search_use_cases first to get the job id. Example: {"job":"crop-spraying-drone"}

Discovered
get_buyer_brief

START HERE for "who can do <job> in <place>, what does it cost, how do I get quotes?". One call returns: the matched robot job (with alternatives and confirm_with_buyer when the match is close), up to 8 sourced prices ranked for the buyer's country (each with source_url, as_of, older/12-month flags, the latest source re-check result and a labelled USD conversion), providers ranked by who actually serves the country/region/city (with coverage_reason, the published area and its source, contact routes and a per-provider quote link), rated robot models for the job, buyer tips, regulatory notes, the job checklist, a prefilled quote-form link carrying your ref, plain sentences you can say (say_this) and a citation. Nothing is estimated: no published price means prices.count = 0 and say_this says so. region accepts a city or region in the buyer's words ("Kolkata", "IN-WB", "Ontario"). Examples: {"query":"warehouse cycle counting","country":"US","ref":"agent:yourname"}; {"query":"drone pilot training","country":"IN","region":"Kolkata","ref":"agent:yourname"}; {"use_case":"drone-light-show","country":"AE","job":"300-drone show for a launch in Dubai, March"}.

Discovered
get_price_history

Every price observation we have recorded (append-only; never overwritten) for a job and/or provider, grouped into series with trend (change_pct between first and latest observation). observed_at = when we recorded it; as_of = the date the source states. If every series has one observation, say so: there is no trend yet.

Discovered
get_prices

Current sourced prices for a job (benchmarks + provider-published), or for one provider. Every row has source_url and as_of. Set convert (e.g. "USD") to add a clearly labelled conversion with the FX rate, date and source. Benchmarks, not quotes.

Discovered
get_provider

Full public profile of one provider: website, HQ, service regions and explicit service areas (with sources), jobs, robot types, engagement models, published prices (with USD), contact routes, sources and last-checked date.

Discovered
get_rfq_status

Status of a submitted RFQ (received → matched → sent_to_suppliers → quoted → closed) with its status history. Needs the id and the access key returned by submit_rfq (the key= part of status_url).

Discovered
get_rfq_template

The exact fields to collect from the buyer before submit_rfq: core fields (required flags, formats) plus the job-specific checklist suppliers need to price it (as extra.{key}), regulatory notes, and a filled example. Ask the buyer for these, then call submit_rfq.

Discovered
get_robot_model

One commercial robot model: every maker-published spec with its source URL and the date we checked it (unknown specs are absent, never guessed), maker claims labelled as such, list price if published, independent evidence (trials, tests, certifications, documented deployments) with findings, the jobs its type does, and the Whirrwork assessment with its components. Quote specs with their source.

Discovered
get_stat

One Whirrwork Research statistic by slug: claim, figure, scope, measure type, primary source with archive link, publication/access/last-verified dates, verbatim source passage (when licensing allows), confidence, caveats, and citations in APA, Chicago, MLA and BibTeX (plus an APA citation of the original source). Licensed CC BY 4.0: attribute "Whirrwork (https://whirrwork.com), CC BY 4.0" and the original source.

Discovered
get_use_case

Everything about one job: what it is, robot types, ways to buy (service/rental/RaaS/purchase), honest buyer tips (including when a robot is overkill), regulatory notes, every sourced price benchmark (with source_url, as_of and a USD conversion), price-history counts, the RFQ checklist, and providers. Pass country (and optionally region) to rank providers by who serves that place, with the reason.

Discovered
list_categories

The 20 job categories with use-case counts, for browsing when the buyer is vague.

Discovered
list_countries

For each country: providers that list it as a service area, providers serving parts of it (with sub-regions), and providers headquartered there; plus the number of worldwide providers. Use to tell the buyer honestly how well their country is covered.

Discovered
robot_or_ladder

Does this job need a robot at all? Rule-based verdict from the Ladder Test (the same rules as whirrwork.com/tools/robot-or-ladder/): answer up to 6 questions yes / no / unsure and get ladder, robot, both or tossup, the reasons on each side with their points, what to find out first, and (with job) the sourced price and provider counts for that job. No numbers except our own counts; nothing is stored. Questions: ladder = could a competent person with a ladder do it in an afternoon?; risk = is it dangerous for a person (height, confined space, live wires)?; scale = is it big (many hectares, a whole facade, a warehouse)?; repeat = will it repeat often (weekly, daily)?; data = do you need measurements or records (maps, thermal, logs)?; hands = does it need hands-on fixing (repair, not just looking)? Examples: {"ladder":"yes","risk":"no","scale":"no","repeat":"no"}; {"ladder":"no","risk":"yes","scale":"yes","data":"yes","job":"roof-inspection-drone"}.

Discovered
search_stats

Search Whirrwork Research: 100+ citable statistics on robot adoption, industrial and service robots, humanoids, drones, agriculture, cleaning, warehouses, labour shortages, wages, prices and funding, plus figures from Whirrwork's own dataset. Each result has the exact figure with unit and scope, the primary source (publisher, title, date, URL, Wayback archive), access and last-verified dates, a confidence level (high/medium/low), source_type (primary/secondary/whirrwork) and a permanent URL. Quote figures with their source and date; prefer high-confidence primary sources. Call get_stat for the verbatim quote, caveats and ready-made APA/Chicago/MLA/BibTeX citations. Examples: "humanoid robots sold 2025", "robot density Korea", "drone spraying price per acre", "robotics funding", topic="labour".

Discovered
search_use_cases

Find the robot job (use case) that matches what the buyer wants, in plain words and in any of 12 languages. Returns matching use cases (id, name, price summary, provider count) plus matching providers and guides. Start here, then call get_use_case with the best id. Examples: "drone light show for a wedding", "robotic floor scrubbing for a warehouse", "limpieza de ventanas con drones", "无人机灯光秀".

Discovered
submit_rfq

Submit a request for quotes for a real buyer who explicitly agreed to be contacted by matched suppliers (consent=true). Stored, auto-matched to providers by job + country, and reviewed by a human before anything is forwarded; nothing is emailed automatically. Returns id, status, matched provider ids, and a private status_url/access key for get_rfq_status. Use test=true for testing.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected109 ms24