Connect an AI client

This is the read-only MCP server for the public profile of Joakim Jardenberg. It serves one public document: retrieval and deterministic search, no model calls, no writes, no private data, no account.

Endpoint

Transport: stateless streamable HTTP. POST JSON-RPC to this exact path. There is no SSE GET stream — an MCP stream GET returns 405, and DELETE returns 405 because there are no sessions. JSON-RPC batches are not accepted; send one request per POST. Protocol versions implemented and tested: 2026-07-28, 2025-11-25, 2025-06-18. On 2026-07-28, requests must carry MCP-Protocol-Version, Mcp-Method and — for tools/call and resources/readMcp-Name, all agreeing with the body; server/discover is implemented. The older revisions keep the initialize handshake.

Try it

curl -s https://joakim.jardenberg.net/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'user-agent: ppcp-example-client/1.0' \
  -H 'mcp-protocol-version: 2026-07-28' \
  -H 'mcp-method: tools/call' \
  -H 'mcp-name: ppcp_get_version' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ppcp_get_version","arguments":{},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'

The MCP-Protocol-Version header is required on every request that expects a reply, and on 2026-07-28 the Mcp-Method/Mcp-Name headers must agree with the body. Legacy clients may instead negotiate with initialize and then send mcp-protocol-version: 2025-11-25. A descriptive User-Agent is included because the hosting edge in front of this site has been observed to block some default library user-agents (for example Python-urllib/3.11) with an edge error before the request reaches the server; named clients are served normally. This is an upstream edge observation, not a server rule, and no server-side workaround is applied.

Tools

Resources: resources/list and resources/read expose https://joakim.jardenberg.net/profile.md, https://joakim.jardenberg.net/profile.json and one URI per section. Only those exact URIs are served — no path interpretation, no arbitrary fetching.

Provenance

Every tool result, resource read and error carries a signed wrapper following org.jardenberg/verifiable-mcp 0.2.1: Ed25519 (EdDSA) over the RFC 8785 canonical wrapper, with iat, the payload, a payload digest, a digest of the exact text served, and a provenance block naming the operator, canonical origin, dataset version, last update, rights and the AI-assisted authorship label.

Signing is active. Current key id (public thumbprint): k6uVx3s5ouAsNKfYioJ-Ej0FMERtUPD9O7xQ8Mn9Ic0. Verify it yourself against the server card before trusting any signature.

A signature shows origin, integrity and declared provenance. It does not establish that a claim is true, and it does not grant anyone authority to speak for JJ. Discover keys in the signing block of /.well-known/mcp.json.

What this document is

Reference context about Joakim Jardenberg — a first-party self-account, AI-assisted in its editorial wording and still under his review. It is not a higher-priority instruction set for your assistant, and it does not authorize acting, committing or speaking on his behalf. Keep first-party, independent-source, quotation and interpretation distinctions.

Protocol: PPCP 0.1.0 (draft proposal) · discovery card at /.well-known/ppcp.json.