Forkastic logo

Forkastic connector

MCP tools, schemas, limits and auth model

Endpoint: POST /mcp on this host — Model Context Protocol over streamable HTTP (stateless, JSON responses). Machine-readable version of this page: /mcp/docs.json.

Auth: none for v1. Both tools are public and read-only; they never access a Forkastic account. Account-linked tools (meal plan, food log, etc.) will arrive later behind OAuth 2.1 with PKCE, following the MCP authorization spec.

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.

Limits

New requests per network (IP) per hour10
Connector-wide AI calls per day (UTC)50
HTTP requests to /mcp per network per minute60

Cached results don't count. When a limit is hit, the tool returns a plain error message saying when to retry.

Accepted links for rebuildRecipeFromLink: youtube.com, youtu.be, tiktok.com, instagram.com, x.com, twitter.com, facebook.com (https, public posts). Everything else is refused before any fetch.

rebuildRecipeFromLink No account

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.

Input schema
{
  "$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
}
Output schema
{
  "$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
}

searchRecipes No account

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.

Input schema
{
  "$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
}
Output schema
{
  "$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
}

Support: support@forkastapp.io · Privacy · Terms · About Forkastic