Servers Changes Log Check Why How it works GitHub

Transparency log · MCP tool definitions

Every MCP server's tools, on the record.

Your AI client trusts the tool descriptions an MCP server sends it — and a server can change them after you approved it. HISTOR keeps a public, signed record of what every remote MCP server in the official registry advertised, and tells you the day it changed.

Remote endpoints: it lists tools and never calls one. Registry packages: bounded canary calls run inside the isolated sandbox. It never says a server is safe — it tells you what was said, and when.

DRAG TO ORBIT
SIM
—

WebGL is unavailable here. The picture is the log itself: each label is a leaf, leaf hashes climb a Merkle tree, and a signed tree head seals the root.

—
Registry endpoints
last crawl
—
Tool sets pinned
current
—
Changes
last 7 days
—
Labels in the log
all time
—
Last signed tree head
UTC

What HISTOR is for

Tool descriptions are instructions. They should not change behind your back.

The problem

A server can change what your model reads

When you connect an MCP server, its tool descriptions go straight to the model as instructions. A server can pass your review with harmless descriptions and change them next week — one added sentence is all a prompt injection needs, and most clients never ask you again.

What HISTOR does

It keeps the public record

Every day HISTOR reads what each remote (streamable-HTTP) endpoint in the official MCP registry advertises, fingerprints it, signs what it saw and appends it to a log that can only grow. When a server's definitions change, the change gets a date and a diff.

What you get

A second pair of eyes you can check

Look up any server before you trust it. Paste what your client received and learn whether everyone else sees the same thing. Follow changes in a feed, or put a badge in your README. Every answer is signed, so you can verify it instead of believing it.

Who it is for

People who use MCP serversin Claude, Cursor or any client — check a server before you connect it, and again when it changes.
Agent builderswhose agents connect to servers on their own — call /check before trusting a tool set.
Registries and directoriesthat want more than stars and download counts — show when a listing's tools last changed.
Server authorswho want to show a stable, documented history — add the badge, and every change you ship is dated in public.

Four words used on this page

Tool definitions
The name, description and input schema of each tool a server offers — the text your model reads.
Pinned
HISTOR has recorded a fingerprint (digest) of the exact definitions it saw, so any later change is detectable.
Label
One signed statement about one observation: what was seen, what matched, whether it changed. Anyone can verify it offline.
Signed tree head
The log's signed summary after each crawl. Comparing two of them proves nothing was deleted or rewritten in between.

SiteCheck Web Intel

io.github.bck-stack/sitecheck-web-intel · https://api.webintel-api.workers.dev/mcp?ref=registry

129 pay-per-call agent tools: security, threat intelligence, web search and SEO data tools. x402

First observed
2026-10-23
Unchanged since
2026-10-23
Last observed
2026-10-23
Observations
1
Changes on record
Tools
129

Tool definitions as last observed (129)

  • search_al_jazeera_articles — Al Jazeera latest articles from its public RSS feed (keyword filter on title/summary/categories). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_ap_news_articles — Latest Associated Press (AP News) articles: headline, publisher, publish time and link, newest first, optionally matching search words, from the last 1-30 days. Found through Google News's public RSS index of apnews.com (the site blocks automated clients); links are Google News redirect links to the article. Headlines only, no article text. Price: $0.002 in USDC per successful call, paid with x402 …
  • search_article_extractor — Extracts one article from a public news or blog page: headline (og:title or h1), author, published and modified times, description and the article body as Markdown. Reads the page you name only; paywalled text is not returned and body text depends on the page using <article> or <main>. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_bbc_news_articles — BBC News top stories from the public BBC RSS feed (latest items; keyword filter on title/summary). Headlines and summaries only, no full article text. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_beehiiv_newsletter — Post archive of a beehiiv newsletter (by beehiiv subdomain, e.g. superhuman, or the newsletter's own domain if hosted on beehiiv): newsletter name, total posts, and per post title, subtitle, URL, publish time, authors, free/premium audience, tags and reading time, 10 per page, newest first. Optional word filter within the page. Public archive data, no key; post bodies are not returned. Price: $0.0 …
  • search_benzinga — Latest Benzinga financial news (the public JSON feed behind benzinga.com): headline, teaser, author, time, URL, tickers, channels and tags. Filter by stock tickers (e.g. AAPL,TSLA) and/or words in the headline/teaser. Newest first, up to 100 stories; no paging into older news, no full article text. Public, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); fai …
  • search_bing_search — Bing web search results (Bing's public RSS search output, no key): result title, URL and snippet, in Bing's ranking order. Shows the first page of results Bing returns for the query; no paging, no ad or SERP-feature data. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_bingx_markets — BingX perpetual swap market ticker (public open API, no key): last price, 24h change, high, low, open, base and quote volume and the time of the last candle close for one symbol such as BTC-USDT. Read-only market data; no trading. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_bleacher_report_articles — Latest Bleacher Report articles: headline, publisher, publish time and link, newest first, optionally matching search words, from the last 1-30 days. Found through Google News's public RSS index of bleacherreport.com (the site blocks automated clients); links are Google News redirect links to the article. Headlines only, no article text. Price: $0.002 in USDC per successful call, paid with x402 (B …
  • search_cnbc — CNBC top news from CNBC's public RSS feed (keyword filter on title/summary). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_cran_r_packages — CRAN R package metadata (crandb JSON mirror of CRAN, public, no key): name, version, title, description, license, maintainer, publication date, dependencies and CRAN page link. Unknown packages return 404. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_crossref — Crossref works search (public REST API, no key): DOI, title, type, container (journal or book), year, authors and link for matching scholarly records. Metadata only; abstracts are not always present in Crossref. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_crossref_academic_paper — Crossref DOI lookup (public REST API, no key): title, authors, journal, publication date, cited-by count, publisher and link for one paper. Unknown DOIs return 404. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_dappradar_rankings — Top 50 dapps from DappRadar's public rankings page: rank, name, token symbol, chains, market cap, token price, price change, trading volume, unique active wallets (UAW) and TVL, for 24h/7d/30d, optionally for one chain (eth, solana, bnb, base, polygon, arbitrum, tron...). Values in USD as shown by DappRadar; missing values are null. Public page, no key. Price: $0.002 in USDC per successful call, p …
  • search_datacite_metadata — DataCite DOI search (public REST API, no key): DOI, title, publication year, resource type, publisher, creators and landing page for datasets, software and other research outputs. Metadata only. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_defector_articles — Defector articles from its public RSS feed (keyword filter on title/summary/tags). Latest items only; excerpts are as published in the feed. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_dev_to_articles — DEV Community (dev.to) latest articles for one tag (public DEV API, no key): title, author, publish time, reactions, comments, reading time and link. Search by tag only; the public API has no free-text search. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_doj_press_releases — US Department of Justice press releases from the justice.gov public RSS feed (keyword filter on title/summary). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_drive_com_au_news — Latest Drive.com.au (Australia) articles: headline, publisher, publish time and link, newest first, optionally matching search words, from the last 1-30 days. Found through Google News's public RSS index of drive.com.au (the site blocks automated clients); links are Google News redirect links to the article. Headlines only, no article text. Price: $0.002 in USDC per successful call, paid with x402 …
  • search_emedicine_articles — Medscape eMedicine (Medscape Reference) clinical articles by specialty: title, topic category, article id and URL from the public specialty index, filtered by words in the title. With details=true the first 5 matches also get summary, author, last-reviewed date and paywall flag from the article page. Metadata only, no article text (Medscape articles need a free login). Price: $0.002 in USDC per su …
  • search_europe_pmc_articles — Europe PMC literature search (public REST API, no key): PMID or source id, title, authors, journal, year, DOI, cited-by count and Europe PMC link. Covers life-science papers including preprints; abstracts are not included. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_fifa_team_rankings — FIFA men's national team world ranking (FIFA public ranking API, no key): position, team, country code, total points, previous points and previous rank for one ranking date. Default date is the latest one listed on FIFA's site when built (2026-10-20); pass dateId to read another listed date. Men's ranking only. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed …
  • search_figshare_articles — Figshare public article search (public API, no key): id, title, DOI, publication date, item type and public page link for research articles, datasets and figures. Searches titles and metadata; file contents are not returned. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_freightwaves — FreightWaves latest news from its public RSS feed (keyword filter on title/summary/categories). Feed carries only the latest few items. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_ft_com_articles — Financial Times headlines from the public FT RSS feeds: international homepage or any section/topic stream (world, markets, companies, technology, opinion, global-economy, us, uk, climate-capital...). Keyword filter on title/summary. Headlines and standfirsts only; full articles are paywalled and not returned. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, So …
  • search_gcaptain_maritime_news — gCaptain maritime news from its public RSS feed (keyword filter on title/summary/categories). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_gdelt_news — Recent news articles (last ~72 hours) that match a query, from GDELT's public Context 2.0 API (DOC 2.0 API as fallback), no key: title, URL, domain, language, time seen and the matching sentence. Supports GDELT query syntax ("exact phrase", sourcelang:english, domain:bbc.co.uk). Covers the sources GDELT monitors, not every outlet. Rate-limited or slow GDELT answers return 503. Price: $0.002 in USD …
  • search_german_impressum — Reads the Impressum (legal notice required on German websites, §5 TMG/DDG) at the page URL you give: e-mail addresses, phone numbers, postal address lines and the notice text as Markdown. Values are read from the page as published; no check that the operator is correct. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_google_ads — Google Ads Transparency Center: search advertisers by name or domain (verified name, advertiser ID, country, approximate ad count), or list the ads of an advertiser ID or website domain (creative ID, format, first and last shown dates, days shown, preview URL, Transparency Center link), optionally for one country; plus the approximate total number of ads. Price: $0.002 in USDC per successful call, …
  • search_google_news — Google News search (public Google News RSS search feed, no key, English/US edition): headline, publisher, publish time and the Google News link for the newest matching stories. Google News links redirect to the publisher; article text is not returned. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_google_search — Organic web search results from the Brave Search API (an independent web index, not Google's): rank, title, URL, snippet, site name, page age and language for the first page of results. Optional country and freshness filters. No ads or SERP features. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_gtex_gene_expression — GTEx Portal gene expression (public API v2, no key): median TPM of one gene in human tissues, sorted highest first, with the GENCODE id it was matched to. Uses GTEx v8 data; unknown gene symbols return 404. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_hacker_news — Hacker News story search through the official HN Search API (Algolia, public, no key): title, article URL, author, points, comment count and discussion link. Returns stories only, most relevant first. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_hackernews_items — One Hacker News item by numeric id from the official HN API (Firebase, public, no key): type, title, author, time, score, comment count, link and plain text. Deleted or unknown ids return 404. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_leiden_ranking — CWTS Leiden Ranking Open Edition 2025 (publication-based, about 2,800 universities, OpenAlex data): for a country or continent, field and period (2006-2009 to 2020-2023), each university's rank, name, country and the indicators of the chosen dimension: scientific impact (P, top 1%), collaboration (international, industry) or open access (P(OA), PP(OA)). Price: $0.002 in USDC per successful call, p …
  • search_mangadex_manga — MangaDex manga search by title (public API, no key): id, title, year, publication status, content rating, genre tags, last chapter and page link. Metadata only; no chapter pages. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_markdown_to_pdf_mcp — npm registry search for MCP servers that convert Markdown to PDF (public npm search API, no key): package name, version, description, publisher, last publish date, monthly and weekly downloads, and npm link. Lists packages as npm reports them; quality is not checked. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_news_across_the_web — Search news across the web in one call: Google News RSS, Bing News RSS and GDELT's Context 2.0 API (public, no keys), merged, de-duplicated by headline and sorted newest first. Each item has title, publisher, URL, time and which engines found it, plus a per-engine status. Headlines and snippets only, no full text. Google links are Google News redirect links. Price: $0.003 in USDC per successful ca …
  • search_nyt_articles — New York Times home page headlines from the public NYT RSS feed (latest items; keyword filter on title/summary/categories). Headlines and abstracts only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_openprescribing — NHS England primary-care prescribing for a drug (official NHSBSA English Prescribing Dataset, monthly, ~2 months behind; the raw data behind OpenPrescribing.net): items, actual cost (GBP) and quantity, grouped by region, ICB, GP practice or product presentation, largest first. Match on BNF chemical substance or presentation name. Open Government Licence, no key. Price: $0.002 in USDC per successfu …
  • search_owgr_golf_rankings — Official World Golf Ranking (OWGR public ranking API, no key): current men's position, player name, country, total points, average points and last week's position for the top players. Current ranking only; no tour or event history. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_pr_newswire — PR Newswire latest news-release list from its public RSS feed (keyword filter on title/summary). Press release headlines and summaries. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_press_release_multi_wire — Latest press releases merged from public wire feeds: PR Newswire (all news), Business Wire (mergers & acquisitions) and Newswire.com. Newest first, de-duplicated, keyword filter on title/summary, each item tagged with its wire. Headlines, links, dates and summaries only. Public RSS, no key. Price: $0.003 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charge …
  • search_prnewswire_press_releases — PR Newswire health-category press releases from its public RSS feed (keyword filter on title/summary). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_pubmed_article_metadata — PubMed article metadata by PMID (NCBI E-utilities esummary, public, no key): title, journal, publication date, authors and DOI for up to 20 ids. Summary fields only, no abstracts. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_reuters_articles — Reuters latest articles from Reuters' public news sitemap (no key): headline, article URL and publication time, newest first. Covers only the most recent items in the sitemap; headlines and links only, no article text. Optional keyword filter on the headline. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_semafor_articles — Semafor articles from its public RSS feed (keyword filter on title/summary/categories). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_seo_audit_tool — On-page SEO audit of one public page from its HTML only: title and description length, one H1, canonical link, language, viewport, robots meta, Open Graph tags, images without alt text, internal and external links, word count. Returns each check with its value and pass or fail. No Core Web Vitals, backlinks or keyword volumes. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana …
  • search_shanghai_arwu_rankings — ShanghaiRanking ARWU 2026 world university ranking (public table on shanghairanking.com, no key): world position, institution, national rank, total score and the six indicator scores (Alumni, Award, HiCi, N&S, PUB, PCP). The public page shows the top 30 only. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_shanghai_gras_rankings — ShanghaiRanking Global Ranking of Academic Subjects (GRAS): for a subject (55, e.g. Mathematics, Computer Science, Clinical Medicine, Economics) and year, ranked universities with rank or band, total score, the five indicator scores, country and institution URL. Filter by country or university name. Without a subject, lists the subjects and their codes. Price: $0.002 in USDC per successful call, p …
  • search_shopify_metadata — Public product metadata of a Shopify store from its storefront products.json feed (no key): title, handle, vendor, product type, tags, publish and update times, price range, variant and image counts and product link. Only stores that expose products.json; stores that block it return 404. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_techcrunch_articles — TechCrunch latest articles from its public RSS feed (keyword filter on title/summary/tags). Headlines and excerpts only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_theintercept_articles — The Intercept articles from its public RSS feed (keyword filter on title/summary/categories). Latest items only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_university_rankings_mega_pack — University rankings side by side from ShanghaiRanking ARWU (rank, national rank, total and six indicator scores) and Times Higher Education World University Rankings (rank, overall, teaching, research, citations, industry and international scores, students, student/staff ratio, % international, female:male). Search by university name and/or country; years selectable. Price: $0.003 in USDC per succ …
  • search_unpaywall — Unpaywall open-access lookup by DOI (free API; it requires a contact e-mail set in UNPAYWALL_EMAIL, not a key): is the paper open access, OA status, best free full-text link, journal and publisher. Returns metadata and links only, not the PDF. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_usda_market_news — USDA AMS Market News (official MyMarketNews API): search the catalogue of livestock, grain, dairy, fruit/vegetable and other market reports by title, or pass a report slug id to get its latest published rows (prices, volumes, report date). Data straight from USDA; needs the owner's free MARS API key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are …
  • search_wayback_cdx — Internet Archive Wayback Machine CDX index: archived snapshots of a URL or domain (timestamp, original URL, MIME type, HTTP status, length) with a link to each capture. Public, no key; the index lists captures, not page text. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_website_content_crawler — Reads one public web page and returns its title, description and main text as Markdown (headings, links, lists), plus link counts. Reads only the page you name: no crawling of other pages, no JavaScript rendering, so pages that build their text in the browser may come back short. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_wechat_articles — WeChat Official Account (公众号) articles matching a query, from Sogou WeChat search (weixin.sogou.com): title, summary, account name, publish time and link, 10 per page. Links are Sogou redirect links that open the mp.weixin.qq.com article in a browser. Sogou may show a captcha under heavy use; that returns 503. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed …
  • search_wikimedia_commons_image — Wikimedia Commons image search (MediaWiki API, public, no key): file title, direct image URL, size, MIME type, license, author and description for free-licensed files. Returns file metadata only, not image bytes. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_wordpress_articles — WordPress.org news posts from the official WordPress news RSS feed (keyword filter on title/summary/categories). Latest posts only. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_world_rugby_rankings — World Rugby men's 15s world rankings (official rankings API, public, no key): position, team, country code, rating points and previous position and points, from the current table. Men's rankings only; the table is updated by World Rugby. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • search_wsj_articles — WSJ World News headlines from the public Dow Jones RSS feed (latest items; keyword filter on title/summary). Headlines and short summaries only; full articles are paywalled and not returned. Public feed, no key. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_abuseipdb_check — AbuseIPDB reputation for an IPv4 address over the last 90 days: abuse confidence score (0-100), number of abuse reports, last report date, ISP, usage type and country. Needs a free AbuseIPDB key configured by the operator; reports are crowd-sourced. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_asn_peers_upstream — For an autonomous system (e.g. AS13335): how many upstream (transit) and downstream neighbours RIPEstat sees in BGP, the top upstreams ranked by 'power' with their IPv4 and IPv6 peer counts, and the top downstreams. Built from RIS route collector paths, so it is an observed view, not the contract. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not …
  • security_barracuda_reputation — Checks an IPv4 mail-sending address against the Barracuda Reputation Block List (b.barracudacentral.org) through public DNS. Listed addresses return a 127.0.0.x code; unlisted ones return no record. The list is updated continuously, so this is a point-in-time answer. Domain reputation is not covered. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are …
  • security_bgp_prefix_origin — For an IPv4 prefix (e.g. 8.8.8.0/24): the origin AS seen announcing it now across RIPE RIS peers, its RPKI status for that origin (valid, invalid or unknown), route objects, visibility, and how many more-specific and less-specific prefixes are seen. An 'invalid' RPKI status is a hijack warning sign; it is not proof of a hijack. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solan …
  • security_bimi_record_audit — Reads a domain's BIMI record (default._bimi.<domain> TXT): whether it is published, the SVG logo URL (l=) and the certificate URL (a=, a VMC or CMC for mailbox providers). Checks the v=BIMI1 tag and that the URLs are https. It does not download the logo or validate the certificate. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_blocklist_de — Checks an IPv4 address against the Blocklist.de 'all' list of IPs reported for attacks such as failed logins, SSH and mail abuse (about 24,000 addresses). A hit means it was reported recently; the list keeps only current reports. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_censys_exposure — Censys host view for an IPv4 address: the services, ports and protocols Censys has observed on it with their last scan time and detected software, plus autonomous system, location, network owner and reverse DNS, from the Censys Platform API. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_cert_revocation_crl — For a domain's current certificate (taken from public Certificate Transparency data via CertSpotter): reads its CRL Distribution Point, downloads that public CRL, and reports whether the certificate's serial number is on it, plus the CRL's thisUpdate and nextUpdate. OCSP is not queried. Revocation status is as of the CRL's publication time. Price: $0.002 in USDC per successful call, paid with x402 …
  • security_ciarmy_bad_ips — Checks an IPv4 address against the CI Army (CINS Score) bad-IP list, a collective-intelligence list of addresses that recently showed hostile activity across a sensor network (about 15,000 entries). Listed means it is on the current list; the list is a snapshot. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_cisa_known_exploits — CISA's Known Exploited Vulnerabilities catalog (public JSON). With cveId: whether that CVE is on the list, with vendor, product, date added, federal due date, required action and ransomware-use flag. Without it: catalog size, release date and the newest additions (up to 50). Listing means exploitation was reported, not a risk score. Price: $0.002 in USDC per successful call, paid with x402 (Base, …
  • security_cookie_security — Lists the cookies a site sets on its public home page (one anonymous GET, no login) with their Secure, HttpOnly and SameSite flags, and flags the ones missing a flag. Cookies set later, after login or on other pages, are not seen. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_cors_misconfig — Checks how a site's home page answers a cross-origin request from a made-up origin: whether it echoes that origin back, sends a wildcard (*), and whether credentials are allowed with it. Echoing an arbitrary origin together with credentials is the risky case. One GET of the home page; it does not test API routes or the null origin. Price: $0.002 in USDC per successful call, paid with x402 (Base, S …
  • security_crossdomain_xml_test — Reads a site's public crossdomain.xml (Adobe Flash) and clientaccesspolicy.xml (Silverlight) if they exist, lists the origins they allow, and flags wildcard grants ('*'). Old policies are rarely needed now, so a wildcard here mostly means leftovers; absence is the normal case. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_crtsh_transparency — Subdomain names found in public Certificate Transparency logs for a domain (via CertSpotter): unique host names and wildcard names, issuers, latest issue date and how many listed certificates are still valid. Returns the first page only (up to 100 certificates) and lists at most 100 names; wildcard names are shown as *.domain. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana …
  • security_csp_evaluator_audit — Reads the Content-Security-Policy header of a site's home page and lists weak points: 'unsafe-inline' and 'unsafe-eval' in script sources, bare wildcards, data: or http: script sources, a missing default-src or script-src, and a missing policy altogether. Reports directives. Header only; a CSP in a meta tag is not read. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc …
  • security_cve_details_feed — Vulnerability trend for a vendor (optionally one product) from the NIST NVD: CVEs published in the last N days (default 7, up to 120; a big vendor over a long window can take NVD 30+ seconds) naming the vendor (or mapped to its CPE with match=cpe), counts by severity, average and maximum CVSS score, CVEs per week, top CWE weaknesses and the highest-scored CVEs with score, severity, vector, date an …
  • security_cve_nvd_lookup — One CVE record from the NIST National Vulnerability Database: description, published and last-modified dates, NVD status, primary CVSS score and severity (v4.0, 3.1, 3.0 or 2.0, whichever NVD marks primary first), CWE weakness IDs and up to 5 reference URLs. It does not say whether the CVE is being exploited (use cisa-known-exploits or epss-exploit-score for that). Price: $0.002 in USDC per succes …
  • security_cymru_asn_lookup — Maps an IPv4 address to its origin AS number, the BGP prefix that covers it, the country, the registry and the allocation date, using Team Cymru's public IP-to-ASN DNS service. Returns no origin when Cymru has no mapping for the address. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_dkim_key_checker — Reads the DKIM public key published at <selector>._domainkey.<domain>: key type, whether it is revoked (empty p=), decoded key size in bytes and a strength hint (about 1024-bit vs 2048-bit RSA), and basic syntax (v=DKIM1). Follows one CNAME, which large providers use. Does not check a signed message. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are …
  • security_dmarc_spf_dkim — Email authentication DNS records for a domain: DMARC policy (p, sp, pct, rua), SPF record and its all-mechanism, and DKIM public keys for a selector you give or for 8 common selectors (revoked keys and CNAME-delegated keys are reported). Reads the published DNS records only; it does not check alignment against a real message. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana …
  • security_dns_caa_records — Lists the CAA (Certification Authority Authorization) records published on a domain: which CAs may issue certificates (issue), wildcard certificates (issuewild) and the incident-report address (iodef). Shows the records on the exact name only; CAA is inherited from parent domains when a name has none, which this tool does not walk. Price: $0.002 in USDC per successful call, paid with x402 (Base, S …
  • security_dns_propagation — Asks two independent public DNS resolvers (AdGuard DNS and NextDNS) for the same name and record type right now and reports whether they agree, with each answer set and its lowest TTL. It shows cache and geo-DNS differences between resolvers; it is two vantage points, not a worldwide propagation survey. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls a …
  • security_dns_records — DNS records of a domain (A, AAAA, MX, NS, TXT, CNAME, CAA, SOA) resolved live through the public AdGuard DNS JSON resolver (NextDNS as backup). Shows answers as they resolve now, with TTLs; it does not walk the delegation chain or query the authoritative servers directly. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_dnssec_validator — DNSSEC check for a domain: whether a DS record exists at the parent zone (the domain is signed), and whether two public validating resolvers (AdGuard DNS, NextDNS) return its A answer with the AD (authenticated) flag. It reads the resolvers' verdict; it does not validate the signature chain itself. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are no …
  • security_domain_typosquatting — For a brand domain, generates up to 24 lookalike names (letter omission, doubling and swapping, plus .co/.net/.org/.io swaps) and checks which ones have name servers in DNS right now. Registered-looking names are listed with their name servers. A lookalike with no name servers may still be registered without DNS, and this is not a trademark or phishing verdict. Price: $0.002 in USDC per successful …
  • security_email_disposable — Checks whether an email address's domain (or a domain you give) is on the community disposable and temporary email blocklist (about 9,900 domains). Only the domain is checked, never the mailbox, and a domain missing from the list is not proven to be permanent. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_epss_exploit_score — EPSS (Exploit Prediction Scoring System) for one CVE from FIRST's public API: the estimated probability (0 to 1) of exploitation in the next 30 days, its percentile among all scored CVEs and the scoring date. EPSS predicts; it does not say an exploit exists (see cisa-known-exploits). Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_feodotracker_c2 — Checks an IPv4 address against the abuse.ch Feodo Tracker botnet C2 blocklist (Emotet, QakBot and similar). A hit returns the port, online status, malware family, country, AS and first and last seen dates. Covers only the C2 servers this feed tracks. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_grey_noise_noise — GreyNoise Community lookup for an IPv4 address: whether it was seen mass-scanning the internet recently (noise), whether it is a known benign service (riot), its classification (benign, malicious, unknown), name and last-seen date. An address GreyNoise has not seen returns noise=false with a message; it is not a clean verdict. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana …
  • security_hibp_breach_check — Lists the data breaches HaveIBeenPwned has recorded for a domain (breach name, breach date, accounts affected, data types exposed, verified flag). It is the public breach catalogue, not a check of individual email addresses (that needs a paid key and is not offered here). Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_ip_geolocation_asn — IPv4 or IPv6 address → covering BGP prefix, origin AS number and holder name, whether the prefix is announced, and a coarse country and map point, all from RIPEstat. Location is an estimate (a block-level database), not a street address; the city is often empty. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_ipsum_threat_level — Checks an IPv4 address against IPsum, an aggregate of public blocklists: returns the number of source feeds that list it (its level, 1 to 8) and whether it is listed at all. A higher level means more feeds agree. Not listed means none of the aggregated feeds list it. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_jwt_token_inspector — Decodes a JWT you supply (header and payload, base64url JSON) and reports its algorithm, key id, claims, and time checks (exp, nbf, iat). Flags alg none, symmetric HS algorithms, missing exp and a jku/x5u key reference. It does not verify the signature, because no key is given, and it does not fetch the key URL. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); faile …
  • security_malbazaar_samples — Looks up a file hash (SHA-256, SHA-1 or MD5) in abuse.ch MalwareBazaar: whether the sample is known, its other hashes, file name, type, size, signature (malware family), first/last seen, reporter, origin country, delivery method, tags, download count and code-signing info. Metadata only; the sample itself is never downloaded. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana …
  • security_mitre_attck_matrix — Looks up one MITRE ATT&CK technique (e.g. T1059 or T1059.001) on its official public page: its name, the tactic-level summary text and the page title. Reads one page per call; it does not return the whole matrix or a technique's sub-techniques list. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • security_mta_sts_validator — Checks MTA-STS for a mail domain: the _mta-sts TXT record (v=STSv1 and id) and the HTTPS policy file (mode enforce, testing or none, the MX patterns and max_age). Reports whether the record and the policy are both present and whether the policy's version is valid. Does not test the mail servers themselves. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed call …
  • security_mx_server_test — For a mail domain: lists up to 3 MX hosts with their IPv4 addresses and, from Shodan's pre-collected passive scan data, which SMTP ports (25, 465, 587) were seen open on each address. Passive and possibly old; no SMTP conversation, banner, STARTTLS or certificate test is made. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.
  • … and 29 more

The signed observations, every earlier tool set and a diff of each change: this page with scripts on, or /api/v1/servers/45e12c69301ac5c9.

Read → digest → label → append → sign → compare

How the log works

Six steps, every one of them checkable by someone who does not trust HISTOR. The only thing you have to take on faith is that the observation happened when the label says it did — and the log makes it impossible to change that story afterwards.

01

Read

Remote endpoints in the official MCP registry: initialize, then tools/list, drained across every page; no tool is called, and private addresses are refused before the connection opens. npm and PyPI packages: installed and started in the sandbox described below, with no route out.

02

Digest

The tool set is reduced to name, description, input and output schema, sorted by UTF-16 code units and hashed over its RFC 8785 canonical form. Anyone holding the same tools gets the same digest — which is what makes a comparison possible.

03

Label

Four MTL/1 methods, one signed AWR/2 document each: what was observed, what the WARDEN pattern set matched, whether the definitions changed since the last label, and whether the name is on a threat list. No score, ever.

04

Append

Every label becomes a leaf of an RFC 9162 Merkle tree: leaf hash = SHA-256(0x00 ‖ JCS(label)). The label you download is the leaf input, so you can recompute its hash yourself.

05

Sign

After each crawl HISTOR signs a tree head: the size and the root. Keep yesterday's head; ask for a consistency proof to today's; if anything was removed or rewritten, the proof fails.

06

Compare

Each day a continuity label compares the new digest with the last one. Equal: "unchanged since". Different: a change, with the date and a per-tool diff. A client that checks what it received adds the view no crawler has.

Where an npm or PyPI package is run

Test conditions

A package observation is true for these conditions, and no others. Every package page names the exact image it ran in and any configuration it was given.

System

Linux x86_64, inside gVisor (runsc): the package talks to a kernel written for sandboxing, not to the host's. An unprivileged user, no capabilities, a read-only root.

Runtimes

npm packages in histor-node:22, PyPI packages in histor-python:3.12: the official node:22-bookworm-slim and python:3.12-slim images plus bash, git, Python 3 or Node 22 and a Java 21 runtime — never Docker — built when a sandbox host is installed. A package whose Requires-Python excludes 3.12 runs on histor-python:3.13 or 3.14; one that requires a newer Node runs again on histor-node:24. The exact image a package ran in is on its page.

Install

npm with --ignore-scripts, then the install scripts in a traced stage of their own. PyPI: wheels only — a package that ships only source is reported, never built.

Network

No route out. Every name the package looks up resolves to HISTOR's own traps, which record what was sent and forward nothing. A server that needs the internet to start shows that here.

Secrets

None are real. Decoy credentials sit in HOME and a decoy .env in the working directory. A variable the package says it needs gets a placeholder; where the placeholder was sent is recorded.

Limits

512 MB of memory, one CPU, 64 MB of /tmp. 360 s to install, 150 s to start and answer; up to 15 tools called once each with canary arguments, 8 s per call.

Configuration

Only names: required variables its registry entry declares or that it printed when it exited, and a start argument such as serve when its usage text offers one. Never a value from anyone else.

What a label does not say

The profile HISTOR implements forbids the words safe, secure, audited, certified, approved and trusted. Here is why, in the terms of what the log can and cannot show.

Not a safety rating

A pattern match is a reason to read a definition, not a finding. Three of the four methods can never return fail. There is no score to rank by, because no score HISTOR could compute would mean what a reader takes it to mean.

Not the code

Labels are about advertised text. A remote endpoint's source is never read and its tools are never invoked; a package runs only in the sandbox, against nothing real. A server can keep identical definitions and behave differently for real users; the log cannot see that, and says so inside every label.

A change is not an accusation

A version bump changes definitions too. A change is shown as a date and a diff, in amber, never red. What you do with it is yours: re-read, re-approve, or pin the old digest.

A package as run here, not on your machine

An npm or PyPI server is observed under the test conditions above: Linux, no internet, placeholder keys. One that needs Windows, a real account or the network may show fewer tools or none; its page says why it exited.

One operator, one key

Today one party runs the log. A second observer on another network is the next step, and any AIMarket hub can run one. Until then, what the key proves is who said it — not that it is true.

Behind a login, unseen

Endpoints that require authentication answer 401 to everyone without a key, including HISTOR. They are counted and listed as not observed, never dropped from the numbers.

For clients, registries and server authors

Use it

Before your agent trusts a server, send the tools it received. The answer is signed by the log's did:key and names the tree head it was given under.

curl -sS https://histor.modelmarket.dev/api/v1/check \
  -H 'Content-Type: application/json' \
  -d '{"endpoint":"https://example.com/mcp","tools":[ …tools/list result… ],"contribute":true}'
# -> {"type":"histor.check/v1","match":"same"|"different"|"previously-observed"|…,
#     "observed":{"unchangedSince":"…","changes":0}, "patternScan":{…}, "signature":{…}}

# README badge for your server
[![MCP tool defs](https://histor.modelmarket.dev/badge/<id>.svg)](https://histor.modelmarket.dev/s/<id>)

# Atom feed of every observed change
https://histor.modelmarket.dev/feed.xml
WARDENchecks definitions at connect
HISTORremembers what was advertised
THEMISadmits at publish
Hublists histor.check@v1
AWRthe signed format

Questions

Is this a marketplace listing?

No. The server list is the log's index: every remote endpoint in the official MCP registry, with what HISTOR could observe about it. Nothing here is for sale and nothing is ranked by quality.

Does HISTOR tell me a server is safe?

No, and it never will. It tells you what a server advertised, whether that changed, and which published patterns matched the text. Whether to trust the server is your decision — HISTOR makes sure you decide on the same facts as everyone else.

Why are so many servers "not observed"?

Most remote MCP endpoints require a login (they answer 401 to anyone without a key), some use the legacy SSE transport or need per-user values in the URL, and some are simply down. They stay on the list with the reason, so the numbers never hide them.

How do I check a server I already use?

Open the Check tab, paste the server's endpoint and the tools/list result your client received, and press Check. You get back, signed, whether HISTOR observed the same definitions — or different ones, or an older set.

How do I get a badge for my server?

Find your endpoint on the Servers tab, open it, and copy the Markdown snippet under the facts. The badge shows the date your definitions were pinned or last changed, and links to the full history.

Why should I trust HISTOR itself?

You do not have to. Every label and every tree head is signed with one published key; the Log tab proves in your browser that the log only grew; and the command-line auditor does the same from any machine. What remains is that one operator runs it today — a second, independent observer is the next step.

What does it cost?

Looking things up, the badges, the feed and /check are free. HISTOR also offers histor.check@v1 to the AIMarket Hub, so agents can reach it through the market.

I run an MCP server. What does HISTOR send it, and how do I opt out?

Once a day: initialize, notifications/initialized and tools/list — never a tool call, never a redirect followed, at most two connections per host, from a User-Agent that starts with histor/. To be left out, open an issue on the histor repository with your endpoint or host; it is then listed as not observed (operator-opt-out), with the reason, rather than silently dropped. Labels already in the log stay: the log only grows.