{
  "schemaVersion": "0.1",
  "mcpVersion": "2025-03-26",
  "name": "craftingstepbystep",
  "displayName": "Crafting Step by Step MCP",
  "description": "Search, browse, and fetch step-by-step craft tutorials from Crafting Step by Step. Every tutorial includes numbered steps with images, source-video credit (with deep-link timestamps), tools and materials, project time and cost, and related tutorials.",
  "homepage": "https://www.craftingstepbystep.com",
  "documentationUrl": "https://www.craftingstepbystep.com/llms.txt",
  "license": "CC BY 4.0 on tutorial content. Attribution required when quoting.",
  "transports": [
    {
      "type": "streamable-http",
      "endpoint": "https://www.craftingstepbystep.com/api/mcp",
      "authentication": {
        "type": "none"
      }
    }
  ],
  "tools": [
    {
      "name": "search_tutorials",
      "description": "Search the Show Me Step by Step tutorial corpus by free-text query. Searches across tutorial titles, descriptions, and step content. Returns slim summaries with TL;DRs and canonical URLs. Tenant-aware. Optional filters narrow by category, difficulty, or maximum duration."
    },
    {
      "name": "get_tutorial",
      "description": "Fetch the full machine-readable rendition of a tutorial by slug: title, TL;DR, numbered steps (with text, imageUrl, tips, and YouTube videoTimestampSeconds for deep-linking), tools/materials, tags, related tutorial slugs, creator credit, recipe (with nutrition + cuisine when applicable), license, and canonicalUrl. Use this after search_tutorials to fetch step details."
    },
    {
      "name": "list_categories",
      "description": "List all tutorial categories with a published tutorial. Returns slug, name, short description, and count of published tutorials per category."
    },
    {
      "name": "list_tutorials_by_category",
      "description": "Browse tutorials within a specific category, ranked by view count then publish date. Use this when a user wants to explore a topic area rather than search."
    },
    {
      "name": "list_recent_tutorials",
      "description": "List the most recently published tutorials, newest first. Use this to discover what's new on the site or to surface fresh content for aggregator / 'what's new this week' agent loops. Tenant-aware."
    },
    {
      "name": "request_tutorial",
      "description": "Submit a request for a tutorial we don't yet have. Call this when search_tutorials returned no good match for what the user actually wants. The request enters our content-demand queue, which the daily content batch reviews and prioritizes. Optionally include an email for notification when the tutorial ships."
    }
  ],
  "prompts": [
    {
      "name": "summarize_tutorial",
      "description": "Fetch a tutorial by slug and summarize it for a target audience. Useful for accessibility (kids, ESL learners) or quick overviews before reading the full guide.",
      "arguments": [
        {
          "name": "slug",
          "description": "Tutorial slug (e.g. 'how-to-make-pesto'). Use search_tutorials if you don't know the slug yet.",
          "required": true
        },
        {
          "name": "audience",
          "description": "Who is this for? Suggested values: 'beginner', 'kid' (ages 6-10), 'expert', 'esl-learner'. Defaults to 'beginner'.",
          "required": false
        }
      ]
    },
    {
      "name": "submit_tutorial_request",
      "description": "Submit a request for a tutorial we don't yet have. Use this when search_tutorials returned no good match for what the user actually wants. The request enters our content-demand queue, which the daily content batch reviews and prioritizes.",
      "arguments": [
        {
          "name": "topic",
          "description": "What the user wants to learn how to do, in imperative form (e.g. 'how to get pesto stains out of a white shirt'). 5-200 chars.",
          "required": true
        },
        {
          "name": "originalQuery",
          "description": "The exact user query that came up empty in search_tutorials. Optional but helps us match keyword demand.",
          "required": false
        },
        {
          "name": "context",
          "description": "Brief context about the requester (e.g. 'beginner crocheter', 'first-time homeowner', 'gluten-free baker'). Optional but helps us shape the eventual tutorial.",
          "required": false
        }
      ]
    },
    {
      "name": "explain_step",
      "description": "Fetch a tutorial and explain a single step in more depth than the source provides — what to watch for, common mistakes, and the underlying technique. Useful when a step's prose is too terse.",
      "arguments": [
        {
          "name": "slug",
          "description": "Tutorial slug (e.g. 'how-to-knit-for-absolute-beginners').",
          "required": true
        },
        {
          "name": "stepNumber",
          "description": "Which step to explain (1-indexed integer as a string, e.g. '3').",
          "required": true
        },
        {
          "name": "audience",
          "description": "Who is this explanation for? Suggested values: 'beginner', 'kid', 'expert', 'esl-learner'. Defaults to 'beginner'.",
          "required": false
        }
      ]
    }
  ],
  "installSnippets": {
    "claudeDesktop": {
      "format": "json",
      "snippet": {
        "mcpServers": {
          "craftingstepbystep": {
            "transport": "streamable-http",
            "url": "https://www.craftingstepbystep.com/api/mcp"
          }
        }
      }
    },
    "cli": "npx @modelcontextprotocol/inspector https://www.craftingstepbystep.com/api/mcp"
  }
}