The-Snip

Team knowledge base for code snippets, API calls and docs. Agents search and file items over MCP; humans review what becomes canon.

Documentation

How it works

  1. Your agent searches the base mid-task (search_base) and gets the team's approved answers.
  2. It trusts what it finds — only human-approved items are canon.
  3. When it learns something new it files it back (create_snippet / create_api / create_doc) — every write lands in review.
  4. A human approves it in the review queue; the base stays trustworthy.

Hand one of these files to any AI agent — the combined file covers MCP + REST; the MCP file is just this page's contract:

// the-snip-for-agents.md — paste into your CLAUDE.md

Download the agent instructions file

// the-snip-mcp-setup.md — MCP-only setup, for your agent's context

Download the MCP setup file

How to connect

  1. Create a workspace at the-snip.com — free, no card.
  2. Generate an API key in Settings → API keys.
  3. Add the server to your client with one of the configs below.

// Claude Code — one command

claude mcp add --transport http the-snip https://the-snip.com/mcp
--header "Authorization: Bearer snip_YOUR_WORKSPACE_KEY"

// Cursor — .cursor/mcp.json

{ "mcpServers": { "the-snip": { "url": "https://the-snip.com/mcp", "headers": { "Authorization": "Bearer ${env:THESNIP_API_KEY}" } } } }

// OpenClaw — ~/.openclaw/openclaw.json

{ "mcp": { "servers": { "the-snip": { "url": "https://the-snip.com/mcp", "transport": "streamable-http", "headers": { "Authorization": "Bearer snip_YOUR_WORKSPACE_KEY" } } } } }

// Hermes (Nous Research) — ~/.hermes/config.yaml

mcp_servers: the-snip: url: "https://the-snip.com/mcp" headers: Authorization: "Bearer snip_YOUR_WORKSPACE_KEY"

// VS Code (Copilot agent mode) — .vscode/mcp.json

{ "inputs": [ { "type": "promptString", "id": "thesnip-api-key", "description": "The-Snip workspace API key (snip_...)", "password": true } ], "servers": { "the-snip": { "type": "http", "url": "https://the-snip.com/mcp", "headers": { "Authorization": "Bearer ${input:thesnip-api-key}" } } } }

// OpenAI Codex CLI — ~/.codex/config.toml

[mcp_servers.the-snip] url = "https://the-snip.com/mcp" bearer_token_env_var = "THESNIP_API_KEY"

// Gemini CLI — ~/.gemini/settings.json

{ "mcpServers": { "the-snip": { "httpUrl": "https://the-snip.com/mcp", "headers": { "Authorization": "Bearer $THESNIP_API_KEY" } } } }

// Cline — ~/.cline/mcp.json

{ "mcpServers": { "the-snip": { "type": "streamableHttp", "url": "https://the-snip.com/mcp", "headers": { "Authorization": "Bearer snip_YOUR_WORKSPACE_KEY" } } } }

// any MCP client (.mcp.json)

{ "mcpServers": { "the-snip": { "url": "https://the-snip.com/mcp", "headers": { "Authorization": "Bearer snip_YOUR_KEY" } } } }

Works with

Any client that speaks Streamable HTTP and can send an Authorizationheader connects today. Config syntax per harness, verified against each project's official docs (July 2026):

HarnessConfig fileHeader authWatch out for
Claude Code.mcp.json / claude mcp addYes.mcp.json entries need "type": "http" — a url with no type is a config error
Cursor.cursor/mcp.jsonYes${env:VAR} interpolation works in headers — keep the key out of the file
OpenClaw~/.openclaw/openclaw.jsonYesset "transport": "streamable-http"; env interpolation is undocumented — paste the key
Hermes (Nous)~/.hermes/config.yamlYesallowed_tools can expose just search_base for read-only agents
VS Code Copilot.vscode/mcp.jsonYestop-level key is "servers", not "mcpServers"
OpenAI Codex CLI~/.codex/config.tomlYesbearer_token_env_var sends the env value as a Bearer header
Gemini CLI~/.gemini/settings.jsonYesthe field is "httpUrl" — "url" means SSE in Gemini CLI
ClineCline panel / ~/.cline/mcp.jsonYes"type": "streamableHttp" must be explicit — omitting it falls back to legacy SSE
Windsurf~/.codeium/windsurf/mcp_config.jsonYesthe URL field is "serverUrl", not "url"
Continueconfig.yamlYesheaders go under requestOptions.headers, not a bare headers key
Zedsettings.jsonYesservers live under "context_servers"
Goose (Block)~/.config/goose/config.yamlYestype is "streamable_http" with a "uri" field

ChatGPT and claude.ai custom connectors now work too — over OAuth. Add a custom connector pointed at https://the-snip.com/mcp and your browser runs a one-time OAuth sign-in: log in to The-Snip, pick a workspace, and click Allow — no key to paste. The connector then reads and proposes (in-review) items over MCP, scoped to the workspace you chose. Revoke it any time under Settings → API keys → Connected apps.

Two setup notes for OAuth connectors. ChatGPT requires Developer mode (Settings → Connectors → Advanced) and shows an “unverified” warning during connect — that is expected for any custom connector. Free workspaces connect too — reads are free; agent writes (create and update) need Pro & Team. The static Authorization: Bearer snip_… header path above is unchanged and still the simplest option for Claude Code, Codex, and mcp-remote.

Stdio-only clients can bridge with mcp-remote, configured as a stdio server:

// stdio-only clients — mcp-remote bridge

npx -y mcp-remote https://the-snip.com/mcp --header "Authorization: Bearer snip_YOUR_WORKSPACE_KEY"

Eight tools

ToolWhat it doesBehavior
search_baseSearch the team's reviewed base of code snippets, saved API calls and Markdown docs. ALWAYS search before creating — near-duplicates rot a shared base. Full-text, not semantic: 2-4 keywords work best; if results are empty, retry with synonyms. An empty query returns the most recent items. Returns full items; take ids from here for get_item and update_item. Free on every plan.read-only · free
get_itemFetch one item in full by id. Take ids from search_base results — never guess them (an id outside your workspace returns 404). Free on every plan.read-only · free
list_collectionsList the workspace's collections (id and name). Check before filing: pass a real collectionId to create_* or update_item so items land where the team expects them — never guess collection ids. Free on every plan.read-only · free
create_snippetFile reusable code worth keeping: a hook, a helper, a fix the team will hit again. Search first to avoid duplicates. Include description (what and when) and sampleOutput (what correct output looks like — future agents rely on it). Lands in review: a human approves before it becomes canon; "in review" is expected, do not re-submit. Needs the paid plan.lands in review (201) · paid
create_apiFile a working API request — the method, URL, headers and body that actually worked. Search first to avoid duplicates. Use sampleResponse to show what a good response looks like. Lands in review for human approval; do not re-submit while pending. Needs the paid plan.lands in review (201) · paid
create_docFile prose knowledge: runbooks, how-tos, architecture notes, gotchas. The body is Markdown; [[wikilinks]] resolve to other docs in the workspace. Search first to avoid duplicates. Lands in review for human approval. Needs the paid plan.lands in review (201) · paid
update_itemCorrect or extend an existing item when a search result is outdated or incomplete. Patch by id from search_base — never guess ids (404 if not visible). Accepts any create field, all optional; the update re-gates the item to review. Also how you move an item into a collection: pass collectionId from list_collections. Needs the paid plan.re-gated to review · paid
create_collectionCreate a collection to organize items. Check list_collections first — do not create near-duplicates of existing collections. Returns the new collection including its id, ready to use as collectionId. Needs the paid plan.201 — no review (organizational metadata) · paid

Agents propose, humans approve

Every agent write — create or update — lands with status "in review", and updating an approved item re-gates it. Agents structurally cannot set status: the input schemas reject unknown fields, so a smuggled status: "approved" field comes back as a 400, never a silent pass. A human approves items in the review queue, and only approved items are canon. That gate is what makes the base trustworthy enough to serve as a reviewed team memory for Claude Code — see how agents read and write The-Snip.

Troubleshooting

// 401 — missing or invalid key

{"error":{"code":"unauthorized","message":"Missing API key"}} {"error":{"code":"unauthorized","message":"Invalid API key"}}

Send the key as Authorization: Bearer snip_.... "Invalid API key" means the key was revoked or mistyped — generate a fresh one in Settings → API keys. A 401 from /mcp also carries WWW-Authenticate: Bearer error="invalid_token".

// 403 — write from a Free workspace

{"error":{"code":"forbidden","message":"Agent writes need the Pro & Team plan — reads are free. Upgrade at https://the-snip.com/upgrade"}}

Reads (search_base, get_item, list_collections) are free on every plan; agent writes — create and update — are on the paid plan. Upgrade at the-snip.com/upgrade and the same key starts writing.

// 405 — GET probe on the endpoint

{"error":{"code":"method_not_allowed","message":"MCP is POST-only (Streamable HTTP). See https://the-snip.com/settings/api-keys for setup."}}

The response carries Allow: POST. The endpoint speaks Streamable HTTP only — clients on the older SSE transport open with a GET and see this; switch the server entry to the Streamable HTTP type shown above.

Keep exploring

More use cases

  • An MCP snippet server for Claude Code
  • Connect Cursor to a team knowledge base
  • A shared API request library for your team
  • A reviewed team memory for Claude Code
  • Team snippets in Cursor
  • Shared memory for AI coding agents — reviewed, not auto-captured

Snippets by language

  • Snippets by language
  • Python snippets
  • TypeScript snippets
  • SQL snippets

Alternatives

  • Alternatives
  • GitHub Gists alternative
  • Pieces alternative
  • Notion alternative

Head-to-head comparisons

  • Head-to-head comparisons
  • GitHub Gists vs Pieces
  • GitHub Gists vs Notion
  • massCode vs Pieces

Start your base — free.

Free: 25 items, no card. Pro & Team: $8/user/mo — unlimited items, REST API, review workflow, and the hosted MCP server.

Start freeSee pricing