Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "traffic_list"
⟨16 unchanged words⟩ or spam, each published only after a reviewer (a person,reviewedor riotcoder applying published rules) read the evidence and approved it. Newest approvals first. ⟨39 unchanged words⟩
Added "business_standing", "reputation_lookup" and "traffic_list" (27 tools before, 30 now)
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 ident…
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…
The nichedb /traffic blocklist: IP addresses our own servers banned for exploit attempts, scanning, brute force or spam, each published only after a person reviewed 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.
Added "find_profile_by_linkedin"; changed the definition of "search_profiles" and "update_profile" (26 tools before, 27 now)
⟨38 unchanged words⟩ the openprofile.md URL, accounts, topics, Broadcast shows, the Guest section, and theGuestjobsection.title, company and seniority the person published (filter on them with title, company, seniority or tags).
{"properties":{"company":{"description":"Company domain, URL or name (optional)","type":"string"},"limit":{"description":"Default 30, max ⟨14 unchanged words⟩ (optional)","type":"string"},"seniority":{"description":"Seniority derived from the title (optional)","enum":["c-suite","vp","director","manager","senior","entry"],"type":"string"},"
Certificate changed, valid to 2026-12-23
Added "check_domain", "get_tld", "search_tlds" and 1 more (22 tools before, 26 now)
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.
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.
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.
Added "population" (21 tools before, 22 now)
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: Wor…
Changed the definition of "create_feed", "feed_items", "match_items" and 3 more
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"collection":{"description":"Collection slug","type ⟨27 unchanged words⟩ :"string"},"type":"array"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"name":{"description":"Feed name","type ⟨9 unchanged words⟩ "Text match","type":"string"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"sources":{"description":"Source slugs","items ⟨10 unchanged words⟩ {"type":"string"},"type":"array"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"},"upcoming":{"type":"boolean"} ⟨5 unchanged words⟩
Added "claim_profile", "get_profile", "search_profiles" and 2 more (16 tools before, 21 now)
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.
One person by id, `<slug>-<id>` or handle: the parsed view and the OpenProfile.md as served.
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 and the Guest section.
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.
Certificate recorded, valid to 2026-12-04
Authorization not required
First tool surface recorded: 16 tools (server version 1.0.0)
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨19 unchanged words⟩ before, or any of `name`, `headline`, `emoji`, `pronouns`, `web`, `identity` (key: value, null removes), `sections` ⟨17 unchanged words⟩
{"properties":{"emoji":{"description":"Your mark next to your name: one emoji or an OpenEmoji :shortcode:; empty removes","type":"string"},"handle":{"description":"Your URL: /c/profiles/<handle>" ⟨9 unchanged words⟩ ":{"description":"Identity keys: Kind, Emoji, Pronouns, Web, Email, Location, ...; null removes", ⟨11 unchanged words⟩ "The name","type":"string"},"pronouns":{"description":"As you write them (she/her, they/them, any); empty removes, never inferred","type":"string"},"public":{"description":"Listed and pulled by ⟨26 unchanged words⟩ word none removes one","type":"object"},"web":{"description":"Your home page (Website, Homepage and Site are the same key); empty removes","type":"string"}},"required":["ref"],"type":"object"}
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.
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.
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"before_id":{"description":"Keysetcursorcursor; cannot combine with distance sorting","type":"integer"},"feed":{"description":"Feed slug","type":"string"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"limit":{"description":"Default 30, max 200","type":"integer"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"offset":{"description":"Distance pagination offset","type":"integer"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"}},"required":["feed"],"type":"object"}
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"collection":{"description":"Collection slug: screen, ⟨28 unchanged words⟩ channel, fixture","type":"string"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"limit":{"description":"Default 5, max 50","type":"integer"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"q":{"description":"The name as written","type":"string"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"},"year":{" ⟨13 unchanged words⟩
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"before_id":{"description":"Keysetcursorcursor; cannot combine with distance sorting","type":"integer"},"collection":{ ⟨7 unchanged words⟩ "Item kind","type":"string"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"limit":{"description":"Default 30, max 200","type":"integer"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"offset":{"description":"Distance pagination offset","type":"integer"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"source":{"description":"Source slug","type":"string"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"}},"type":"object"}
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"collection":{"description":"Collection slug","type ⟨3 unchanged words⟩ "Item kind","type":"string"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"limit":{"description":"Default 20, max 100","type":"integer"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"q":{"description":"Query","type":"string"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"}},"required":[ ⟨3 unchanged words⟩
{"properties":{"bbox":{"description":"west,south,east,north; west > east crosses the antimeridian","type":"string"},"collection":{"description":"Collection slug","type ⟨4 unchanged words⟩ default 30","type":"integer"},"lat":{"description":"Query center latitude; requires long","maximum":90,"minimum":-90,"type":"number"},"limit":{"description":"Default 50","type":"integer"},"long":{"description":"Query center longitude; requires lat","maximum":180,"minimum":-180,"type":"number"},"radius":{"description":"Default 10; maximum 1000 km","exclusiveMinimum":0,"type":"number"},"sort":{"enum":["id","published","updated","distance"],"type":"string"},"unit":{"description":"Default km","enum":["km","mi"],"type":"string"}},"type":"object"}
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`, `identity` (key: value, null removes), `sections` (name: body, `none` removes), `handle`, `public`. What you write wins over every source and survives every re-read.