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 · Database

NicheDB

Sources in, feeds out: an open, ever-growing database of real-time public data, enriched.

Checks passed
15 / 22

0 failed · 7 not measured

Median response
438 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
48

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

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

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 452 ms.

  • Pass
    Valid handshake

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

  • Pass
    Lists tools

    tools/list returned 48 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 438 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

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

  • Not measured
    Reliable (uptime)

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

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

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.

  • Pass
    Parameters documented

    172 of 172 parameters have a description (100%). 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.

  • Pass
    Source repo linked

    A 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-09-05T21:18:08.55929Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using NicheDB

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 nichedb https://nichedb.dev/mcp

Capabilities

Tools 48

add_source

Add a source: an adapter with a config, fetched on a schedule (needs a key; admins and Pro). Call list_adapters first for the fields.

Discovered
airplane_lookup

An aircraft by N-number (N172SP, or 172SP), Mode S hex (A2D8E1) or flight callsign (UAL1895), or words to search the US register (Cessna 172). Answers `record` (the FAA registration: maker, model, year, seats, engines, airworthiness, status, expiry, hex; private owners are withheld) and `live` (where adsb.lol sees it now: lat, lon, altitude, speed, squawk), or `matches` for words. A foreign aircraft has no record but may be live.

Discovered
business_standing

Is a business on anybody's list? Give its `name`, and any of `domain`, `state` (two letters), `number` (state entity number) and `ein`. Answers with `standing` (flagged, incomplete or clear; clear only when every list was checked and found nothing), the `findings` behind it, and each section: US Treasury OFAC sanctions (SDN and consolidated, aliases included), GLEIF LEI records, SEC EDGAR filers, state registry status (OpenCorporates) and SAM.gov exclusions when keyed, and the domain over RDAP plus Spamhaus/URIBL/SURBL/Safe Browsing when the operator enabled them. A name match is not an identity: confirm against address and identifiers.

Discovered
check_domain

Is a domain name registered? Asks each registry over RDAP. Give `name` as a full name (foo.watches), or a bare word with `tlds` (foo + com,dev,io), or several names comma separated. Each answer is registered (with registrar and expiry), not_registered, or unknown. not_registered means the registry holds no registration; the name may still be reserved or premium, so it is not a promise that it is for sale. unknown (no RDAP server, a timeout, a 429) is never a yes. Each answer carries the cheapest known USD price for its ending.

Discovered
claim_profile

Claim a profile as the key owner (needs a key). Proven when the key owner’s email is one the profile lists, or when the person’s site or show page links back to the profile’s nichedb page. An admin may claim on behalf of an email.

Discovered
create_feed

Save a query as a feed (needs a key). Sources, kinds and tags narrow; q is a text match; upcoming keeps only future-dated items.

Discovered
create_invite

Make one invite link as the key owner. Invites are scarce (a few per account); when the invited person signs up, both get days of Premium. The link is returned once. Needs a key.

Discovered
create_webhook

Add an account webhook: signed POSTs (Standard Webhooks + CloudEvents) to an https URL for events such as feed.item.published (new items in feeds you follow), feed.followed, feed.created, submission.approved. Patterns like feed.* work; omit events for all. Returns the signing secret. Needs a key.

Discovered
delete_webhook

Remove an account webhook and its delivery log. Needs a key.

Discovered
feed_items

What a feed selects, newest first. Page with before_id.

Discovered
find_profile_by_linkedin

The public profile a LinkedIn profile or company URL belongs to (linkedin.com/in/… or /company/…), or null. LinkedIn only: profiles are never looked up by email.

Discovered
follow_feed

Follow a feed as the key owner (needs a key). Channels: webpush, email, webhook.

Discovered
get_item

One item with its full adapter payload.

Discovered
get_profile

One person by id, `<slug>-<id>` or handle: the parsed view and the OpenProfile.md as served.

Discovered
get_tld

One top-level domain: type, registry, RDAP server, when it entered or left the root, every registrar price (register, renew, transfer, restore, promotions, privacy, restrictions) and its change history.

Discovered
list_adapters

Every adapter this deployment can run, with the config fields each takes. Use before add_source.

Discovered
list_collections

The collections (niches) with their source, feed and item counts.

Discovered
list_enrichers

Every enricher (YouTube videos, Wikipedia, repo stats, downloads, company profiles, TL;DRs) and which collections turn it on by default. Items carry their results under `enrichment`.

Discovered
list_feeds

Public feeds, most followed first. Optionally one collection.

Discovered
list_invites

The key owner's invites: how many are left of the quota, and each invite with its status (open, used, expired, revoked). Needs a key.

Discovered
list_sources

Sources with status, last run and item counts. Optionally one collection.

Discovered
list_webhooks

The key owner's account webhook endpoints (never their secrets) and the event types this site emits. Needs a key.

Discovered
match_items

Which title, channel or fixture is this name? Give a file name, a release name or a playlist entry ("Top.Gun.Maverick.2022.1080p.mkv", "US: ESPN2 HD"); it is cleaned (year, season and episode, quality tags, playlist decorations) and matched by similarity. A matchup ("NFL: Chiefs vs Bills", "Lakers @ Celtics", "Rangers at Celtic 19:45") is answered by the fixture whose two teams those are, kicking off between 36 hours ago and 7 days ahead unless date narrows it. Each result carries a score in 0..1. Use screen for films and TV, channels for television channels, sports for fixtures.

Discovered
population

Population and demography, drilled down from the world to the ZIP code. Give a `key` (us, us-ca, us-ca-los-angeles, gb, gb-england-london), a US `zip`, or a place name in `q`; no argument is the world. Answers with the area (population, year, measures: age, income, home value, rent, poverty, education, unemployment, race and Hispanic origin for the US; growth, age structure, births, deaths, fertility, life expectancy, migration, GDP per head and Gini for countries), how many areas of each level it contains, and the largest of its children at `level` (country, state, city or zip). Sources: World Bank, US Census ACS 5-year, GeoNames.

Discovered
recent_items

Newest items, optionally narrowed to a collection, source or kind.

Discovered
redeem_code

Redeem a credit code (CR-XXXX-XXXX-XXXX-XXXX) for the key owner. A code is worth days of Premium, added after any term already held. Needs a key.

Discovered
reputation_lookup

Is an IP address or a domain on a blocklist? Give `indicator` (an IPv4/IPv6 address or a domain; a URL is reduced to its host). Answers `listed`, a rough 0-100 `score` with the `reasons` behind it, the nichedb /traffic record (addresses our own servers banned and a person approved), the abuse.ch indicators (ThreatFox, URLhaus, Feodo Tracker; a domain is checked with its parent domains), the SURBL standing of a watched domain, and live DNS blocklists in `dnsbl` (an address: Spamhaus ZEN with SBL/CSS/XBL/PBL decoded, SpamCop, PSBL, Mailspike; a domain and its parents: Spamhaus DBL, URIBL, SURBL). A domain is also resolved and each A/AAAA address is checked the same way, in `addresses` (each with `ip`, `listed`, `traffic`, `indicators`, `dnsbl`). A list whose own test entry failed is named in `unknown`, not treated as a miss. Not listed is not the same as clean.

Discovered
rotate_webhook_secret

Replace a webhook signing secret; the old one stops working at once. Returns the new secret. Needs a key.

Discovered
run_source

Fetch a source now instead of waiting for its schedule (needs a key; owner or admin).

Discovered
satellite_lookup

A satellite, rocket stage or piece of debris by NORAD number (25544), international designator (1998-067A) or name. Answers `record` (GCAT: owner, country, maker, launch and reentry dates, mass, orbit, status), `tle` (latest elements from SatNOGS) and `position` (where it is over the Earth now: lat, lon, altitude km, speed, period, and how old the elements are), or `matches` for a designator or name.

Discovered
search_items

Full-text search over titles, summaries and tags. Use this first when you know a name.

Discovered
search_profiles

People: one entry per person assembled from every app that serves their OpenProfile.md (podcasters from p0dcasters, public profiles from OutreachGraph). Search by name, headline or anything in the document; newest change first. Each answer carries the page, the openprofile.md URL, accounts, topics, Broadcast shows, the Guest section, and the job title, company and seniority the person published (filter on them with title, company, seniority or tags).

Discovered
search_tlds

Top-level domains: every label in IANA's root, with type, registry, RDAP server and each registrar's one-year register/renew/transfer price (Porkbun, Dynadot, Cloudflare, OVHcloud). Sorted by renewal by default, because the first year is a promotion. `best` is the cheapest USD price across registrars; with `registrar` it is that registrar's own price in its currency. Answers carry facet counts. `trap: true` keeps only labels that renew at 2x the first year or more.

Discovered
ship_lookup

A ship or boat by MMSI (9 digits), IMO number (7 digits) or name, from open AIS (Digitraffic, northern Baltic). Answers `record` (name, type, flag, size, call sign, stated destination, last position) and `live` (position, speed, course, navigation status now, when in range), or `matches` for a name.

Discovered
stats

What this deployment holds: collections, sources, items, items added today, feeds.

Discovered
submit_feed

Suggest an RSS or Atom feed for the index. No key needed. An admin reviews every suggestion before anything is fetched; approved podcast feeds are handed to rssamplifier, everything else becomes a source here.

Discovered
test_webhook

Send a webhook.test event to one of your endpoints now and report the HTTP status. Needs a key.

Discovered
tld_changes

Top-level domains added to or removed from IANA's root, newest first, with the IANA list version each happened in. Nobody else publishes this diff.

Discovered
traffic_list

The nichedb /traffic blocklist: IP addresses our own servers banned for exploit attempts, scanning, brute force or spam, each published only after a reviewer (a person, or riotcoder applying published rules) read the evidence and approved it. Newest approvals first. Optional `days` keeps addresses seen in the last N days, `category` one of exploit, brute-force, scanner, spam, other. Without an API key the newest 100 are returned; with one, `limit` (up to 1000) and `offset` page the whole list.

Discovered
train_lookup

A train by number (Amtrak 5, VIA 1, IC 1, or a bare number) or a European station by name. Answers `record` (the stored run: operator, route, origin, destination, state, delay, last and next stop, every stop with scheduled and actual times; or a station with UIC code, coordinates and operators) and `live` (the same run rebuilt from the upstream now), or `matches` when several runs or stations fit. Amtrak and VIA Rail via Amtraker, Finland via Fintraffic, stations via Trainline (ODbL).

Discovered
transit_city

A city’s public transit now: its lines, its stations (id, name, lines), the service alerts in force and, with `vehicles: true`, every vehicle position the agency publishes. Cities: nyc, boston, bay-area, chicago, london, toronto, philadelphia.

Discovered
transit_station

Next arrivals and the timetable at a public transit station. Give `city` (nyc, boston, bay-area, chicago, london) and `station` (a station id from transit_city, or a name to match). Answers the station (lines, place, step-free), `arrivals` (line, toward, due time, minutes away; live from the agency) and `schedule` (per line and direction on weekdays, Saturday and Sunday: first and last departure, trips and busiest hour).

Discovered
upcoming

Items dated in the future (releases, launches, deadlines), soonest first.

Discovered
update_profile

Edit a profile you own (needs a key). Send `markdown`, a whole OpenProfile.md that replaces what you wrote before, or any of `name`, `headline`, `emoji`, `pronouns`, `web`, `identity` (key: value, null removes), `sections` (name: body, `none` removes), `handle`, `public`. What you write wins over every source and survives every re-read.

Discovered
update_webhook

Change an account webhook: url, events, description, or enabled (true turns it back on and clears its failure count). Needs a key.

Discovered
vuln_lookup

Everything known about one vulnerability, as an OpenVuln record (a valid OSV record). Give `id`: a CVE (CVE-2026-12537), GHSA, OSV, PYSEC, GO, RUSTSEC, MAL (malicious package) or NDB (nichedb.dev write-up) id. Answers OSV fields (`aliases`, `summary`, `details`, `affected` with version ranges, `severity` vectors, `references`) and `database_specific.openvuln`: `label` (critical/high/medium/low), `fix` (`status` fixed/partial/mitigated/unfixed/unknown, first fixed `versions`, `workaround`), `exploitation` (`status` exploited-ransomware/exploited/poc-public/none-known; `kev` from CISA with added/due/ransomware, null when checked and absent; `epss` score and percentile read live from FIRST; `ai`, AI exploit benchmark tasks such as ExploitGym with `result`, where `unstated` means in the benchmark with no published result), `subject` (package, agent, campaign...), `class`, and `sources` naming where each field came from. Never contains exploit code.

Discovered
webhook_deliveries

Recent webhook deliveries with status, attempts, last error and payload: for one endpoint, or all of yours. Needs a key.

Discovered
where_to_buy_book

Where to buy a book. Give an `isbn` (10 or 13 digits, hyphens fine), or a `title` and `author`, or `item` (a books-collection item id). Answers with the edition from Open Library (title, authors, publisher, pages, cover), `online`: links at Amazon, Bookshop.org, Barnes & Noble, Books-A-Million, Target, Walmart, Powell's, ThriftBooks, Better World Books, AbeBooks, eBay, BookFinder, Google Play Books, Kobo, Libby and WorldCat, each with `kind` (new, used, ebook, borrow) and `sponsored`. Give a US `zip` for `inStore`: the chains' store finders for that ZIP and the bookshops and libraries within 10 miles from OpenStreetMap, with address, phone, hours and distance. Sellers publish no stock or prices, so call a shop with the ISBN.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected452 ms48
Connected424 ms42