The MCP server
Connect any AI assistant with one URL
Add https://freo.cloud/mcp to Claude, ChatGPT,
Cursor or any MCP client and sign in. Then say "publish this" and get back a link you control.
freo.cloud's MCP server is a remote Model Context Protocol endpoint. You sign in with OAuth, so there's no key to copy. New documents default to a private link, going public needs your confirmation, and every publish is scanned for leaked secrets.
Pick your client
Claude Code plugin
One install adds the publishing skill, this server and two hooks: one flags plugin updates, one explains failed publishes. Inside Claude Code:
/plugin marketplace add nanosolutions/freo-skills /plugin install freo-publish@freo
Then /mcp → freo → Authenticate.
Server only, no skill?
claude mcp add --transport http --scope user freo https://freo.cloud/mcp
Claude.ai · ChatGPT · Claude Desktop
Claude: Settings → Connectors → add a custom connector with the URL
https://freo.cloud/mcp, then sign in to freo and approve.
ChatGPT: Settings → Apps → Advanced settings → turn on Developer mode, then create an app with the same URL (paid plans).
https://freo.cloud/mcp
Codex · opencode
codex mcp add freo --url https://freo.cloud/mcp codex mcp login freo
opencode: opencode mcp add (remote, this URL), then
opencode mcp auth freo. Gemini CLI: see
Gemini CLI setup. Windsurf and others:
all agents.
No browser sign-in? (CI, headless, stdio-only clients) Use a token
Reveal a key on your Connect page and send it as a bearer token:
{
"mcpServers": {
"freo": {
"url": "https://freo.cloud/mcp",
"headers": { "Authorization": "Bearer YOUR_FREO_TOKEN" }
}
}
}
Client only speaks stdio? Bridge with mcp-remote:
{
"mcpServers": {
"freo": {
"command": "npx",
"args": ["mcp-remote", "https://freo.cloud/mcp", "--header", "Authorization: Bearer YOUR_FREO_TOKEN"]
}
}
}
What it can do
- →
publish_document— Publish a file or a whole static-site bundle to a shareable link — default private, you choose who sees it. - →
update_document— Replace a document's content in place; the link, views and access all stay the same. - →
set_access— Change who can view it: public, unique link, email-verified, or a named allowlist. - →
set_lifecycle— Set a document's expiry, auto-make-private window, and view notifications. - →
unpublish_document— Take a document offline (soft delete) — restorable. - →
restore_document— Bring back an unpublished document — link, views and access return. - →
recent_activity— See who recently viewed/downloaded your docs (coarse location/device) and who accepted your invites. - →
list_documents— List what you've published, newest first. - →
get_document— Look up one document's share URL, access level and view stats. - →
whoami— Show the connected account (and, for token clients, when the key needs rotating).
Safe by default
- →New documents are a private unique link — going public takes an explicit confirmation you see in your client.
- →Every publish is scanned for leaked secrets and blocked if one is found.
- →Your connection is scoped to your documents — whether it's an OAuth authorisation or a token, you can revoke it instantly from your dashboard.
Questions
Is this how AI search finds my files?
No. MCP is a client connector — it only does something when you ask your assistant to. Your published documents stay noindex; nothing here changes that.
MCP or the skill?
Either works, and they reach the same account. MCP is one URL and a sign-in. The publishing skill suits coding agents that publish whole folders from disk. On Claude Code, the plugin gives you both.
Publish from your AI — to anyone you choose
Connect the MCP server and share a link you control — free during early access.
Sign in & connect →