{
  "name": "Forkastic",
  "endpoint": "/mcp",
  "transport": "streamable-http (stateless; JSON responses)",
  "protocol": "Model Context Protocol",
  "server": {
    "name": "forkastic",
    "title": "Forkastic",
    "version": "1.0.0"
  },
  "auth": {
    "v1": "none — both tools are public and need no account",
    "planned": "Account-linked tools will use OAuth 2.1 with PKCE, per the MCP authorization spec. Not available yet."
  },
  "limits": {
    "per_network_new_requests_per_hour": 10,
    "connector_ai_calls_per_day": 50,
    "http_requests_per_minute_per_network": 60,
    "note": "Cached results do not count toward limits. When a limit is reached the tool returns an error message saying when to retry."
  },
  "accepted_link_hosts": [
    "youtube.com",
    "youtu.be",
    "tiktok.com",
    "instagram.com",
    "x.com",
    "twitter.com",
    "facebook.com"
  ],
  "estimates": "Nutrition values are estimates per serving, calculated from a reconstructed or published recipe. They are not lab analysis and not medical or dietary advice. Check ingredients yourself if you have allergies or a medical condition.",
  "support": "support@forkastapp.io",
  "website": "https://forkastapp.io",
  "tools": [
    {
      "name": "rebuildRecipeFromLink",
      "title": "Rebuild a recipe from a video link",
      "description": "Turns a public TikTok, Instagram, YouTube, X or Facebook recipe post into a structured recipe: title, servings, ingredients with amounts, steps, and ESTIMATED nutrition per serving (calories, protein, carbs, fat, fiber, sugar). Forkastic reads only the public page for the link you give it. Short videos often don't list amounts, so the recipe may be reconstructed from the dish name and general cooking knowledge; all nutrition numbers are estimates, not lab analysis or medical advice. No account needed. Rate-limited.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 8,
            "maxLength": 2048,
            "description": "A public recipe post link from TikTok, Instagram, YouTube, X/Twitter or Facebook (https)."
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "recipe": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "link",
                  "library",
                  "recipe_database",
                  "ai_suggestion"
                ],
                "description": "Where the recipe came from: rebuilt from the given link, Forkastic's curated library, a public recipe database, or an AI suggestion from general cooking knowledge."
              },
              "source_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "video_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "image_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "servings": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cook_time_minutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "diet_tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "ingredients": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "amount"
                  ],
                  "additionalProperties": false
                }
              },
              "steps": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "nutrition": {
                "type": "object",
                "properties": {
                  "basis": {
                    "type": "string",
                    "const": "per_serving"
                  },
                  "label": {
                    "type": "string",
                    "const": "Estimated",
                    "description": "Always \"Estimated\" — show this label next to any number."
                  },
                  "estimates_disclaimer": {
                    "type": "boolean",
                    "const": true
                  },
                  "calories": {
                    "description": "Estimated kcal per serving; null if unknown.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "protein_g": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "carbs_g": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "fat_g": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "fiber_g": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "sugar_g": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "basis",
                  "label",
                  "estimates_disclaimer",
                  "calories",
                  "protein_g",
                  "carbs_g",
                  "fat_g",
                  "fiber_g",
                  "sugar_g"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "title",
              "description",
              "origin",
              "source_url",
              "video_url",
              "image_url",
              "servings",
              "cook_time_minutes",
              "diet_tags",
              "ingredients",
              "steps",
              "nutrition"
            ],
            "additionalProperties": false
          },
          "estimates_disclaimer": {
            "type": "boolean",
            "const": true
          },
          "disclaimer": {
            "type": "string"
          },
          "cached": {
            "type": "boolean",
            "description": "True when served from Forkastic's cache (no new AI call was made)."
          }
        },
        "required": [
          "recipe",
          "estimates_disclaimer",
          "disclaimer",
          "cached"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "searchRecipes",
      "title": "Search recipes",
      "description": "Finds recipes matching a request, optionally filtered by maximum ESTIMATED calories per serving, minimum ESTIMATED protein per serving, and a diet (vegan, vegetarian, gluten-free, keto, paleo). Results come from Forkastic's curated library, a public recipe database, or AI suggestions (each result says which). Nutrition numbers are estimates, not medical or dietary advice; recipes with unknown values are left out when a numeric filter is set. Diet filtering is ingredient-based — always check labels for allergies. No account needed. Rate-limited.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "query": {
            "description": "What to cook, e.g. \"high-protein chicken dinner\".",
            "type": "string",
            "maxLength": 200
          },
          "maxCalories": {
            "description": "Only return recipes with estimated calories per serving at or below this.",
            "type": "integer",
            "minimum": 50,
            "maximum": 3000
          },
          "minProteinG": {
            "description": "Only return recipes with estimated protein per serving at or above this (grams).",
            "type": "integer",
            "minimum": 0,
            "maximum": 300
          },
          "diet": {
            "description": "Exclude recipes whose ingredients conflict with this diet.",
            "type": "string",
            "enum": [
              "vegan",
              "vegetarian",
              "gluten-free",
              "keto",
              "paleo"
            ]
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "origin": {
                  "type": "string",
                  "enum": [
                    "link",
                    "library",
                    "recipe_database",
                    "ai_suggestion"
                  ],
                  "description": "Where the recipe came from: rebuilt from the given link, Forkastic's curated library, a public recipe database, or an AI suggestion from general cooking knowledge."
                },
                "source_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "video_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "image_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "servings": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "cook_time_minutes": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "diet_tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "ingredients": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "amount": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "amount"
                    ],
                    "additionalProperties": false
                  }
                },
                "steps": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "nutrition": {
                  "type": "object",
                  "properties": {
                    "basis": {
                      "type": "string",
                      "const": "per_serving"
                    },
                    "label": {
                      "type": "string",
                      "const": "Estimated",
                      "description": "Always \"Estimated\" — show this label next to any number."
                    },
                    "estimates_disclaimer": {
                      "type": "boolean",
                      "const": true
                    },
                    "calories": {
                      "description": "Estimated kcal per serving; null if unknown.",
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "protein_g": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "carbs_g": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "fat_g": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "fiber_g": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "sugar_g": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "basis",
                    "label",
                    "estimates_disclaimer",
                    "calories",
                    "protein_g",
                    "carbs_g",
                    "fat_g",
                    "fiber_g",
                    "sugar_g"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "title",
                "description",
                "origin",
                "source_url",
                "video_url",
                "image_url",
                "servings",
                "cook_time_minutes",
                "diet_tags",
                "ingredients",
                "steps",
                "nutrition"
              ],
              "additionalProperties": false
            }
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "query_used": {
            "type": "string"
          },
          "filters": {
            "type": "object",
            "properties": {
              "maxCalories": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "minProteinG": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "diet": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "maxCalories",
              "minProteinG",
              "diet"
            ],
            "additionalProperties": false
          },
          "estimates_disclaimer": {
            "type": "boolean",
            "const": true
          },
          "disclaimer": {
            "type": "string"
          },
          "cached": {
            "type": "boolean"
          }
        },
        "required": [
          "results",
          "count",
          "query_used",
          "filters",
          "estimates_disclaimer",
          "disclaimer",
          "cached"
        ],
        "additionalProperties": false
      }
    }
  ]
}