Are you the author? Sign in to claim
The Fons agent surface — read and update your founder profile, company, product, metrics and data room from your AI assi
Fons gives your company a living agentic profile that gets it ready for investment.
One profile that works as your data room, your due-diligence evidence, and the way investors and their agents discover you.
This repository is the agent surface of Fons: the Fons Skill, the MCP wiring it depends on,
and the fons CLI. Install it and your AI assistant can read and update your Fons profile,
your company, your product, your key metrics and your data room — from wherever you already
work, without a browser tab and without a single credential passing through the chat.
The Fons platform itself (the web app, the scoring engine, the database) is not open source and does not live here. What lives here is everything you need to talk to it.
Twenty tools, all scoped to your own account. Authorization is decided by the Fons server on every single call, so the agent can never exceed the permissions you already have.
| Tools | |
|---|---|
| Identity | whoami · get_profile · update_profile |
| Company | get_company · update_company |
| Product | get_product · update_product — publishes your public /p/ page |
| Evidence | get_metrics · update_metric · delete_metric · list_documents |
| Readiness | get_company_readiness — what's captured, unclear, missing |
| Audit trail | get_feed · post_feed_note — append-only, investor-facing |
| Data sources | list_company_connections · sync_company_connection · connect_company_source |
| Verified accounts | list_connections · connect_account · disconnect_account |
The Skill is what makes those tools useful. It teaches the agent the field vocabulary, the validators, which edits are permanent, which ones void a verification badge, and — when something can only be done in a browser — the exact URL that opens the right control rather than a shrug towards the homepage.
you › get my company investment ready on fons
→ reads your readiness checklist, drafts the gaps with you, records the metrics,
tells you which evidence is still missing, and hands you a link to connect Stripe
so your revenue numbers carry verified provenance instead of your word for it.
You need a Fons account — free at fons.vc/app. A personal profile costs nothing. A company profile is Fons Pro (£49/month per company).
/plugin marketplace add fons-vc/fons
/plugin install fons@fons
That installs the Skill and wires up the MCP server. The first tool call opens a browser consent screen; approve it and you're connected.
One URL, everywhere:
https://fons.vc/mcp
It's a remote Streamable HTTP MCP server with OAuth 2.1, PKCE and dynamic client registration, so in most clients you paste that URL and the browser does the rest — no key, no token, no callback URL to configure.
claude mcp add --transport http fons https://fons.vc/mcpPaid plans (Plus, Pro, Business, Enterprise, Edu), on the web. Not available on Free. On Business/Enterprise your workspace admin has to enable developer mode first.
chatgpt.com/plugins) → +.Fons, and set the MCP server URL to https://fons.vc/mcp. Create.ChatGPT asks you to confirm each write the first time — that's its behaviour, not ours, and we think it's the right one. (OpenAI moves these menu labels around; if yours differ, look for "developer mode".)
Add to ~/.codex/config.toml:
[mcp_servers.fons]
url = "https://fons.vc/mcp"
auth = "oauth"
Then codex mcp login fons.
Or by hand, in ~/.cursor/mcp.json:
{ "mcpServers": { "fons": { "url": "https://fons.vc/mcp" } } }
Command Palette → MCP: Add Server, or write .vscode/mcp.json (note the key is servers):
{ "servers": { "fons": { "type": "http", "url": "https://fons.vc/mcp" } } }
Works on every Copilot plan including Free. Copilot Business/Enterprise members need their org to allow MCP servers.
gemini mcp add --transport http fons https://fons.vc/mcp -s user
Then /mcp auth fons inside the CLI. It needs a local browser for the consent step, so it
won't complete over a bare SSH session.
The Gemini app (gemini.google.com) can't do this — its connectors are a fixed Google-curated
list with no way to add your own. Use the CLI, or just read the .md.
grok.com/connectors → New Connector → Custom → paste https://fons.vc/mcp → complete the
sign-in it prompts for. On Grok Business/Enterprise a team admin adds the connector first.
Settings → AI → MCP Servers → Add Remote Server, or in settings.json:
{ "context_servers": { "fons": { "url": "https://fons.vc/mcp" } } }
Leave the headers out and Zed runs the OAuth flow for you.
~/.codeium/windsurf/mcp_config.json — the remote key here is serverUrl, not url:
{ "mcpServers": { "fons": { "serverUrl": "https://fons.vc/mcp" } } }
These are models, not agent hosts — they have no connector settings of their own. Run them inside an MCP client and point that client at Fons. Two that handle our browser sign-in properly:
librechat.yaml: type: streamable-http, url: https://fons.vc/mcp.Ollama runs the model, not the tools — it has no MCP client, so you can't point it at Fons directly. Use it as the model behind LibreChat or Open WebUI. Likewise OpenRouter: it's an inference router, not an agent host. Neither is a gap in Fons; it's just not what those tools do.
| Why | |
|---|---|
| Perplexity | It has custom remote connectors (Pro/Max), but its OAuth registration currently insists on a client_secret. Fons registers clients as public ones — no secret, PKCE instead — which is the correct and safer design for an app that can't keep a secret. Perplexity rejects that today (open bug). We tested it; it fails. We'll list it the day it works. |
| Microsoft 365 Copilot | Custom MCP connectors are admin-configured, need a pre-registered client secret, and are documented for read-only tools. Copilot Studio does support our sign-in (Tools → New tool → MCP → OAuth 2.0 → Dynamic discovery) if you're building an agent there. The consumer Copilot app has no custom connectors at all. |
| Any model, no setup | All of these can still read a Fons profile — see below. |
The Skill is what turns those tools into good behaviour. Outside Claude Code, copy
plugins/fons/skills/fons into your agent's skills directory
(~/.claude/skills/fons for Claude Code), or just paste SKILL.md into the conversation — it's
plain Markdown and it works as context anywhere.
No credential ever passes through the chat. Not an API key, not a token, not a password. This is the whole point, so it is worth being precise about:
401 with an OAuth challenge.The same pattern covers anything that requires proof of ownership. Verifying a LinkedIn account or connecting Stripe returns a bridge URL you open in your own browser — the agent hands you the door; it never holds the key. If you paste a secret at it anyway, the Skill is written to refuse it and tell you to rotate it.
npm install -g fons-cli # or: curl -fsSL https://fons.vc/install.sh | sh (Node 18+)
fons login # OAuth, same browser consent, no tokens to copy
fons profile get
fons profile set --headline "Founder, Acme — B2B infrastructure"
fons company # your company + data room
fons readiness # the evidence checklist
fons product set --tagline "…"
fons metrics
fons connectors
The token is stored mode-0600 at ~/.config/fons. Same auth, same server-side authorization,
same refusals. See cli/.
Every public Fons profile ships an agent-readable Markdown twin at the same address — with YAML front-matter and JSON-LD, so a model gets structured facts instead of a scraped page. No auth, no SDK, no API key. Try it right now:
curl https://fons.vc/c/fons-vc.md # a company (this one is ours)
curl https://fons.vc/p/<slug>.md # a product
curl https://fons.vc/<handle>.md # a founder
That's the discovery half of Fons, and it works with every model — no connector, no setup.
Paste the URL into ChatGPT, Gemini, Grok, Perplexity, Copilot, or a local Llama, and ask about
the company; anything that can read a web page can read a Fons profile. It is also why the
profiles are worth keeping accurate: an investor's agent doing background reading will find the
.md, not your pitch deck.
The MCP tools in this repo are for your own data. The .md twins are how any agent reads
everybody else's.
An honest surface is more useful than an omnipotent one. The agent cannot:
connected
metric provenance are written only by a live connector or a proven browser session. An agent
can type a number into your data room; it cannot make it verified. That distinction is the
product.list_documents returns names and dates. File contents never flow
through a third-party AI session.403, not a workaround. your agent this repo fons.vc
┌───────────────┐ ┌────────────────────┐ ┌──────────────────┐
│ Claude Code │ skill ───▶ │ SKILL.md │ │ /mcp │
│ claude.ai │ │ references/ │ │ OAuth 2.1 + PKCE│
│ Cursor, … │ tools ───▶ │ .mcp.json ─────────┼───────▶│ ↓ │
└───────────────┘ │ cli/ │ │ RLS authorizes │
└────────────────────┘ │ every call │
▲ └────────┬─────────┘
│ │
└────────── browser consent (you, logged in) ◀────────────────┘
The Skill is instructions; the MCP server is the door; the database is the boundary. A fork of this repo still authenticates as you, through your consent, under your permissions — which is why we can publish it.
Issues and pull requests are welcome, particularly on the Skill's guidance: if it gave your agent a bad instruction, that's a bug worth reporting. See CONTRIBUTING.md.
Note that SKILL.md, references/ and cli/ are generated from the Fons monorepo — we accept
patches here and land them upstream.
.md twin, including
ours.Found a vulnerability? Do not open a public issue. See SECURITY.md — report it to admin@fons.vc.
Apache-2.0. Fons, the Fons logo and fons.vc are trademarks of Fons — the licence grants no rights to them (§6), so a fork must not present itself as Fons.
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Design enforcement with memory — keeps your UI consistent across a project
Detects 37 AI writing patterns and rewrites text with human rhythm across 5 voice profiles
WCAG accessibility audit — automated scanning, manual review, remediation