Give your AI useful context about JJ

Working with Joakim "JJ" Jardenberg, interviewing him, or curious about how he thinks? Connect his public profile to your AI so it can look up his life, values, ideas and practical ways of working when they matter to your conversation.

Your AI can find a relevant section, check its sources and help you prepare. It reads JJ's own public account rather than relying only on scattered information or guesses. The connector cannot speak for him or make commitments on his behalf.

Connector address

Public and read-only. No authentication needed for this connector.

No password, API key or OAuth credentials for this connector. You still use your own account with your AI service.

Start here

If you want to add this to your AI client, start with this prompt and see if that works.

Copyable starter prompt

Help me add https://joakim.jardenberg.net/mcp as a read-only connector about Joakim Jardenberg. It needs no authentication. If you cannot add it here, guide me through this app's setup. Then check the connection by reading the section 'The short version' through the connector. Use that overview, then read the sections relevant to my questions.

Some apps need you to add the connection in settings. A message saying "done" is not enough: ask your AI to check the connection by reading the profile through it.

Setup guide for your app

Use the address above. If the app asks for a name, use JJ Public Profile. If a name cannot contain spaces, use jj-public-profile. Where offered, choose None or No authentication. If it asks for a connection type, choose Streamable HTTP.

Official guides, checked on 16 September 2026. Menus and availability can change.

Once connected, try asking

If your app asks which connector to use, select JJ Public Profile. Ask for the relevant sections and sources; your own brief and goals still guide the conversation.

Common questions

Does my AI read the whole profile every time?

The connector recommends starting with the short version, then reading the sections relevant to your question. It can search for a topic or read everything when you ask for a full briefing. Your AI app decides which tools to use; connecting alone does not load the whole document.

Do I need a password, API key or OAuth setup?

No. This connector is openly accessible without credentials. Choose None or No authentication when available. You do not need an OAuth client ID or secret. You still use your normal account with your AI service, whose plan and workspace rules may apply.

Can pasting the prompt install it automatically?

That depends on your app. The prompt asks the AI to help, but some apps require manual setup or confirmation. It should tell you when it cannot add a connector and guide you to the settings instead.

What if my app does not support it?

Download the public profile and attach it to your chat if your app accepts files, or paste its text. Ask the AI to use it as reference material about JJ. A downloaded copy is a snapshot and will not refresh itself.

Can it access private information or change anything?

It retrieves only JJ's public profile, sections, sources and version information. It cannot access his private JJ OS, inbox or files, send messages, book meetings or change records. Your AI app sends requests, such as search terms, when it uses the connector.

Is this an AI pretending to be JJ?

No. Your own AI reads a public reference about him. It cannot speak for JJ, confirm his agreement or make commitments for him. The profile includes its source, date, authorship and review status.

What if my AI shows old tools or information?

Refresh the connector in your AI app, then start a new conversation; an existing chat can keep older context. For ChatGPT developer connections, follow Refresh metadata. A managed workspace may require administrator action. A working connection can still have an old tool list: compare your app's enabled tools with the list below. If the profile information looks old, ask your AI to read the profile's version and date again.

Why is the connection option missing or not working?

Check your app's guide, account eligibility and organization settings. Use the complete address ending in /mcp. This server does not require credentials; if your app insists on them with no public-connection option, use the file alternative. A hosting filter can also block some automated clients; details are in the technical reference below.

What your AI can look up

Your AI retrieves and searches an existing public document. It does not generate answers inside the connector, and nothing is written back.

Technical reference

For developers and anyone verifying this server. You do not need any of it to connect.

Transport, protocol versions and headers

Transport: stateless streamable HTTP. POST JSON-RPC to https://joakim.jardenberg.net/mcp. 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/read — Mcp-Name, all agreeing with the body; server/discover is implemented. The older revisions keep the initialize handshake.

Try it with curl
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.

Hosting filter note

A descriptive User-Agent is included above 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.

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.

Efficient reading and client responsibilities

Start with ppcp_get_section and section_id: "the-short-version", then search or list sections and read the relevant ones. Preserve the whole-person context. For a complete reading, ppcp_get_profile accepts format: "compact": every word of the Markdown, identity and all source pointers, without embedding a second set of section bodies. Omitted format or format: "ppcp" retains the original complete PPCP object. The profile downloads are unchanged.

Both formats retain text, structured content and the signed wrapper. The server signs the exact payload and text it returns. Clients should verify the unmodified response, retain its evidence, and then choose an appropriate representation for the model. Do not feed duplicate representations or encoded signature data into model context unnecessarily, and do not describe a transformed view as separately signed. Actual model input and token usage depend on the host.

Signing, key discovery and provenance limits

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.

Freshness and tool updates

On 2026-07-28, complete results of server/discover, tools/list, resources/list and resources/read carry top-level ttlMs: 60000 and cacheScope: "public", per the MCP caching utility. All data here is identical and public for every caller. The hint means a cached copy may be reused for about a minute and revalidated on next use. It is not a polling timer, and it does not force any AI to update: hosts decide when they refetch, and a host or workspace may keep a stored tool definition much longer.

This server is stateless and has no server push: it does not advertise listChanged or subscriptions, and there is no SSE stream. That limit is intentional, and no subscription infrastructure is planned as part of this correction. Clients on 2025-11-25 and 2025-06-18 receive the same data without the cache fields, which those revisions do not define.

Current computed catalog diagnostic: 6 tool descriptors, sha256:ffa75c2fc4570b0d8832b7f8234881a49b26fb23449ce1fc684ccd928bb161c4, canonicalized with RFC8785 over the full descriptors sorted by name. It is computed from the descriptors in this deployed build and excludes versions and timestamps, so it changes only when a descriptor changes. A bare hash is not authentication: only the signature enclosing the version tool result attests it. The same object appears in /health, /.well-known/mcp.json and the ppcp_get_version payload.

Host update paths differ: OpenAI documents a manual Refresh for developer connections, while published plugins go through continuous review and tool updates, which can hold a new or changed definition until its checks pass, so an updated definition may not be available immediately.

Source freshness is separate from software and protocol versions: profile content edition 0.12 updated 2026-10-01T00:00:00Z, Markdown SHA-256 e3e56f80d235ad856cd92b7371b573c972f0947b7982a85912c57248b1afa7e7, against software 0.1.0-alpha.16, MCP revisions 2026-07-28, 2025-11-25, 2025-06-18 and PPCP 0.1.0.

The freshness diagnostics at /health, /api/health and /.well-known/mcp.json are served with Cache-Control: no-store, and POST /mcp stays no-store. Public content downloads such as /profile.md and /profile.json keep their own independent five-minute HTTP cache (max-age=300), which is unrelated to the MCP hint above.

What this document is

Reference context about Joakim Jardenberg — a first-party self-account, AI-assisted in its editorial wording and reviewed and approved by him. 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.