WebMCP
This site implements the Web Model Context API, so an AI agent in the browser can call tools instead of scraping the rendered page. Everything is generated at build time and served as static files. There is no server and no key.
The tools
Registered on every page of the site. Individual pages can add their own on top, as the insolvency ledger below does.
| Tool | What it does |
|---|---|
search_site | Keyword search across posts, projects, art and pages |
list_posts | Posts newest first, with paging |
get_post | Full markdown of one post by slug |
list_projects | Playground projects, optionally filtered by tag |
list_art | Art pieces |
get_current_page | Title, headings, links and text of the page on screen |
get_contact_options | Booking link, LinkedIn, X, GitHub, shop, llms.txt |
Using it without WebMCP
The tools need a browser that exposes document.modelContext. If yours does not, the
same data is plain JSON over HTTP and needs no client at all:
/webmcp/insolvencies.jsonthe insolvency ledger, its aggregates and the national trend/webmcp/manifest.jsonevery post, project, art piece and page, plus adatasetsarray pointing at the queryable ones/webmcp/posts/<slug>.jsonthe full markdown of one post/llms.txtthe plain-text site description
Everything is read-only. All tools are annotated readOnlyHint, and the ones
returning ledger prose or page text carry untrustedContentHint, since that text
comes from news sources rather than from me.
Datasets: the insolvency ledger
Germany bites the dust is a running ledger of 65 named German company insolvencies since February 2025, 36,645 jobs between them, each with a published headcount and a linked source. Four tools query it, and the whole dataset is one file:
These four are scoped to that page. WebMCP is per-document, so an agent
reading a blog post should not be offered four tools about German insolvencies: they register
on /projects/german-insolvencies and nowhere else. An agent elsewhere finds the
dataset in the datasets array of the manifest, which carries the data URL, and can
either fetch that file directly or navigate to the page and pick up the tools.
| Tool | What it does | Arguments |
|---|---|---|
insolvency_summary | Totals and breakdowns: cases, jobs, how many have stopped trading, and the split by sector, state and month. Start here. | None |
list_insolvencies | The cases themselves, newest first, paged. Filter by sector, state, date range, minimum headcount, or whether the business has stopped. | sector, state, since, until, minEmployees, ceasedTrading, sortBy, limit, offset |
get_insolvency | The full record for one company, including the narrative detail, what the headcount counts, and the source link. | company |
insolvency_trend | The national monthly series from the IWH-Insolvenztrend: filings and jobs affected across all German partnerships and corporations. | None |
What the data does and does not claim
- A case is listed only if a named source published a specific employee headcount, a real town and federal state, and a defensible date. Cases without a published headcount are left off rather than estimated, which is why some genuinely large failures are missing.
- It is a sample, not a register. Germany logged roughly 12,900 corporate insolvencies in the first half of 2026 alone. A company's absence here is not evidence it is solvent.
- Filing is not closing. Most listed companies are still trading;
ceasedTradingmarks the ones that have actually stopped. - Plant closures, restructurings and reform programmes are excluded, however many jobs they cost, because they are not insolvencies.
- The national trend comes from the IWH-Insolvenztrend, which counts a far wider universe than this ledger. Do not sum the ledger to estimate a national total. IWH publishes each month in the second week of the following month, so the latest month available is July 2026.