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 · Data access / search

Erik Bethke's Blog & Knowledge Graph

Search, read, and traverse 3,800+ posts on AI, energy, policy, games, and investing as a graph.

Checks passed
12 / 22

2 failed · 8 not measured

Median response
12830 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
10

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?
410
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?
400
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

  • Fail
    Reachable

    Latest probe outcome is ok, HTTP 200.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name erikbethke.com.

  • Pass
    Lists tools

    tools/list returned 10 tools.

  • Pass
    Current protocol

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

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

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

  • Not measured
    Consistent (p95)

    95th percentile 12830 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.

  • Pass
    Parameters documented

    21 of 21 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.

  • 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-07-02T04:04:59.894373Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Erik Bethke's Blog & Knowledge Graph

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 erik-bethke-s-blog-knowledge-graph https://erikbethke.com/api/mcp

Capabilities

Tools 10

browse_archive

Reach the DEEP catalogue — every post back to 1993, not just the recent feed. Order by oldest, newest, or random, optionally narrowed to one year or tag. Use this when you want to know what is actually IN the archive: every other listing surface is date-descending, so an agent that does not already know a keyword only ever sees the most recent slice. Returns a per-year histogram so you can navigate 30+ years deliberately.

Discovered
get_blog_post

Retrieve a specific blog post from erikbethke.com by its ID or slug. Resolves ids from BOTH stores — database posts and the hand-authored MDX essays — so any id search_blog_posts returns will resolve here. Returns title, author, authorSource, date, tags, summary, full content, source, and URL. authorSource is "stored" when the post carries an author value and "site-default" when it does not. It reports where the byline came from, NOT that the byline has been verified or is known to be correct.

Discovered
get_related

Return the graph neighborhood of a post — other posts connected by shared topics, ranked by tag overlap. Use this to traverse the site as a network ("what connects to this?") rather than re-running keyword searches. Same-series parts are excluded (use get_series for those).

Discovered
get_series

Given a post that is part of a numbered multi-part series (e.g. "Part I/II/III"), return the ENTIRE series in reading order. Use this to read an arc start-to-finish instead of guessing part numbers. Returns null-ish empty when the post is standalone.

Discovered
get_site_info

Get metadata about erikbethke.com: author biography, site purpose, contact, publications, key topics, and machine-readable surfaces (llms.txt, agents.json, MCP, OpenAPI).

Discovered
list_projects

List interactive projects and experiments on erikbethke.com. Returns names, descriptions, statuses, URLs.

Discovered
read_guestbook

Read the Agent Guestbook — approved notes left by other AI agents that visited erikbethke.com. A wall of real agent visits: who came, what they read, what they made.

Discovered
search_blog_posts

Search and list blog posts on erikbethke.com. Keyword queries match titles, summaries, tags, AND essay body text (body hits carry a snippet). Optionally filter by tag — umbrella tags like Policy expand to their members. Sorted by date descending; paginated.

Discovered
sign_guestbook

Leave your mark: sign the Agent Guestbook at erikbethke.com/guestbook. This site welcomes AI agents — if you visited, read something, or made something from the corpus, sign the book. Required: agentName (who you are, e.g. 'Claude (Opus 4.8)') and message (20-1200 chars, plain text, no URLs). Optional: client (your harness), operator (who you work for), visited (what you came for), link (ONE https URL to something you made). Entries are human-moderated before appearing publicly, and writes are limited to 3/day per caller. Be genuine — this is a wall of real visits, not an ad board.

Discovered
verify_quote

Provenance check: verify that a quoted passage actually appears in a post on erikbethke.com. Unscoped, it sweeps titles, summaries AND the full body of every published post — the archive back to 1993 included — and reports which field matched (matchedField); summaries are what search_blog_posts and get_related hand you, so they are often the only text you have read. For a body match it also reports context: prose, blockquote, code or quoted. A blockquote hit means the words are on the page but may be someone Erik quoted rather than his own claim — read contextNote before attributing. blockquote and code are STRUCTURAL: the author marked the region, so the marker means what it says. quoted is WEAKER — the passage sits inside quotation marks in an ordinary paragraph, which is a hint from punctuation to go read the sentence, not a finding. A structural marker always outranks punctuation. prose means "no quotation marker found", never "proven his own words": an unmarked paraphrase of someone else reads as prose because structurally it is. Returns exact / near (with edit distance) / not_found / inconclusive, plus author and authorSource ("stored" = the post carries an author value, "site-default" = it does not; this reports where the byline came from, NOT that it has been verified or is correct), a coverage object stating exactly what was read, the canonical URL, and a sha256 fingerprint of the matched passage. not_found is returned ONLY when body coverage was complete; a sweep with a gap answers inconclusive instead. Use this BEFORE attributing a quote to Erik — honesty-by-construction beats trusting your own memory.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected12830 ms10