oneshot-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oneshot-mcpsearch for a verified Next.js build pack"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
oneshot-mcp
An MCP server that lets your coding agent query the OneShot catalog of receipt-verified build packs without you leaving your editor. Mid-build, your agent can ask "is there a verified pack for this?" instead of you having to remember to check the storefront.
Why you'd add this (honestly)
This is a vendor catalog: it lets your agent query OneShot's own paid build
packs, plus their verification data, from inside your normal workflow. It's
worth adding because it's useful independent of whether you ever buy anything
-- search_packs and list_packs tell you plainly whether a receipt-verified
pack exists for what you're building, with real "M of N runs passed" numbers,
not marketing copy. get_pack puts the price, refund terms, and exact receipt
facts in front of you before you decide anything. But be clear-eyed about what
it is: this is OneShot listing its own products to your agent, not an
independent recommendation engine. It never calls a pack "best" or invents a
verification a receipt doesn't support, and every result carries the price and
refund pointer -- but the catalog is ours, and every entry in it is something
we sell.
Related MCP server: Elytra Security MCP Server
Tools
search_packs({ query, limit? })-- keyword search (stack, problem, or niche) over the catalog. Returns matching packs: title, one-liner, price, verification status stated exactly as the receipt supports (e.g."3 of 3 clean-room runs passed", or"unverified"if no receipt exists yet), a receipt summary, the refund-policy pointer, and the storefront URL. Never ranks or calls a result "best" -- describes each match and leaves the decision to the caller.get_pack({ slug })-- full detail for one pack: what you get, architecture-decision highlights, scale envelope, FAQ, exact receipt facts (per-check pass/fail, model, token/wall-time cost) when verified, price, refund pointer, and the buy URL.list_packs()-- the whole catalog, compact: slug, title, one-liner, niche, price, and verification status per pack, plus the refund-policy summary once.
Data source: fetch-with-fallback (not a bundled catalog)
Two options were on the table: read packs/*/pack.yaml + receipt/receipt.json
LISTING.mdlive at runtime, or ship a generatedcatalog.jsonbaked into the npm package. Chosen: live reads, preferring the storefront's/catalog.jsonover a local checkout, in that order:
Try
GET $ONESHOT_CATALOG_URL(defaulthttps://oneshotpacks.com/catalog.json, 3s timeout). Accepts either a bare array of pack objects or{ "packs": [...] }.If that fails for any reason -- network error, non-2xx, not JSON, wrong shape -- fall back to reading
packs/*/pack.yaml+LISTING.md+receipt/receipt.jsondirectly off disk under$PACKS_DIR(default../packs, resolved from the current working directory -- matchesstorefront/lib/packs.ts's own convention when both this package andpacks/sit at the repo root).If neither source has anything,
list_packs/search_packssay so plainly (catalog_source: "none"+ an explanatory note) instead of serving stale bundled data. This server never fabricates catalog contents.
A baked-in catalog.json was rejected because it goes stale the moment a
pack is re-verified or newly listed, and every server update would then
require a new npm release just to refresh data the storefront already has
live. Live reads cost one fetch + a YAML parse -- the same low cost the
storefront's own loader pays -- and stay fresh without a redeploy of this
server, which is the whole point per docs/03-marketing-distribution.md Lever 2.
The storefront's /catalog.json endpoint is being built concurrently by a
colleague and may not exist yet. This server does not depend on it existing:
any fetch failure (including a plain 404 today) is treated as "not there yet"
and falls straight through to the local-file fallback, logged to stderr, no
crash. Once /catalog.json ships, this server picks it up automatically on
its next 5-minute cache refresh -- no config change needed as long as it's at
the default URL.
Responses are cached in-process for 5 minutes so a long-lived stdio session doesn't refetch on every tool call.
Install
Not yet published to npm (publishing is step one of the launch checklist --
see docs/09-launch-checklist.md). Until then, point your MCP client at the
absolute path of this checked-out repo. After publishing, switch to the npx
form -- same shape, just swap command/args.
Claude Code
Add to your project's .mcp.json (or via claude mcp add):
{
"mcpServers": {
"oneshot": {
"command": "node",
"args": ["/absolute/path/to/oneshot/oneshot-mcp/src/index.ts"]
}
}
}Once published to npm:
{
"mcpServers": {
"oneshot": {
"command": "npx",
"args": ["-y", "oneshot-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"oneshot": {
"command": "node",
"args": ["/absolute/path/to/oneshot/oneshot-mcp/src/index.ts"]
}
}
}Once published to npm, same swap as above ("command": "npx", "args": ["-y", "oneshot-mcp"]).
Env vars (optional, either client config's env block or your shell)
Var | Default | Purpose |
|
| Remote catalog tried first |
|
| Base URL used to build pack/buy links |
|
| Local fallback packs directory |
Requirements
Node >= 22.6 (uses Node's built-in TypeScript type-stripping to run .ts
source directly -- no build step, no bundler, no tsc in the loop).
Development
npm install
npm test # node --test test/tools.test.ts
npm start # runs the server on stdio (Ctrl-C to stop)
node src/index.ts --helptest/tools.test.ts exercises search_packs, get_pack, and list_packs
directly against fixture data in fixtures/packs/ (not through the MCP
protocol -- the tool logic in src/catalog.ts is plain, transport-agnostic
functions; src/index.ts only wires them to the SDK). Coverage: a search hit,
a search miss, an unverified pack rendered honestly (no fabricated pass rate),
a malformed pack.yaml skipped without crashing the rest of the catalog, and
the full fetch-with-fallback chain (remote success, remote 404, remote
network error, malformed remote shape, remote-entry-level tolerance, and TTL
caching).
Available Tools
3 toolsget_packGet OneShot pack detailA
Full detail for one OneShot pack by slug: what you get, architecture-decision highlights, the scale envelope, FAQ, the exact receipt facts (per-check pass/fail, model, token and wall-time cost) when the pack has been verified, price, a refund-policy pointer, and the buy URL. Reports 'unverified' honestly when no execution receipt exists yet -- never implies a verification the receipt doesn't support.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Pack slug, e.g. "saas-billing-tax". Use list_packs or search_packs to find slugs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a critical behavioral trait: it 'Reports unverified honestly when no execution receipt exists yet -- never implies a verification the receipt doesn't support.' It also enumerates the contents of the response (receipt facts, price, refund policy, buy URL), giving the agent a clear picture of what to expect. However, it does not mention potential errors, auth requirements, or side-effect behavior, which are common in detailed transparency. Still, for a get operation, the disclosed honesty about verification status is notable.
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?
The description is a single, information-dense sentence that front-loads the core purpose ('Full detail for one OneShot pack by slug') before elaborating on the contents. Every clause adds value, and there is no fluff. It is appropriately sized for the tool's complexity.
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?
Given the tool has only one parameter and no output schema, the description must explain what the tool returns. It does so comprehensively: what you get, architecture highlights, scale envelope, FAQ, receipt facts, price, refund policy, buy URL, and the verification honesty disclaimer. This is sufficient for an agent to invoke the tool and interpret the result correctly.
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 100%: the slug parameter has a clear description with an example and guidance to use sibling tools. The tool description adds little beyond 'by slug', which is redundant. Since the schema already handles parameter semantics well, a baseline of 3 is appropriate.
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 clearly states the tool's function: 'Full detail for one OneShot pack by slug'. It specifies the resource (OneShot pack), the scope (one pack), and the identifier (slug). It effectively distinguishes from sibling tools like list_packs (lists multiple packs) and search_packs (searches), making the purpose unambiguous.
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 description implies when to use this tool: when you have a specific slug and need full pack detail. It does not explicitly contrast with siblings, but the parameter schema instructs to 'Use list_packs or search_packs to find slugs', providing clear guidance on obtaining the required slug. This is strong contextual guidance, though the tool description itself could be more explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packsList all OneShot packsA
The whole OneShot catalog, compact: slug, title, one-liner, niche, price, and verification status per pack, plus the refund-policy summary once. Use this for an overview, then call get_pack on a specific slug for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses the output content (slug, title, one-liner, etc.) and the single refund-policy summary. It describes the compact format but doesn't explicitly state read-only or safe behavior, though that is implied by listing.
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?
The description is two sentences, front-loaded with the primary purpose, and every sentence earns its place. It efficiently conveys what is returned and what to do next without waste.
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 simple no-parameter list tool, the description is complete: it names all returned fields, indicates the compact nature, and provides a next step. It fully covers the behavioral context needed for an agent to select and invoke this 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 has zero parameters, and the input schema is empty, so there are no parameters to describe. The description adds no parameter info, but the baseline for 0 params is 4, which is appropriate.
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 clearly states the tool lists the entire OneShot catalog in compact form, naming specific fields returned. It distinguishes itself from get_pack by positioning itself as an overview tool and directing users to get_pack for full detail.
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 description provides explicit when-to-use guidance (for an overview) and names get_pack as the alternative for full detail. However, it does not mention search_packs as an alternative for filtering, leaving a small gap in alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_packsSearch OneShot packsA
Search the OneShot catalog of receipt-verified agent build packs by keyword (stack, problem, or niche -- e.g. "stripe billing subscription" or "offline sync"). Returns matching packs with title, one-liner, price, verification status stated exactly as the receipt supports (e.g. "3 of 3 clean-room runs passed", or "unverified" if no receipt exists yet -- never invented), a receipt summary, and the storefront URL. Does not rank or editorialize any pack as "best" -- describes each match and leaves the choice to the caller.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 10). | |
| query | Yes | Free-text search, e.g. "multi-tenant auth" or "email deliverability". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden. It discloses that verification status is 'stated exactly as the receipt supports' and never invented, and that it does not rank or editorialize. It also lists the exact fields returned. This provides strong behavioral transparency, though it could be slightly more explicit about result ordering.
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?
The description is composed of three sentences that front-load the purpose and then add necessary behavioral details. It is concise without being sparse, with no filler. Every sentence contributes useful information, though the second sentence is long and packed.
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?
Given that there is no output schema, the description adequately covers the return values by naming the fields (title, one-liner, price, verification status, receipt summary, storefront URL). It also explains verification honesty and non-editorializing behavior. It is sufficiently complete for a search tool, though it could include information about result ordering or pagination.
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 input schema already has 100% coverage for both parameters, so baseline is 3. The description adds meaningful value for the 'query' parameter by explaining it can be a stack, problem, or niche, and gives concrete examples like 'stripe billing subscription' or 'offline sync', which go beyond the schema's examples.
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 clearly states 'Search the OneShot catalog of receipt-verified agent build packs by keyword', which is a specific verb and resource. It distinguishes from siblings (get_pack, list_packs) by framing this as a keyword-based search that returns multiple matches, while also noting it does not editorialize.
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 description provides clear context for when to use the tool: when you need to search by stack, problem, or niche. It gives examples of suitable queries. However, it does not explicitly mention alternatives like 'use list_packs to browse all' or 'use get_pack for details', so exclusions are 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_pack - First observed
list_packs - First observed
search_packs
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: search_packs finds by keyword, get_pack shows full detail for a specific slug, and list_packs provides a compact overview. There is no overlap or ambiguity between them.
All three tool names follow a consistent verb_noun pattern: search_packs, get_pack, list_packs. The naming is uniform and predictable.
Three tools is well-scoped for a read-only catalog browsing server. Each tool serves a distinct and necessary function without redundancy or excessive granularity.
The tool surface fully covers the domain of browsing and retrieving OneShot packs: search, overview, and full detail. There are no missing operations for a catalog of this type.
Maintenance
Related MCP Connectors
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Shopify product discovery and x402-paid offer verification for AI agents.
Find UI components and themes, retrieve code, and generate with hosted 21st AI when enabled.
Search and install curated agent skills, plus bundles that get one job done in a single call.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides pre-indexed knowledge packs for popular technologies (Stripe, React, etc.) that MCP-compatible agents can subscribe to and search, delivering citation-grounded answers with hourly fresh indexes.-
- AlicenseAqualityDmaintenanceEnables AI coding agents to scan smart contracts and code for vulnerabilities, check against 12 famous-hack patterns, and return public security receipts directly in the IDE.45 npmMIT
- AlicenseAqualityBmaintenanceProvides coding agents live access to shadcn-style component registries, enabling them to search, compare, and fetch real component source code for UI composition.561 npm5MIT
- AlicenseAqualityBmaintenanceLets AI agents search and discover skill files from a curated catalog to fill missing capabilities, providing download URLs for free items and purchase info for paid ones.33MIT