Snowfakery MCP Server
Provides tools for generating Salesforce test data and mappings for CumulusCI workflows.
Click on "Install 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., "@Snowfakery MCP ServerGenerate a Snowfakery recipe for 50 Account records with random names and phone numbers."
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.
Snowfakery MCP Server
Power up your AI workflows with Snowfakery data generation — Use Claude, ChatGPT, and other AI assistants to author, debug, and run data recipes through the Model Context Protocol.
MCP Registry
mcp-name: io.github.composable-delivery/snowfakery-mcp
Related MCP server: mcp-code-mode
What is this?
Snowfakery is a YAML-based tool for programmatically generating test data. This MCP server connects Snowfakery to AI assistants, letting you:
Draft recipes with AI assistance backed by real Snowfakery docs and examples
Validate recipes before running them with detailed error feedback
Execute recipes and iterate on results interactively
Debug issues with static analysis and recipe inspection
Generate Salesforce mappings for CumulusCI workflows
Perfect for teams that need realistic test data—from Salesforce admins to developers building data pipelines.
Quick Start
Install uv
We recommend using uv for installs and for running from source.
Install
uv(macOS/Linux):curl -LsSf https://astral.sh/uv/install.sh | shInstall
uv(Windows PowerShell):powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
See the official uv install docs: https://docs.astral.sh/uv/getting-started/installation/
Claude Desktop (recommended)
For Claude Desktop, prefer using the .mcpb bundle from Releases:
Download the latest
.mcpbfrom https://github.com/composable-delivery/snowfakery-mcp/releasesAdd the bundle in Claude Desktop as an MCP server bundle
This bundle includes the pinned runtime metadata (uv.lock, manifest.json) and is the easiest way to get a reproducible setup.
Install & Run (CLI)
# Recommended: isolated install
uv tool install snowfakery-mcp
# Then run the server
snowfakery-mcpOr from source:
git clone https://github.com/composable-delivery/snowfakery-mcp.git
cd snowfakery-mcp
uv sync
uv run snowfakery-mcpConnect to Claude (Desktop)
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"snowfakery-mcp": {
"command": "snowfakery-mcp"
}
}
}Then ask Claude:
"Show me an example Snowfakery recipe" or "Help me write a recipe to generate 100 Salesforce accounts"
Features
Resources — Access docs, examples, and schemas:
Snowfakery documentation and recipe examples
JSON schema for recipe validation
Run outputs and artifacts
Tools — Interact with recipes:
Validate & analyze recipes (catch errors early)
Run recipes and capture output
List & retrieve example recipes
Generate CumulusCI mapping files
Learn More
MCP_SERVER_SPEC.md — detailed design and tool catalog
Snowfakery docs — recipe language reference
Contributing — how to contribute
Community
We want this to be welcoming at any level. Questions, ideas, and contributions are always welcome!
Questions & ideas? Open a GitHub Discussion
Found a bug? Open an Issue with a minimal recipe
Want to contribute? See CONTRIBUTING.md
Security concern? See SECURITY.md
Development
# Install dev dependencies
uv sync --all-groups
# Run tests
uv run pytest
# Type check
uv run mypy snowfakery_mcp
# Lint & format
uv run ruff check snowfakery_mcp tests scripts evals
uv run ruff format snowfakery_mcp tests scripts evalsEvals (Agentic Testing)
This repo includes inspect-ai tasks for testing the MCP server with AI models:
# Install eval dependencies
uv sync --group evals
# Run evaluation
uv run inspect eval evals/inspect_tasks.py@snowfakery_mcp_agentic --model openai/gpt-4o-miniSee evals/ for more examples and troubleshooting.
Notes
The repo includes the upstream Snowfakery repo as a git submodule (
Snowfakery/) for developmentWhen running from source, use
uv run ...to ensure the pinned environmentPyPI installs use bundled docs/examples (no submodule required)
Releases
See GitHub Releases for sdist, wheel, and .mcpb bundles (recommended for Claude Desktop).
Available Tools
10 toolsanalyze_recipeARead-onlyIdempotent
Parse and analyze a Snowfakery recipe structure.
Returns structural information about the recipe including:
Tables and their fields
Declared plugins and options
Random reference usage
Recipe version
Use this before running to understand recipe structure.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe_path | No | ||
| recipe_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint, which the description does not contradict. The description adds valuable behavioral context by detailing the returned structural information (tables, fields, plugins, options, etc.), going beyond the annotations.
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 concise at 5 sentences, with the main purpose in the first sentence and a bullet-like list of returned information. It wastes no words, though it could be slightly more compact.
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's moderate complexity (2 optional parameters, no output schema), the description covers the output structure well but lacks parameter semantics, making it incomplete for a fully informed call.
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%, yet the description does not explain the meaning or usage of the two parameters (recipe_path and recipe_text) beyond implying one provides a recipe. No guidance on mutual exclusivity or defaults is given.
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 parses and analyzes a Snowfakery recipe structure and lists specific return information (tables, fields, plugins, options, random references, version). It distinguishes from sibling tools like run_recipe and validate_recipe.
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 explicitly advises using this tool 'before running to understand recipe structure,' providing clear context for when to use it. It does not explicitly mention alternatives or when not to use, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mappingA
Generate a CumulusCI mapping.yml file from a Snowfakery recipe.
Creates the mapping file needed to load Snowfakery-generated data into Salesforce using CumulusCI. Returns a preview and artifact URI.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe_path | No | Path to recipe file (relative to workspace) | |
| recipe_text | No | Recipe YAML content as string | |
| load_declarations_paths | No | Optional paths to load declaration files |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and idempotentHint=false, so the tool is a mutation. The description adds that it 'Creates the mapping file' and 'Returns a preview and artifact URI,' which provides useful behavioral context beyond the annotations. No contradictions.
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 long, front-loads the primary action, and contains no redundant information. Every word serves a purpose.
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 presence of an output schema (not shown), the description need not elaborate on return values. It covers the core action, preview, and artifact URI. With 0 required parameters and clear constraints, it is sufficiently complete for 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?
All three parameters are documented in the input schema (100% coverage). The description does not add new parameter-specific meaning beyond what the schema already provides. Therefore, the 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 it generates a CumulusCI mapping.yml file from a Snowfakery recipe, with a specific verb ('generate') and resource ('mapping.yml file'). This distinguishes it from sibling tools like analyze_recipe, run_recipe, or validate_recipe, which perform different actions.
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 usage context ('needed to load Snowfakery-generated data into Salesforce') but does not explicitly state when to use or when not to use this tool compared to alternatives. No guidance on prerequisites or fallback options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exampleARead-onlyIdempotent
Fetch a Snowfakery example recipe by name.
Returns the full text of the specified example recipe. Use list_examples first to see available examples.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that it returns full text, but does not discuss error handling or behavior for invalid names. With annotation coverage, a score of 3 is appropriate.
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 concise sentences: action, return value, usage guidance. No redundant information, front-loaded with the core purpose.
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 fetch tool with output schema and clear annotations, the description covers purpose, return, and usage context. Missing details on edge cases (e.g., name not found) but acceptable given tool simplicity.
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 description only states 'by name' without explaining what constitutes a valid name, case sensitivity, or format. The parameter purpose is implied but not explicitly defined.
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?
Clearly states it fetches a Snowfakery example recipe by name and returns full text. Distinguishes from sibling list_examples by recommending to use it first.
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 advises to use list_examples first to see available examples, establishing a clear prerequisite. Does not detail when not to use or mention alternatives beyond list_examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schemaARead-onlyIdempotent
Return the Snowfakery recipe JSON schema.
Use this schema to understand the structure of valid recipes and for validation purposes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as readOnlyHint and idempotentHint, so the description does not need to add behavioral disclosures. It adds no extra behavioral context beyond stating it returns a schema.
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 concise with two sentences that immediately convey the tool's functionality and use. No superfluous 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?
Given the tool has no parameters and the output schema exists, the description fully covers what the tool does and why it should be used. No missing context.
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?
There are zero parameters, so according to the baseline rule, the score is 4. The description accurately indicates no inputs are needed.
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 that the tool returns the Snowfakery recipe JSON schema, using the verb 'Return' and specifying the resource. This purpose is distinct from sibling tools like run_recipe or validate_recipe.
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 guidance on using the schema to understand recipe structure and for validation purposes. It does not explicitly mention when not to use it, but the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iterative_recipe_genA
Create a recipe iteratively with validation.
This tool uses the LLM (via sampling) to draft a Snowfakery recipe, validates it, and if it fails, asks the LLM to fix it. Returns the final valid recipe or the last attempt.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| max_iterations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses LLM usage, validation, and retry behavior; no annotations to contradict. Adds value beyond the openWorldHint.
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?
Concise but could be tighter; two sentences plus bullet-like format is efficient.
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?
Covers main flow but lacks details on parameter roles and failure behavior; output schema exists but is not shown.
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 has 0% description coverage and the description does not explain the 'max_iterations' parameter meaning or the role of 'goal' beyond implied intent.
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 creates a recipe iteratively with validation, and distinguishes it from sibling tools like validate_recipe and run_recipe.
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 usage for iterative recipe generation, but lacks explicit when-not or alternatives compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesARead-onlyIdempotent
Return Snowfakery + server capability info.
Use this tool first to understand what the server can do, including:
Snowfakery version
Supported output formats
Server limits (timeout, max output, max reps)
Available resources
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| limits | Yes | |
| resources | Yes | |
| snowfakery_version | Yes | |
| supported_output_formats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds value by detailing the categories of returned information (version, formats, limits, resources), beyond what annotations provide.
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?
Concise and front-loaded with purpose, then uses a bullet-style list for specifics. Every sentence is meaningful.
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?
Low complexity tool with no parameters and an output schema. Description covers the key categories of returned information adequately.
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?
No parameters, baseline 4. Description adds no parameter details, but also no need.
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 returns capability info and lists specific items (version, formats, limits, resources). This distinguishes it from siblings like analyze_recipe or run_recipe.
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 recommends using this tool 'first' to understand capabilities, implying it's for initial discovery. No explicit when-not-to-use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_examplesARead-onlyIdempotent
List available Snowfakery example recipe files.
Returns a list of example recipe filenames from the bundled examples. Use prefix to filter results (e.g., "salesforce" for Salesforce examples).
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| examples | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent. Description adds that it returns filenames from bundled examples with filtering, which is useful beyond annotations.
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 clear, front-loaded sentences with no wasted words. Efficiently conveys purpose and key parameter behavior.
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 list tool with one optional param and an output schema, the description covers purpose, parameter, and return type. Minor omission: behavior when prefix is null (returns all), but inferred.
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 has 0% description coverage, so description must compensate. It explains the prefix parameter with an example, adding meaningful context.
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 available Snowfakery example recipe files and returns filenames. It distinguishes from siblings like get_example (retrieve specific file) and list_capabilities.
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 hints at when to use the prefix filter but doesn't explicitly contrast with alternatives like get_example or state when not to use. However, sibling context makes usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_recipeA
Run a Snowfakery recipe and generate fake data.
Executes the recipe and returns generated output along with artifact URIs.
The complete output is always written to disk and available via the
returned resource URI regardless of capture_output - that setting
only controls how much of it also comes back inline in this response.
| Name | Required | Description | Default |
|---|---|---|---|
| reps | No | Number of times to repeat the recipe | |
| options | No | User options (--option key=value equivalent) | |
| recipe_path | No | Path to recipe file (relative to workspace) | |
| recipe_text | No | Recipe YAML content as string | |
| strict_mode | No | Fail on undefined field references | |
| output_format | No | Output format (txt, json, csv, sql, dot, svg, etc.) | txt |
| target_number | No | Generate until table reaches count {"table": "X", "count": N} | |
| validate_only | No | Only validate, don't generate | |
| capture_output | No | How much generated output to include inline, in addition to the resource: "preview" (default) is a small preview plus output_bytes/record_count so you know how much data exists without paying to see all of it; "full" is the complete output inline, up to the server's max-capture-chars limit; "none" omits inline text entirely. | preview |
| plugin_options | No | Plugin configuration options | |
| generate_continuation | No | Create continuation file for resuming |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that complete output is always written to disk and that capture_output only controls inline return, adding context beyond annotations. However, does not mention behavior on re-execution or effects on existing data.
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 concise paragraphs: first states purpose, second adds a critical nuance about output persistence. No redundant or irrelevant content.
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?
Covers the key behavior (output always to disk, capture_output modes) for a tool with 11 parameters, 0 required, and an output schema. Leaves artifact URI details implicit but acceptable given output schema.
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 100% with detailed parameter descriptions; the tool description adds no additional meaning beyond summarizing capture_output behavior. Baseline score of 3 applies.
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?
Description explicitly states 'Run a Snowfakery recipe and generate fake data' with specific verb and resource, and distinguishes from siblings like analyze_recipe and validate_recipe by focusing on execution and output generation.
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?
No explicit guidance on when to use this tool versus alternatives; lacks when-to-use or when-not-to-use instructions. The description explains capture_output modes but does not direct the agent to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsARead-onlyIdempotent
Search Snowfakery documentation for a query string.
Returns matching lines from the markdown documentation. Useful for finding specific syntax, features, or examples.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| query | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and idempotentHint. The description adds value by specifying the return format (matching lines from markdown) and the scope (Snowfakery documentation), which are beyond annotations.
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 three concise sentences. The most important information appears first, and every sentence adds value without fluff.
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?
The tool is simple, and the description covers purpose and output. However, it lacks parameter documentation, which is essential for correct invocation. Output schema partially compensates for return structure, but the gap in parameter semantics reduces completeness.
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 description does not explain either parameter (query, limit). The agent must rely solely on parameter names, which is insufficient. The description should compensate by describing what each parameter does.
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 verb ('Search') and resource ('Snowfakery documentation'), and explains the output ('matching lines from the markdown documentation'). It distinguishes from sibling tools, none of which are search tools.
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 usage context ('useful for finding specific syntax, features, or examples') but provides no explicit when-to-use or when-not-to-use guidance. Since no sibling overlaps, it is adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_recipeARead-onlyIdempotent
Validate a Snowfakery recipe without generating data.
Checks recipe syntax and structure. Returns validation errors if any. Use either recipe_path (file on disk) or recipe_text (inline YAML).
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | User options to pass to the recipe | |
| recipe_path | No | Path to a recipe file (relative to workspace root) | |
| recipe_text | No | Recipe YAML content as a string | |
| strict_mode | No | If True, fail on undefined field references | |
| plugin_options | No | Plugin-specific options | |
| schema_validate | No | Reserved for future JSON schema validation |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | Yes | |
| errors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and idempotentHint=true. Description adds that it returns validation errors, consistent with read-only operation.
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 sentences, front-loaded with purpose, no redundancy. Every sentence earns its place.
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?
Moderate complexity (6 params, none required). Output schema exists (not shown). Description covers validation outcome but could explicitly state success condition. Still adequate.
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 100% with descriptions for all 6 parameters. Description adds value by highlighting recipe_path and recipe_text as alternatives, but offers no new info on other parameters.
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?
Clearly states 'Validate a Snowfakery recipe without generating data', specifying verb (validate) and resource (recipe). Distinguishes from generating tools like run_recipe.
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?
Provides guidance on when to use recipe_path vs recipe_text. Lacks explicit exclusions or comparisons to siblings like analyze_recipe, but context is 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. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
analyze_recipe - First observed
generate_mapping - First observed
get_example - First observed
get_schema - First observed
iterative_recipe_gen - First observed
list_capabilities - First observed
list_examples - First observed
run_recipe - First observed
search_docs - First observed
validate_recipe
TDQS
Most tools have distinct purposes, but analyze_recipe and validate_recipe could cause some confusion—both inspect recipes but one focuses on structure, the other on syntax. Overall, the differences are clear with careful reading.
All tool names follow a consistent verb_noun snake_case pattern (e.g., get_example, list_examples, run_recipe), making them predictable and easy to understand.
10 tools is well-scoped for a recipe-based data generation server, covering analysis, validation, execution, documentation, and examples without being overwhelming.
The tool surface covers the main workflow (create, validate, run, analyze) and includes helpful extras like documentation search and examples. A minor gap is the lack of a tool to edit existing recipes, but the iterative generation tool mitigates this.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables LLMs to interact with Salesforce data through SOQL queries, SOSL searches, and various API operations including record management.14178MIT
- FlicenseNot gradedqualityDmaintenanceEnables safe execution of Python code with AI assistance and integration with Model Context Protocol tools.1-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to query, mutate, and analyze Salesforce CRM data natively through the Model Context Protocol, without requiring API glue code.163-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Databricks workspaces, running SQL queries, managing jobs, and exploring schemas via the Model Context Protocol.1GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/composable-delivery/snowfakery-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server