Jacob's Brain
Docs

Jacob's Brain, in your agent.

A free MCP server holding what I have published: newsletters, LinkedIn posts, talks and essays. Add the URL to your agent, sign in with your email, and ask it what I think about offers, positioning, launches or running a business on your own. Every answer comes back with the thing it came from.

https://jpegs.app/mcp

Connect your agent

No key and no card. The URL is all you need, and the sign-in happens inside your agent the first time it calls the brain.

Claude, on the web or desktop

Settings, then Connectors, then Add custom connector. Paste the URL and click Add. Claude opens the sign-in page when it first uses the brain.

ChatGPT

Settings, then Connectors, then Create. Paste the URL, choose OAuth when asked how it authenticates, and save.

Claude Code

claude mcp add --transport http jacobs-brain https://jpegs.app/mcp

Then run /mcp in Claude Code and pick jacobs-brain to sign in.

Cursor

Settings, then MCP, then Add new global MCP server. Cursor registers itself, so there is nothing to paste beyond the URL.

Codex

codex mcp add jacobs-brain --url https://jpegs.app/mcp

Gemini CLI

gemini mcp add --transport http jacobs-brain https://jpegs.app/mcp

Anything else that speaks MCP

If your client takes a JSON config, this is the shape it wants:

{
  "mcpServers": {
    "jacobs-brain": {
      "type": "http",
      "url": "https://jpegs.app/mcp"
    }
  }
}

Signing in

Your agent opens a page asking for your email. You get a 6-digit code, you type it in, you click Allow. That is the whole thing. There is no password to make and nothing to remember, because the next time your agent needs a token it refreshes one quietly.

What is kept, and how to have it deleted, is in the privacy notice.

Tools

Two, both read-only. Your agent picks them on its own when you ask something the brain covers, and you can also name them.

search_brain

Searches what I have published and returns the passages that match, each with its title, its source link and the date I shipped it.

ArgumentTypeWhat it does
querystring, 2 to 500 characters, requiredWhat to look for, in plain words.
limitinteger, 1 to 10, default 6How many passages to return.

A limit outside the range is pulled back into it rather than refused, because a client asking for 50 wants as many as it can have.

When nothing matches, the answer says so and tells you to try other words. It does not invent a passage to fill the gap, which is the only version of this worth building.

list_sources

Lists everything in the brain with its link and a line on what it is. No arguments. Useful for seeing what is actually covered before you ask, and for citing something afterwards.

Asking it well

It is a search over my writing, not a model of me. That is good news, because it means it answers best when you treat it like a well-read colleague rather than an oracle.

Things worth asking:

Limits and errors

The brain is free and public, and it runs a full search over the index on every call, so there is a ceiling. You will not meet it by using it normally.

LimitValue
Tool calls per account60 a minute
Sign-in codes per email5 an hour, one every 30 seconds
Sign-in codes per IP address20 an hour
Search length500 characters
Passages per search10
StatusWhat happenedWhat to do
401No token, or it expired.Nothing. Your agent signs in or refreshes by itself. If it keeps happening, remove the server and add it again.
403The account is blocked.Email me if that seems wrong.
404Wrong URL.Check it ends in /mcp.
429Too many requests.Wait a minute. Rate limit messages say how long.

For client developers

The server follows the MCP authorization spec, so a client with remote-MCP OAuth support needs nothing special from you.

Endpointhttps://jpegs.app/mcp, Streamable HTTP
Protected resource metadatahttps://jpegs.app/.well-known/oauth-protected-resource
Authorization server metadatahttps://jpegs.app/.well-known/oauth-authorization-server
OpenID configurationhttps://jpegs.app/.well-known/openid-configuration
RegistrationDynamic Client Registration at https://jpegs.app/register
Grantsauthorization_code, refresh_token
PKCERequired, S256
Scopesopenid, email
Access tokensOne hour, sent as Authorization: Bearer …
Revocationhttps://jpegs.app/revoke
CORSOpen on /mcp, the well-known paths and the OAuth endpoints

To poke at it directly:

npx @modelcontextprotocol/inspector

Set the transport to Streamable HTTP, paste the endpoint, and follow the OAuth flow it opens.

Questions

Is it really free?

Yes. No card, no key, no trial. Your email is the whole price, and that is because the list is the point.

Where does the knowledge come from?

Only things I published under my own name: newsletters, LinkedIn posts, YouTube talks and essays. Call list_sources to see every one of them.

What is deliberately not in it?

Client names and results, anything I sell, and my family and private life. Those are absent from the index itself rather than hidden behind an instruction, which is the only version of that promise worth making.

Will it answer as me?

No, and you should be suspicious of anything that claims to. It returns passages I wrote and your agent reasons over them. When it has nothing, it says so.

How do I disconnect?

Remove the server from your agent. To have the account and the search log deleted, email ops@mojodesign.io.