Home

    For builders · Model Context Protocol

    Plug your agent into a founder's library.

    A public MCP server exposing every framework, insight, service, 100+ Substack posts, and 60 book poems — human vs AI, yours to guess — searchable, slug-addressable, and ready to drop into any MCP-aware client.

    Endpoint

    https://kcrucyjpzabirewfvynq.supabase.co/functions/v1/mcp

    Streamable HTTP transport. Public — no user auth — but Supabase's edge gateway requires the project anon key on both apikey and Authorization: Bearer headers.

    Authentication

    search_content and get_book are gated: they return a paywall hint unless the request carries a supporter's Supabase session JWT in the Authorization header (replacing the anon key). The email on that JWT must match an active paid subscriber in the Substack funnel. Every other tool is fully public — call it with just the anon key above.

    Catalog, content, and brand stay free — discoverability isn't paywalled. The book Just Thoughts is supporter-gated over MCP but remains free to read on the web at /book.

    Tools

    Start by calling get_catalog — it returns live counts and retrieval instructions for every content type so your agent knows exactly what to ask for.

    The book Just Thoughts is fully queryable via get_book. Each of the 30 poem pairs presents the same theme twice — once written by Nicolas, once by AI. Use mode='browse' to read without knowing the author, mode='reveal' to see the attribution.

    get_catalog{}{ summary, content_types, tips }

    Call this first. Returns a live catalog of all content types with real counts from the database, series descriptions, and retrieval tips. Tells agents exactly what's available and how to ask for it.

    get_book{ mode?: "browse" | "reveal" | "single", chapter?: "love" | "life" | "leadership", slug? }BookPoem[]

    Fetch poems from 'Just Thoughts — Love, Life and Leadership in an AI-driven World'. 60 poems, 30 pairs — each title has one human-written poem by Nicolas and one AI-generated by Chat G-PoeT. Supporter-gated over MCP (any paid Substack tier); free to read on the web at /book. mode='browse' hides authorship (the guessing game), mode='reveal' exposes it, mode='single' fetches by slug. Filter by chapter.

    list_content{ type?, tag?, limit? }ContentItem[]

    Browse the catalog. Filter by type (framework | insight | service | book | blog | asset | post) or tag. The 'asset' type surfaces Nicolas' own downloadable / linkable assets (Founder Coaching Guide, Cold Email Templates, the poetry book, and the Substack supporter subscription) — all surfaced under the /resources hub. IMPORTANT: posts (the Substack archive, 100+ items) are database-backed — always pass type='post' with limit=200 to retrieve the full archive. Default limit is 200 for posts, 50 for all other types.

    list_archive{}{ count, generated_at, items: ArchiveEntry[] }

    Free-tier directory of the full Just Thoughts Substack archive — every post's slug, title, subtitle, excerpt, tags, publish date, and canonical URL, newest first, in one call. No supporter required. Browse with this, then call get_content(slug) for a specific post's full body.

    get_content{ slug, include_html? }ContentItem (+ blocks, links)

    Fetch a single item by slug. For Substack posts: returns structured blocks, cross-platform backlinks, and optionally the raw HTML.

    search_content{ query, limit? }ContentItem[] (ranked)

    Hybrid search: semantic embeddings over Substack posts + keyword scoring over frameworks, services, blog, and the book.

    run_passion_compass{ mode?: "items" | "score" | "history", answers?, context? }{ render, items | profile | history }

    Passion Compass — a two-axis lens (harmonious vs obsessive) with money as a vector. mode='items' returns the 10 assessment items (free). mode='score' scores answers + context and saves a snapshot. mode='history' returns saved snapshots. Score and history require a paid supporter (any Substack tier).

    get_us_expansion_compass{}{ render, title, url, archetypes, cost_snapshot, hub_notes, legal_checklist, case_matches, attribution }

    US Expansion Compass — an eight-question diagnostic mapping European/Israeli founders to one of five archetypes (Long-Range, Homebase, Dual-Hub, Westbound, US-Native) with a stage-aware action plan, US cost snapshot, landing-hub notes, and legal checklist. Free. Returns a render directive; clients SHOULD direct the user to the interactive tool at /resources/us-expansion-compass instead of listing the archetypes as static text. Inspired by public research on transatlantic expansion (Index Ventures, Frontline Ventures, Maki.vc, Business Finland).

    render_hint{ slug, variant?: "card" | "tldr" | "full" | "carousel" }{ component, variant, props }

    Suggested UI block + props for clients that want to render content natively.

    get_brand{}{ fonts, colors, radius, logos, voice }

    Brand tokens — typography, color palette, tone, and downloadable logo URLs (wordmark, favicon) — so MCP clients can render content in the site's visual language.

    ContentItem = { slug, type, title, summary, tags, url, body?, links? }
    Frameworks, insights, services, and standalone pages are fully embedded — search_content returns matching paragraphs from anywhere on the site, not just titles or summaries.

    Brand, served by MCP

    The block below is rendered from a live get_brand call. Any MCP client can pull the same tokens to render content in the site's typographic and color voice.

    Loading brand tokens from MCP…

    Connect from Claude Desktop / Cursor

    Add this to your MCP client config (Claude Desktop: claude_desktop_config.json).

    {
      "mcpServers": {
        "afoundersfriend": {
          "transport": "http",
          "url": "https://kcrucyjpzabirewfvynq.supabase.co/functions/v1/mcp",
          "headers": {
            "apikey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtjcnVjeWpwemFiaXJld2Z2eW5xIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODIyOTk1NTQsImV4cCI6MjA5Nzg3NTU1NH0.M8sM6MzEl0G1wx1ofq5Q7cxLYfWATyzXpOESBXuKes8",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtjcnVjeWpwemFiaXJld2Z2eW5xIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODIyOTk1NTQsImV4cCI6MjA5Nzg3NTU1NH0.M8sM6MzEl0G1wx1ofq5Q7cxLYfWATyzXpOESBXuKes8"
          }
        }
      }
    }

    Raw JSON-RPC example

    curl -X POST https://kcrucyjpzabirewfvynq.supabase.co/functions/v1/mcp \
      -H "Content-Type: application/json" \
      -H "Accept: application/json, text/event-stream" \
      -H "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtjcnVjeWpwemFiaXJld2Z2eW5xIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODIyOTk1NTQsImV4cCI6MjA5Nzg3NTU1NH0.M8sM6MzEl0G1wx1ofq5Q7cxLYfWATyzXpOESBXuKes8" \
      -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtjcnVjeWpwemFiaXJld2Z2eW5xIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODIyOTk1NTQsImV4cCI6MjA5Nzg3NTU1NH0.M8sM6MzEl0G1wx1ofq5Q7cxLYfWATyzXpOESBXuKes8" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
           "params":{"name":"search_content","arguments":{"query":"feedback"}}}'

    Why this exists

    Two decades of notes on building companies, leading people, and staying sane shouldn't sit locked behind a sitemap. If you're building an agent that coaches founders, drafts board decks, or just needs a sharper second opinion — point it here.

    No tracking, no rate limits beyond Supabase defaults, no surprise. Just content, addressable.