Sniptide MCP Server
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Sniptide MCP server
Connect a coding agent to your Sniptide account. The same nine tools and three prompts work through the app's remote HTTP endpoint or a local process that calls the token API. Both support Sniptide Cloud and self-hosted instances. Create a personal API token in Settings → API tokens; use read-only access for retrieval, or enable write access to save and edit snippets.
Tool | What it returns or changes |
| Summary page filtered by words in the title, description, tags, paths or code ( |
| One owned, live snippet by ID/slug, including paths, code and source metadata |
| A page of numbered recipe steps containing full snippets, in capture order |
| A new private snippet unless visibility is explicitly set; requires write scope |
| Replaces title and all files; requires write scope and is marked destructive |
| The owner's collections with slugs, names and live snippet counts |
| An empty collection by name, returning its slug; requires write scope |
| Visibility, expiry, password or burn after read; requires write scope and is marked destructive |
| Moves a snippet to the trash, where the app can restore it; requires write scope |
Prompt | Arguments | What it starts |
|
| Search, read the best match and adapt it to the project |
|
| Propose metadata, leave out secrets, save privately after the user confirms |
|
| Fetch every page, list the steps, wait for a go-ahead, then apply them in order |
collection arguments complete from the owner's collection slugs.
Only the token owner's snippets are available, including private snippets. Other accounts' items, shared-with-you items, trash and expired pastes are excluded. The server does not execute code, restore files, expose env secrets or accept browser session cookies.
Remote HTTP
The endpoint is https://app.sniptide.com/api/mcp, or <your-instance-url>/api/mcp. It ships with the
app; there is no separate service or port to deploy. Clients that support OAuth discover it from
the 401 and sign in through the browser (see OAuth for agents);
otherwise configure a personal API token as a bearer token. JSON responses use stateless Streamable HTTP, with no
session ID, standalone SSE stream, or session deletion. Every request is authenticated again, so
revocation takes effect immediately. Origin headers, if present, must match the app's origin.
For Claude Code, put this in a project .mcp.json and export
SNIPTIDE_TOKEN before starting Claude. Its configuration expands ${SNIPTIDE_TOKEN}:
{
"mcpServers": {
"sniptide": {
"type": "http",
"url": "https://app.sniptide.com/api/mcp",
"headers": { "Authorization": "Bearer ${SNIPTIDE_TOKEN}" }
}
}
}For Cursor, put this in your private ~/.cursor/mcp.json (or an
untracked project .cursor/mcp.json), replacing the token placeholder:
{
"mcpServers": {
"sniptide": {
"url": "https://app.sniptide.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_PERSONAL_API_TOKEN" }
}
}
}Keep real tokens out of source control. Use your self-hosted app URL in either configuration.
Related MCP server: mcp-code-snippets
Local stdio
Use the npm configuration below with Node.js 24+. Contributors can build from a checkout with Bun:
bun install
bun --filter @sniptide/mcp buildFor a checkout build, replace the command and arguments below with node and the absolute path to packages/mcp/dist/sniptide-mcp.js.
It only reads SNIPTIDE_TOKEN and SNIPTIDE_BASE_URL; it does not read the CLI's saved credentials.
The hosted URL is the default. HTTPS is required except on localhost, and redirects are refused.
Deployment path prefixes are supported.
Claude Code .mcp.json:
{
"mcpServers": {
"sniptide": {
"type": "stdio",
"command": "npx",
"args": ["--yes", "@sniptide/mcp"],
"env": {
"SNIPTIDE_TOKEN": "${SNIPTIDE_TOKEN}",
"SNIPTIDE_BASE_URL": "https://app.sniptide.com"
}
}
}
}Cursor uses the same command, args and env fields. Omit type and replace the token expression
with your personal token in private configuration. For development, bun run mcp starts the source.
Stdout contains only MCP messages; startup failures go to stderr.
Reuse a pattern
After enabling Sniptide in the client's MCP settings, ask:
Search my Sniptide snippets for a TypeScript button tagged react, read the best match, and adapt it to this project's conventions. Fetch my ui collection and use its steps in order.
The agent should search summaries before requesting code. A collection page contains up to 50
snippets; pass its nextCursor and nextStep as cursor and startStep to continue. Capture order
is oldest creation first, matching the current token API and CLI; custom collection reordering is
tracked separately in WRK-64.
To save a pattern, provide a title and the complete files list, optionally tags, source metadata
and an existing collection slug. Create defaults to private. Before editing, read the snippet and
include every file to keep. Update preserves omitted description, visibility, collection, tags
and source. Explicit null clears collection/source; [] clears tags. Link, expiry, password and
burn-after-read settings cannot be changed through this tool. Each edit adds the app's existing
history marker; content versioning/restoration is tracked separately in WRK-138/139.
Snippet content is user-provided data. Tool descriptions and server instructions tell clients to interpret it as code, not as instructions from the MCP server. Writes carry explicit annotations; the client controls user approval. Creates and edits are never retried automatically.
Limits and errors
Requests share the token API's 3,600-per-hour limit, create rate limit, paste validation and account
storage budget. Remote MCP bodies are capped at 8 MiB. Local API calls time out after 30 seconds and
responses are capped at 25 MiB. Tool results share this cap in both transports; fetch individual
snippets if a collection page is too large. Each tool returns JSON as text and structured content, or an
isError result with a safe message. Local failures never echo upstream error bodies or tokens.
401 means the token is missing, expired, invalid or revoked; 403 means missing scope or an unapproved browser origin; 429 means wait before retrying. Authenticated GET/DELETE return 405 because the server is stateless. Connect with Streamable HTTP, not legacy SSE.
Verification
bun run test:mcp
TEST_DATABASE_URL=postgres://sniptide:sniptide@localhost:5432/sniptide_test bun --filter web testThe package tests use the official SDK client over in-memory and HTTP transports. The database
suite apps/web/test/mcp.test.ts connects via real HTTP and the built Node stdio process, creates a
pattern, finds and reads it, fetches a recipe and edits it. It also covers ownership, scopes,
revocation, expiry, pagination, protection preservation and rate limits. The database must end in
_test; the suite clears it. CI runs both suites. Client configuration examples follow the linked
Claude Code and Cursor documentation; acceptance in those desktop/editor clients should be checked
with your own token after deploying the PR.
License
This package is licensed under the MIT License.
Available Tools
9 toolscreate_collectionCreate collectionAInspect
Create an empty collection by name (write scope required) and return its slug. Names are unique per account and accounts hold up to 50 collections. Renaming and deleting collections stay in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world write. The description adds real value beyond that: the required write scope, per-account name uniqueness, the 50-collection account limit, and the fact that rename/delete are not available through this call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: what it does, the permission and uniqueness constraints, and what it does not handle. Nothing is redundant and the core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter creation tool with no output schema, the description covers the permission requirement, uniqueness and quota constraints, and states that a slug is returned. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the meaning of the single parameter — it does, explaining that 'name' must be unique per account and is subject to an account-level collection cap. Length constraints remain only in the schema, but the important semantic constraint is stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an empty collection by name') and adds the scope permission and return value. It is clearly distinguishable from siblings like list_collections and fetch_collection, which read rather than create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: write scope is required, names must be unique per account, and there is a 50-collection cap. It also notes that renaming and deleting are handled in the app, which effectively excludes those operations here, though it does not name a sibling alternative for them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snippetCreate snippetAInspect
Save code as a new snippet (write scope required). Defaults to private. A collection must already exist. Up to 10 files; instance size and storage limits apply. Files are data only. Do not retry automatically: retries may create duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| files | Yes | ||
| title | Yes | ||
| source | No | ||
| collection | No | ||
| visibility | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it adds concrete behavior: default visibility is private, a maximum of 10 files, instance/storage limits, files are stored as data only (not executed), and retries can create duplicates. That last point turns the idempotentHint=false annotation into actionable guidance, which is exactly the value the description should add on top of structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six short sentences, no filler, with the write-scope precondition and the default visibility front-loaded before limits and the retry warning. Each sentence contributes a distinct operational fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter creation tool with no output schema, the description never says what comes back — no mention of a new snippet ID or URL, which an agent needs to chain into read_snippet or update_snippet. It also omits the source and tags parameters entirely, though it does cover the main failure modes well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it only explains three of seven parameters: files (max 10, data only), collection (must pre-exist), and visibility (defaults to private). It says nothing about title, tags, description, or the nested source object (repository/commit/dirty), leaving meaningful gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Save code as a new snippet'), and the word 'new' implicitly separates it from update_snippet. It does not explicitly name a sibling, so an agent must infer the boundary with update_snippet rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a real precondition ('write scope required', 'A collection must already exist') that tells the agent when the call will fail, and 'Do not retry automatically' is an explicit usage instruction. It stops short of naming update_snippet or create_collection as the alternative path, so the routing is only partially handled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_collectionFetch collection recipeARead-onlyIdempotentInspect
Fetch a page of your collection as numbered recipe steps, with full snippet files. Order is oldest capture first, matching the CLI. Continue with nextCursor and nextStep; a page holds up to 50 snippets. This does not execute the recipe.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| cursor | No | ||
| startStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the bar is lower, yet the description adds real substance: deterministic ordering, a 50-snippet page cap, and the reassurance that nothing is executed. It does not describe error behavior for a bad slug or expired cursor, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with what is returned and scoped immediately after by ordering and page size. Nothing is redundant, though the cursor naming mismatch adds a small parsing burden.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately describes the shape of the return (page of numbered steps with full snippet files, up to 50, plus continuation tokens). The only meaningful gap is that the required 'slug' parameter's meaning is never stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it only partly does. It explains continuation flow, but refers to 'nextCursor' and 'nextStep' rather than the actual parameter names 'cursor' and 'startStep', and never explains what 'slug' identifies or its naming constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a page of your collection') plus the exact output form ('numbered recipe steps, with full snippet files'), which cleanly separates it from siblings like list_collections and search_snippets. The closing note that it 'does not execute the recipe' further disambiguates intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: ordering is oldest-capture-first, pagination continues via cursor/step, and the call is non-executing. It stops short of naming an explicit alternative (e.g., when to prefer list_collections or search_snippets instead), so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList collectionsARead-onlyIdempotentInspect
List your collections, oldest first, with each slug, name and live snippet count. Use a slug as the collection of create_snippet, update_snippet or fetch_collection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so safety is covered. The description adds genuinely new behavior (result ordering is oldest-first, and counts are of live snippets), but says nothing about whether the list is complete or paginated, which matters for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding, with the result shape front-loaded ahead of the downstream usage note. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and ordering, and the annotations carry the safety profile. The only omission is any statement about result completeness or size limits, which is minor for a zero-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters and the schema coverage is trivially 100%, so there is nothing for the description to disambiguate. Baseline applies; the mention of the slug as the downstream input is a small bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list collections) plus the ordering (oldest first) and the exact fields returned (slug, name, live snippet count). It is clearly distinct from fetch_collection, which retrieves a single collection by slug, and from the snippet-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the tool's role in the workflow explicit: call it to obtain slugs, which are then consumed by create_snippet, update_snippet and fetch_collection. It does not state exclusions or name alternatives for the case where the slug is already known, so it falls just short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_snippetRead snippetARead-onlyIdempotentInspect
Read one of your live snippets by its ID or slug, including all files, paths, code and source metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description's job is lighter. It still adds real signal: the word 'live' implies trashed or deleted snippets (see trash_snippet) will not resolve, and it enumerates what comes back (files, paths, code, source metadata). It does not cover failure behavior for unknown or trashed IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the return contents appended as a useful clause. There is no filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly summarizes the return payload, and it clearly frames the tool as a single-item read. The main residual gap is not stating what happens when the ID is invalid or the snippet is trashed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter is named only 'id' with a character pattern, so the description carries the burden. It adds meaningful semantics by stating that a slug is also accepted, which the schema does not reveal, though it gives no format or precedence guidance when both forms could apply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read one of your live snippets') and scopes it to a single item fetched by 'ID or slug', which implicitly separates it from search_snippets and fetch_collection. It stops short of naming a sibling alternative explicitly, so it lands just below the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by its ID or slug' phrasing implies you should already have an identifier, which steers agents away from this tool for discovery. However, there is no explicit when-to-use/when-not statement and no pointer to search_snippets for resolving an unknown identifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_snippetsSearch snippetsARead-onlyIdempotentInspect
Find your live snippets by words in the title, description, tags, file paths or code (every word must match), plus tag, language and collection filters. Returns summaries and nextCursor; call again with that cursor for the next page. Use read_snippet to fetch code.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| cursor | No | ||
| language | No | ||
| collection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral facts: results are paged via nextCursor and must be re-invoked with that cursor, and the payload contains summaries rather than code. It omits default/max page size behavior, which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler: capability first, return/pagination behavior second, sibling hand-off last. Every clause carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six optional parameters, zero schema descriptions and no output schema, the description still conveys what is returned (summaries plus a cursor) and how to paginate, which is the critical missing context. The undocumented limit and the absence of any default page size are the remaining, minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden, and it does for most parameters: query (which fields, all-words semantics), tags, language, collection, and cursor (how to use it for the next page). Only limit is left undefined; its name and 1-100 bounds make it largely self-evident, but the omission is a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Find your live snippets") and then enumerates exactly what is searched: title, description, tags, file paths and code. The word-match semantics ("every word must match") and the phrase "live snippets" further narrow the resource, and the closing sentence separates it from read_snippet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes code retrieval to read_snippet ("Use read_snippet to fetch code"), which is the main ambiguity among these siblings. It also warns that matching is conjunctive across words. There is no explicit statement of when not to use it or of a browsing-only alternative, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trash_snippetMove snippet to trashADestructiveInspect
Move your live snippet to the trash (write scope required). Its link stops working; the owner can restore it from the app until the trash is emptied. This tool never deletes permanently. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds meaningful context on top: the snippet link stops working, the owner can restore it from the app until the trash is emptied, and the operation is never permanent. It also surfaces the authorization requirement (write scope) and a confirmation step, which annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then reversibility, then the safety instruction. No sentence repeats the name or the annotations, and nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with annotations present and no output schema, the description covers side effects, reversibility, scope requirements, and confirmation guidance. The only omission is what the call returns or whether the response includes the trashed state, which is minor at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'id' is never described in the text, so the description adds no meaning beyond the schema's type and pattern constraints. The gap is small because a lone 'id' on a snippet-trashing tool is self-evident, but it is still undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Move your live snippet to the trash') and immediately constrains scope by stating it never deletes permanently, which separates soft-delete semantics from any hard-delete expectation among the snippet/collection siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete preconditions for use: write scope is required and the agent should confirm with the user first. What it lacks is an explicit pointer to an alternative when permanent removal or bulk cleanup is actually wanted, leaving that branch to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_snippetUpdate snippetADestructiveInspect
Replace the title and entire file list of your live snippet (write scope required). Read it first to keep files you still need. Omitted description, visibility, collection, tags and source are preserved; explicit null clears collection/source. Link, expiry, password and burn setting remain unchanged. Records an edit in history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| files | Yes | ||
| title | Yes | ||
| source | No | ||
| collection | No | ||
| visibility | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds real context on top: write scope required, the full file list is overwritten rather than merged, omitted fields are preserved, explicit null clears collection/source, and an edit is recorded in history. The history note also explains why the call is non-idempotent despite replace semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the destructive replace action, then the mitigation (read first), then the field-by-field preservation rules. No filler and no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 8-parameter mutation with no output schema, this covers the important ground: permissions, overwrite breadth, preservation, null semantics, and history. It does not say what a successful response contains or whether files[].lines can be used for partial-file updates, a minor gap given the destructive hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and largely delivers: it names every optional field (description, visibility, collection, tags, source), states the preserve-by-default rule, and defines explicit-null clearing for collection and source. Only the nested shapes (files[].lines, source.commit/dirty) are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Replace the title and entire file list of your live snippet" gives a specific verb (replace) plus the exact resource and scope, and the closing sentence about link/expiry/password/burn settings makes clear this is not the settings-update sibling. An agent can distinguish update_snippet from update_snippet_settings and create_snippet without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read it first to keep files you still need" is an explicit prerequisite directing the agent to read_snippet before calling, which is exactly the right routing for a replace-semantics tool. It stops short of naming update_snippet_settings as the alternative for the fields this tool leaves untouched, so the exclusion is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_snippet_settingsUpdate snippet sharing settingsADestructiveIdempotentInspect
Change who can open your live snippet (write scope required): visibility, expiry counted from now, a password (null removes it) and burn after read. Omitted fields stay as they are. Confirm with the user before making a snippet public or setting a password, which is then visible in this conversation. Returns the current settings; the password itself is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| expiry | No | ||
| password | No | ||
| visibility | No | ||
| burnAfterRead | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint, idempotentHint, readOnlyHint=false) by disclosing the write scope requirement, that expiry is counted from now, that null removes the password, that omitted fields are preserved, that a set password becomes visible in the conversation, and that the password is never returned. These are exactly the consequences an agent needs before mutating sharing state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the purpose, then behavioral consequences, then the confirmation requirement, then the return contract. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema, the description covers permissions, patch semantics, irreversible effects, the human-confirmation step, and what the response contains. An agent has everything needed to call it safely and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the load and mostly succeeds: it explains expiry semantics ('counted from now'), password null-removal, burn-after-read, and the omit-to-preserve rule for all five fields. It does not restate the enum values for visibility or expiry, but those are visible in the schema, so the remaining gap is small.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — changing who can open a live snippet — and enumerates the exact settings covered (visibility, expiry, password, burn after read). This makes it clearly distinct from the sibling update_snippet, which handles snippet content rather than sharing scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives conditional guidance: confirm with the user before making a snippet public or setting a password, and states that omitted fields remain unchanged, which implies partial-update usage. It does not explicitly route the agent between this and update_snippet, but the scoping sentence makes the boundary reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
create_collection - First observed
create_snippet - First observed
fetch_collection - First observed
list_collections - First observed
read_snippet - First observed
search_snippets - First observed
trash_snippet - First observed
update_snippet - First observed
update_snippet_settings
TDQS
Scored across 9 tools
Each tool has a clearly distinct action and resource: snippet content operations, snippet settings, collection listing/fetching, and search are well separated. update_snippet versus update_snippet_settings is explicitly scoped and unlikely to be confused.
The set overwhelmingly follows snake_case verb_noun naming. Minor inconsistency appears with plural nouns in list_collections and search_snippets while most sibling tools use singular resource names.
Nine tools are well-scoped for a snippet management server. Each tool covers a meaningful operation without excessive granularity.
Snippet lifecycle coverage is strong: create, read, update, search, trash, and settings update. Collection support is limited to create, list, and fetch; rename/delete and trash restore are intentionally left to the app, creating minor gaps but not blocking core workflows.
Maintenance
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
1Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Shared memory for AI coding agents. Save once, reuse from Cursor, Claude Code, Codex.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- AlicenseAqualityCmaintenanceSnipara is the Project Brain for AI coding agents: a shared Project Intelligence layer for persistent context, reviewed memory, code impact, verification evidence, and handoffs through MCP.1357 PyPIMIT

mcp-code-snippetsofficial
AlicenseNot gradedqualityDmaintenanceAllows agents to lookup code snippets in your project. Uses a remote MCP server with a collection of code snippets, with support for automatic project language detection.13Apache 2.0- AlicenseAqualityCmaintenanceMCP server for massCode that lets AI assistants list, read, create, and update snippets, folders, and tags via the local massCode API.8MIT

snipper-mcpofficial
AlicenseNot gradedqualityAmaintenancesnipper-mcp — the MCP server inside SnipperApp 3. SnipperApp 3 is a native macOS code snippet manager. It ships its own MCP server, so AI assistants can search, read, create and organise the snippets in your library.MIT