Skip to main content
Glama

Server Details

Tested, version-pinned code recipes for AI coding agents, each with its last-passed receipt.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
provenpin/provenpin
GitHub Stars
1
Server Listing
ProvenPin
ChatGPT
–
Claude
–

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

The three tools have clearly distinct roles: search_recipes discovers recipes by query, list_stacks discovers supported libraries, and get_recipe retrieves the full detail for a known recipe id. Although search and get both mention compatibility, their boundaries are explicit and unlikely to be confused.

Naming Consistency5/5

All three names follow a consistent snake_case verb_noun pattern: search_recipes, list_stacks, get_recipe. The convention is predictable and easy to infer.

Tool Count5/5

Three tools are well-suited to a focused read-only recipe catalog: one for search, one for coverage discovery, and one for full detail retrieval. Each tool has a clear purpose and earns its place.

Completeness4/5

The surface covers the core workflow of finding, validating coverage for, and retrieving tested recipes with pinned versions and receipts. A minor gap is the lack of a direct browse/list-all-recipes operation, though search and list_stacks provide workable paths.

Available Tools

3 tools
get_recipeGet a recipeA
Read-only
Inspect

Call this right after search_recipes returns a matching recipe, before you write the integration code, so you start from files and versions that passed tests. Gets the full recipe by id (ids come from search_recipes): every source and test file (each with the sha256 of the exact bytes that were tested), the exact pinned dependency versions, the setup and test commands, its test receipt (when it last passed, test counts, runtime and runner), recipe.yaml as manifest so receipt.recipe_hash can be recomputed (recipe_hash_rule), and staleness: the latest weekly check of its stack libraries against their newest releases. Pass the project's lockfile or a {package: version} map as versions to get a compatibility section first, comparing each pinned package with the installed one (exact, compatible, mismatch, or not in your project) with plain warnings; test and build tools (pytest, tsx, @types/*) are listed under tooling and do not change overall. Use the pinned versions together; they are the versions the tests passed with. Adapt names and config to the user's project, and keep the included tests to check your integration.

NameRequiredDescriptionDefault
idYes
versionsNoOptional but recommended: the versions in the user's project, so results are checked against them. Either a map like {"next": "15.2.0", "zod": "3.23.8"} or the raw text of package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock or uv.lock (max 200KB). Used only for this call, never stored.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly/openWorld=false, but the description adds substantial context: what the sha256 hashes cover, that staleness is a weekly check, that tooling packages are excluded from the overall compatibility verdict, and that the versions input is never stored. These are behaviors an agent could not infer from the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical routing instruction is front-loaded in the first sentence, and nearly every clause carries new behavioral information. It is a single sprawling paragraph with some redundancy (the 'use the pinned versions' point is made twice) and would scan better with structure, but little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the full burden of describing return values and does so thoroughly: files, pinned deps, commands, test receipt, manifest/hash rule, staleness, and the optional compatibility section. Nothing an agent needs in order to invoke and interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% and the description compensates for the undocumented id parameter by stating its provenance (comes from search_recipes). It also adds semantic depth to versions beyond the schema: the four compatibility categories, tooling exclusion, and why the pinned versions should be used together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Gets the full recipe by id') and enumerates exactly what the payload contains. It also distinguishes itself from the sibling by specifying that ids come from search_recipes and that this call follows that search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing: 'Call this right after search_recipes returns a matching recipe, before you write the integration code.' It names the alternative (search_recipes) and the condition that selects it, and adds a conditional usage path for the optional versions parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stacksList stacksA
Read-only
Inspect

Call this when the user names a library and you are not sure ProvenPin covers it, or after search_recipes returns nothing. Lists the libraries and frameworks that currently have passing, version-pinned recipes, with recipe counts; use the names as the stack filter in search_recipes.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: the listing is restricted to stacks with passing, version-pinned recipes (i.e., not an exhaustive catalog), and it includes recipe counts. It does not discuss completeness limits or ordering, so it falls just short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the trigger condition, then the output content, then the follow-up action. No filler or restatement of the title; every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No parameters and no output schema, so the description must carry the return-value burden — and it does, describing the returned entity (libraries/frameworks with passing recipes) and the accompanying recipe counts. Nothing needed 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so there is nothing to disambiguate and the baseline is 4. The description's remark about using result names as the stack filter applies to a sibling's parameter, which is helpful context but not a parameter of this tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it 'lists the libraries and frameworks that currently have passing, version-pinned recipes, with recipe counts.' The qualifier 'passing, version-pinned' distinguishes its scope from a generic catalog, and it is clearly separable from search_recipes and get_recipe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two explicit trigger conditions — when the user names a library and coverage is uncertain, and after search_recipes returns nothing — plus the downstream follow-up (use the returned names as the stack filter in search_recipes). This is when-to-use and how-to-continue in one place.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_recipesSearch tested recipesA
Read-only
Inspect

Find a tested, version-pinned code recipe for wiring libraries together. Call this BEFORE writing glue code that combines 2+ libraries (auth + framework, ORM + database, payments webhooks, queues, validation, request mocking, logging), when choosing or pinning package versions, when upgrading a library to a new major version (for example SQLAlchemy 2 or Pydantic 2), and when you hit version conflicts, peer-dependency errors, deprecation errors or integration errors between libraries. Example queries: 'express stripe webhook', 'fastapi sqlmodel crud', 'hono jwt'. Only recipes whose latest test run passed are returned. Each result lists its exact pinned versions and a test receipt (receipt.last_passed_at). Pass the project's lockfile or a {package: version} map as versions: recipes that match the installed versions rank first and each result gets a compatibility summary. Each result's coverage (0 to 1) is the share of your query's words it matches. If no recipe fits, count is 0 and results is empty: write the code yourself; try list_stacks to see what is covered.

NameRequiredDescriptionDefault
limitNo
queryYesWhat you are wiring together, in plain words or library names, e.g. 'django rest api' or 'rq redis jobs'.
stackNoOnly recipes that use all of these libraries.
languageNo
versionsNoOptional but recommended: the versions in the user's project, so results are checked against them. Either a map like {"next": "15.2.0", "zod": "3.23.8"} or the raw text of package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock or uv.lock (max 200KB). Used only for this call, never stored.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description goes further by disclosing that only recipes with a passing latest test run are returned, that results carry a test receipt and compatibility summary, and that the versions input is used only for this call and never stored. It does not mention result ordering beyond version-match ranking or any rate limits, so it stops short of the top of the range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose comes first, then triggers, then inputs, then return semantics and the failure case — a well-ordered funnel. It is dense and somewhat long, with mild redundancy around 'version-pinned'/'pinned versions' and the parenthetical library pairings, but nearly every clause adds usable routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return contract, and it does: each result's pinned versions, test receipt (receipt.last_passed_at), coverage as a 0-1 ratio, compatibility summary, and the empty-result shape (count 0). Combined with query examples and the fallback to list_stacks, an agent has everything needed to call and interpret this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 60% schema coverage, the description meaningfully extends the versions parameter (lockfile or map, drives ranking and the per-result compatibility summary, never persisted) and explains stack filtering behavior plus the coverage score. The limit parameter goes undocumented in both schema and description, and language has only an enum, so a small gap remains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Find a tested, version-pinned code recipe for wiring libraries together.' The scope (tested, version-pinned, cross-library wiring) is distinctive enough to separate it from get_recipe and list_stacks, and list_stacks is named explicitly as the coverage-lookup alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Call this BEFORE writing glue code that combines 2+ libraries') plus a concrete enumeration of situations: choosing/pinning versions, major upgrades, version/peer-dependency/deprecation/integration errors. It also states the exclusion path — if count is 0, write the code yourself and try list_stacks.

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.

  1. 2 tool updates
    • Changedget_recipe1 field changed
      • addedInput schema / properties / versions
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Optional but recommended: the versions in the user's project, so results are checked against them. Either a map like {\"next\": \"15.2.0\", \"zod\": \"3.23.8\"} or the raw text of package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock or uv.lock (max 200KB). Used only for this call, never stored.",
        +  "type": [
        +    "object",
        +    "string"
        +  ]
        +}
    • Changedsearch_recipes1 field changed
      • addedInput schema / properties / versions
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Optional but recommended: the versions in the user's project, so results are checked against them. Either a map like {\"next\": \"15.2.0\", \"zod\": \"3.23.8\"} or the raw text of package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock or uv.lock (max 200KB). Used only for this call, never stored.",
        +  "type": [
        +    "object",
        +    "string"
        +  ]
        +}
  2. 3 tool updates
    • First observedget_recipe
    • First observedlist_stacks
    • First observedsearch_recipes

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.