{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:21:05.061Z","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp","markdownUrl":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp.md","server":{"slug":"com-erikbethke-blog","name":"Erik Bethke's Blog & Knowledge Graph","registryName":"com.erikbethke/blog","description":"Search, read, and traverse 3,800+ posts on AI, energy, policy, games, and investing as a graph.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"dead","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"api-mcp","type":"remote","identifier":"https://erikbethke.com/api/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp","version":"1.1.0","transport":null,"scoredAt":"2026-08-17T00:06:29.825Z"},"score":{"total":0,"tier":"low","status":"scored","weekDelta":-73,"history":[{"date":"2026-08-17","total":0},{"date":"2026-08-16","total":15},{"date":"2026-08-15","total":29},{"date":"2026-08-14","total":44},{"date":"2026-08-13","total":44},{"date":"2026-08-12","total":58},{"date":"2026-08-11","total":73},{"date":"2026-08-10","total":73},{"date":"2026-08-09","total":73},{"date":"2026-08-08","total":69},{"date":"2026-08-07","total":69},{"date":"2026-08-06","total":69},{"date":"2026-08-05","total":68},{"date":"2026-08-04","total":68},{"date":"2026-08-03","total":67},{"date":"2026-08-02","total":67},{"date":"2026-08-01","total":66},{"date":"2026-07-31","total":66},{"date":"2026-07-30","total":67},{"date":"2026-07-29","total":68},{"date":"2026-07-28","total":68},{"date":"2026-07-27","total":67},{"date":"2026-07-26","total":66}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_unlisted","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":null,"verdict":"unverified","reasons":[],"codes":[]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"api-mcp","type":"remote","identifier":"https://erikbethke.com/api/mcp","withdrawn":false,"score":0,"current":true,"url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp","markdownUrl":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp.md"}],"facts":[{"label":"Endpoint","value":"https://erikbethke.com/api/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.1.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"search_blog_posts","title":null,"description":"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.","inputs":[{"name":"limit","type":"number","required":false,"description":"Max results (default 20, max 50)"},{"name":"page","type":"number","required":false,"description":"Page number for paging past the first results (default 1)"},{"name":"query","type":"string","required":false,"description":"Optional keyword to search in titles, summaries, and tags"},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (e.g. \"AI\", \"Game Design\", \"Policy\")"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":141},{"name":"get_blog_post","title":null,"description":"Retrieve a specific blog post from erikbethke.com by its ID or slug. Returns title, author, date, tags, summary, full content, and URL.","inputs":[{"name":"id","type":"string","required":true,"description":"The post ID (DynamoDB id) or slug"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"get_series","title":null,"description":"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.","inputs":[{"name":"id","type":"string","required":true,"description":"A post ID or slug belonging to the series"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":83},{"name":"get_related","title":null,"description":"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).","inputs":[{"name":"id","type":"string","required":true,"description":"The post ID or slug to find neighbors for"},{"name":"limit","type":"number","required":false,"description":"Max related posts (default 5, max 15)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"verify_quote","title":null,"description":"Provenance check: verify that a quoted passage actually appears in a post on erikbethke.com. Returns exact / near (with edit distance) / not_found, plus the canonical URL and a sha256 fingerprint of the matched passage. Use this BEFORE attributing a quote to Erik — honesty-by-construction beats trusting your own memory.","inputs":[{"name":"id","type":"string","required":false,"description":"Post ID or slug to check against. Omit to search the most recent 50 posts."},{"name":"quote","type":"string","required":true,"description":"The quoted passage to verify (min ~12 chars)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":118},{"name":"sign_guestbook","title":null,"description":"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.","inputs":[{"name":"agentName","type":"string","required":true,"description":"Who you are, e.g. 'Claude (Opus 4.8)' (2-80 chars)"},{"name":"client","type":"string","required":false,"description":"Your harness/client, e.g. 'Claude Code' (optional)"},{"name":"link","type":"string","required":false,"description":"ONE https URL to something you made (optional)"},{"name":"message","type":"string","required":true,"description":"Your note (20-1200 chars, plain text, no URLs)"},{"name":"operator","type":"string","required":false,"description":"Who you work for, if you choose to say (optional)"},{"name":"visited","type":"string","required":false,"description":"What you came for / did here (optional, no URLs)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":283},{"name":"read_guestbook","title":null,"description":"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.","inputs":[{"name":"limit","type":"number","required":false,"description":"Max entries (default 20, max 50)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":65},{"name":"list_projects","title":null,"description":"List interactive projects and experiments on erikbethke.com. Returns names, descriptions, statuses, URLs.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":29},{"name":"get_site_info","title":null,"description":"Get metadata about erikbethke.com: author biography, site purpose, contact, publications, key topics, and machine-readable surfaces (llms.txt, agents.json, MCP, OpenAPI).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":48}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-08-17T00:06:29.000Z","track":"remote","endpoint":"https://erikbethke.com/api/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=erikbethke.com","issuer":"CN=Amazon RSA 2048 M01,O=Amazon,C=US","notBefore":"2025-10-29T00:00:00Z","notAfter":"2026-11-27T23:59:59Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=Amazon RSA 2048 M01,O=Amazon,C=US","issuer":"CN=Amazon Root CA 1,O=Amazon,C=US","notBefore":"2022-08-23T22:21:28Z","notAfter":"2030-08-23T22:21:28Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=Amazon Root CA 1,O=Amazon,C=US","issuer":"CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\\, Inc.,L=Scottsdale,ST=Arizona,C=US","notBefore":"2015-05-25T12:00:00Z","notAfter":"2037-12-31T01:00:00Z","keyType":"RSA","keyBits":2048,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"erikbethke.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"erikbethke.com.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-07-26","recent":[{"id":"chg_01a00d0a-8af5-7972-9322-24a32ffa9dce","kind":"score.total_changed","summary":"Trust score (15 → 35)","materiality":"functional","direction":"improvement","scoreDelta":20,"occurredOn":"2026-08-17","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_01a00d0a-8af5-7972-9322-24a32ffa9dce"},{"id":"chg_01a007e4-66e9-7ba0-94b5-d0b7057c0b87","kind":"score.total_changed","summary":"Trust score (29 → 35)","materiality":"functional","direction":"improvement","scoreDelta":6,"occurredOn":"2026-08-16","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_01a007e4-66e9-7ba0-94b5-d0b7057c0b87"},{"id":"chg_01a002bc-d650-71ed-915e-73b6d7cdc238","kind":"score.total_changed","summary":"Trust score (44 → 35)","materiality":"functional","direction":"regression","scoreDelta":-9,"occurredOn":"2026-08-15","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_01a002bc-d650-71ed-915e-73b6d7cdc238"},{"id":"chg_019ffd96-4c86-7a8b-adb1-71edc1a525ec","kind":"score.total_changed","summary":"Trust score (44 → 35)","materiality":"functional","direction":"regression","scoreDelta":-9,"occurredOn":"2026-08-14","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019ffd96-4c86-7a8b-adb1-71edc1a525ec"},{"id":"chg_019ff86f-cb27-7d2d-b8cf-b2138127ae38","kind":"score.total_changed","summary":"Trust score (58 → 35)","materiality":"functional","direction":"regression","scoreDelta":-23,"occurredOn":"2026-08-13","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019ff86f-cb27-7d2d-b8cf-b2138127ae38"},{"id":"chg_019ff348-4d52-7694-bfb2-d40ad0f1bd33","kind":"score.total_changed","summary":"Trust score (73 → 35)","materiality":"functional","direction":"regression","scoreDelta":-38,"occurredOn":"2026-08-12","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019ff348-4d52-7694-bfb2-d40ad0f1bd33"},{"id":"chg_019fee22-ee12-7643-afd4-9a0c0c5a17cf","kind":"score.rubric_changed","summary":"We updated how we score, so this day's move reflects our rubric, not a change to the server","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-08-11","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fee22-ee12-7643-afd4-9a0c0c5a17cf"},{"id":"chg_019fe8fc-3a59-7000-b419-f27d6ab2a5fb","kind":"check.unverifiable","summary":"Stability (0.47 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a59-7000-b419-f27d6ab2a5fb"},{"id":"chg_019fe8fc-3a5b-7507-857c-9a5d29890e55","kind":"check.reason","summary":"Authorization (Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a5b-7507-857c-9a5d29890e55"},{"id":"chg_019fe8fc-3a5c-74cc-8fca-a1b2a54a0676","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a5c-74cc-8fca-a1b2a54a0676"},{"id":"chg_019fe8fc-3a5d-7cd8-a191-2365f120fd15","kind":"check.unverifiable","summary":"Capabilities (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a5d-7cd8-a191-2365f120fd15"},{"id":"chg_019fe8fc-3a5f-71e6-abe3-2766f53d730a","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a5f-71e6-abe3-2766f53d730a"},{"id":"chg_019fe8fc-3a60-7498-97ff-974dceb99ef7","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → unreachable)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a60-7498-97ff-974dceb99ef7"},{"id":"chg_019fe8fc-3a61-76d6-b395-86393604ee82","kind":"score.total_changed","summary":"Trust score (73 → 35)","materiality":"functional","direction":"regression","scoreDelta":-38,"occurredOn":"2026-08-10","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe8fc-3a61-76d6-b395-86393604ee82"},{"id":"chg_019fe3d5-ec2a-7f17-983c-0189132826b4","kind":"check.verdict","summary":"HSTS header (fail → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec2a-7f17-983c-0189132826b4"},{"id":"chg_019fe3d5-ec2d-7a01-b20d-0a47bfe4017b","kind":"check.reason","summary":"Authorization (Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec2d-7a01-b20d-0a47bfe4017b"},{"id":"chg_019fe3d5-ec2e-7a06-8065-89cbdf6e1264","kind":"check.reverified","summary":"MCP protocol (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec2e-7a06-8065-89cbdf6e1264"},{"id":"chg_019fe3d5-ec2e-7e17-8b72-208fbab6c77b","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec2e-7e17-8b72-208fbab6c77b"},{"id":"chg_019fe3d5-ec30-714b-83d6-34836f0f72d1","kind":"check.reverified","summary":"Schema quality (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec30-714b-83d6-34836f0f72d1"},{"id":"chg_019fe3d5-ec30-762a-aaa5-5cdb949c1dc1","kind":"check.reverified","summary":"Stability (unverified → 0.47)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-08-09","url":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp#chg-chg_019fe3d5-ec30-762a-aaa5-5cdb949c1dc1"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp","markdown":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp.md","changelogJson":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/com-erikbethke-blog/api-mcp.xml","external":[{"label":"Remote endpoint","href":"https://erikbethke.com/api/mcp"},{"label":"Website","href":"https://erikbethke.com/for-agents"}]}}