Koskamo

Stovefront MCP

An official MCP server provided by Stovefront that allows AI agents to search for US home kitchens, retrieve live menus with pricing and dietary tags, check pickup windows, and generate order links for customers to review and submit.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Stovefront MCP logo, by StovefrontVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Stovefront
MCP endpoint (Streamable HTTP)
https://app.stovefront.com/mcp
Vendor documentation

What you can do with it

  • Find kitchens by dish, dietary tag, or pickup date
  • Read live menus with prices and availability
  • Get pickup and delivery time slots
  • Build order links with pre-selected dishes

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
stovefront 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Stovefront hosts online storefronts for independent home cooks and small food businesses in the United States. These tools read published kitchens and their menus. An order is a request: the customer submits it on the kitchen's own storefront and the cook confirms it. The tools do not place orders or take payment; build_order_link returns a storefront link with the cart filled in.

Tools

4 advertised

search_kitchens — Search kitchens
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds published Stovefront kitchens and the dishes they have open for ordering. Matches words against kitchen names, dish names and categories, and can filter by dietary tags, pickup date and the area a kitchen serves. Returns each kitchen's name, storefront link, short description, service area and up to 8 matching dishes with price, dietary tags, stock and next pickup. Sample storefronts and kitchens hidden from search are not included.

search_kitchens input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "area": {
      "type": "string",
      "maxLength": 100,
      "description": "City or neighborhood, matched against the area each kitchen says it serves"
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Kitchens per page, default 10"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to match in kitchen names, dish names and categories, e.g. \"tamales\""
    },
    "cursor": {
      "type": "string",
      "maxLength": 12,
      "description": "nextCursor from the previous page"
    },
    "dietary": {
      "type": "array",
      "items": {
        "enum": [
          "vegan",
          "vegetarian",
          "glutenFree",
          "dairyFree",
          "eggFree",
          "nutFree",
          "soyFree",
          "paleo",
          "spicy",
          "containsNuts"
        ],
        "type": "string"
      },
      "maxItems": 10,
      "description": "Every dish returned has all of these tags"
    },
    "pickup_to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of a date range, inclusive"
    },
    "pickup_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only dishes that can be picked up or delivered on this kitchen-local date"
    },
    "pickup_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of a date range (use with pickup_to, at most 31 days)"
    }
  },
  "additionalProperties": false
}
search_kitchens output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "results",
    "nextCursor",
    "currency",
    "orderModel",
    "orderModelNote"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "kitchen",
          "orderableNow",
          "orderableDishCount",
          "matchingDishCount",
          "matchingDishes"
        ],
        "properties": {
          "kitchen": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "url",
              "description",
              "area",
              "timezone"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "The kitchen's own storefront"
              },
              "area": {
                "type": "object",
                "required": [
                  "city",
                  "region",
                  "serviceArea"
                ],
                "properties": {
                  "city": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "region": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "serviceArea": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Neighborhoods or towns the kitchen serves, as the cook wrote it"
                  }
                },
                "additionalProperties": false
              },
              "name": {
                "type": "string"
              },
              "slug": {
                "type": "string",
                "description": "Pass as `kitchen` to the other tools"
              },
              "timezone": {
                "type": "string"
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "orderableNow": {
            "type": "boolean"
          },
          "matchingDishes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "kind",
                "name",
                "category",
                "price",
                "priceCents",
                "currency",
                "dietary",
                "stock",
                "orderCutoffAt",
                "nextPickup",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Pass as dish_id to build_order_link"
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Link to this dish on the kitchen's storefront"
                },
                "kind": {
                  "enum": [
                    "dish",
                    "package"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "price": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "US dollars"
                },
                "stock": {
                  "type": "object",
                  "required": [
                    "left",
                    "low"
                  ],
                  "properties": {
                    "low": {
                      "type": "boolean",
                      "description": "True when 10 or fewer are left"
                    },
                    "left": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": -9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Units left; null when the cook does not show a count or sells without a limit"
                    }
                  },
                  "additionalProperties": false
                },
                "dietary": {
                  "type": "array",
                  "items": {
                    "enum": [
                      "vegan",
                      "vegetarian",
                      "glutenFree",
                      "dairyFree",
                      "eggFree",
                      "nutFree",
                      "soyFree",
                      "paleo",
                      "spicy",
                      "containsNuts"
                    ],
                    "type": "string"
                  }
                },
                "category": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "currency": {
                  "type": "string",
                  "const": "USD"
                },
                "nextPickup": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "slotId",
                        "method",
                        "date",
                        "startAt",
                        "endAt",
                        "orderCutoffAt",
                        "place",
                        "deliveryFeeCents",
                        "minimumOrderCents"
                      ],
                      "properties": {
                        "date": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Kitchen-local date, YYYY-MM-DD"
                        },
                        "endAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "place": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Pickup place name; never a street address"
                        },
                        "method": {
                          "enum": [
                            "pickup",
                            "delivery"
                          ],
                          "type": "string"
                        },
                        "slotId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Scheduled time id (scheduled-slot kitchens); null for fixed weekly pickup"
                        },
                        "startAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "RFC 3339 with the kitchen's UTC offset"
                        },
                        "orderCutoffAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Last moment to order for this time"
                        },
                        "deliveryFeeCents": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "maximum": 9007199254740991,
                              "minimum": -9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "minimumOrderCents": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "maximum": 9007199254740991,
                              "minimum": -9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "priceCents": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": -9007199254740991
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "orderCutoffAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "matchingDishCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "orderableDishCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          }
        },
        "additionalProperties": false
      }
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass as cursor for the next page; null when there are no more"
    },
    "orderModel": {
      "type": "string",
      "const": "request_then_confirm"
    },
    "orderModelNote": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
search_kitchens annotations
{
  "title": "Search kitchens",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_menu — Get a kitchen's menu
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns one kitchen's menu: the dishes and meal packages that can be ordered now, with price, dietary tags, allergen notes, stock, order cutoff, next pickup or delivery time, quantity rules and any required options. Also returns the payment methods the kitchen accepts and its order model (orders are requests the cook confirms).

get_menu input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "kitchen"
  ],
  "properties": {
    "week": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only this menu week (its Monday, YYYY-MM-DD, as listed in weeks)"
    },
    "kitchen": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "description": "Kitchen slug or storefront link, e.g. \"stephanie-s-bite-of-heaven\" or \"https://app.stovefront.com/<slug>\""
    },
    "include_unavailable": {
      "type": "boolean",
      "description": "Also list sold-out and closed offers, with the reason. Default false"
    }
  },
  "additionalProperties": false
}
get_menu output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "kitchen",
    "orderModel",
    "orderModelNote",
    "currency",
    "fulfillmentModel",
    "paymentMethods",
    "weeks",
    "offerCount",
    "offers",
    "notes"
  ],
  "properties": {
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "weeks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "weekId",
          "label",
          "orderableOfferCount"
        ],
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "weekId": {
            "type": "string"
          },
          "orderableOfferCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          }
        },
        "additionalProperties": false
      },
      "description": "Menu weeks with something open for ordering; pass one as week to narrow the list"
    },
    "offers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "name",
          "category",
          "price",
          "priceCents",
          "currency",
          "dietary",
          "stock",
          "orderCutoffAt",
          "nextPickup",
          "url",
          "description",
          "weekId",
          "allergens",
          "servings",
          "orderable",
          "unavailableReason",
          "quantity",
          "requiredChoices",
          "includes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass as dish_id to build_order_link"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Link to this dish on the kitchen's storefront"
          },
          "kind": {
            "enum": [
              "dish",
              "package"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "price": {
            "type": [
              "number",
              "null"
            ],
            "description": "US dollars"
          },
          "stock": {
            "type": "object",
            "required": [
              "left",
              "low"
            ],
            "properties": {
              "low": {
                "type": "boolean",
                "description": "True when 10 or fewer are left"
              },
              "left": {
                "anyOf": [
                  {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Units left; null when the cook does not show a count or sells without a limit"
              }
            },
            "additionalProperties": false
          },
          "weekId": {
            "type": [
              "string",
              "null"
            ]
          },
          "dietary": {
            "type": "array",
            "items": {
              "enum": [
                "vegan",
                "vegetarian",
                "glutenFree",
                "dairyFree",
                "eggFree",
                "nutFree",
                "soyFree",
                "paleo",
                "spicy",
                "containsNuts"
              ],
              "type": "string"
            }
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "type": "string",
            "const": "USD"
          },
          "includes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                }
              },
              "additionalProperties": false
            },
            "description": "Dishes in a meal package"
          },
          "quantity": {
            "type": "object",
            "required": [
              "minimum",
              "increment",
              "maximumPerCustomer"
            ],
            "properties": {
              "minimum": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              "increment": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              "maximumPerCustomer": {
                "anyOf": [
                  {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "servings": {
            "type": [
              "string",
              "null"
            ]
          },
          "allergens": {
            "type": "object",
            "required": [
              "contains",
              "mayContain"
            ],
            "properties": {
              "contains": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "mayContain": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "orderable": {
            "type": "boolean"
          },
          "nextPickup": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "slotId",
                  "method",
                  "date",
                  "startAt",
                  "endAt",
                  "orderCutoffAt",
                  "place",
                  "deliveryFeeCents",
                  "minimumOrderCents"
                ],
                "properties": {
                  "date": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Kitchen-local date, YYYY-MM-DD"
                  },
                  "endAt": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "place": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Pickup place name; never a street address"
                  },
                  "method": {
                    "enum": [
                      "pickup",
                      "delivery"
                    ],
                    "type": "string"
                  },
                  "slotId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Scheduled time id (scheduled-slot kitchens); null for fixed weekly pickup"
                  },
                  "startAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "RFC 3339 with the kitchen's UTC offset"
                  },
                  "orderCutoffAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Last moment to order for this time"
                  },
                  "deliveryFeeCents": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": -9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "minimumOrderCents": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": -9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "priceCents": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "orderCutoffAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredChoices": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Option groups the customer must choose on the storefront"
          },
          "unavailableReason": {
            "anyOf": [
              {
                "enum": [
                  "menu_closed",
                  "not_offered",
                  "sold_out",
                  "past_cutoff",
                  "no_pickup_time"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "kitchen": {
      "type": "object",
      "required": [
        "slug",
        "name",
        "url",
        "description",
        "area",
        "timezone",
        "sample"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The kitchen's own storefront"
        },
        "area": {
          "type": "object",
          "required": [
            "city",
            "region",
            "serviceArea"
          ],
          "properties": {
            "city": {
              "type": [
                "string",
                "null"
              ]
            },
            "region": {
              "type": [
                "string",
                "null"
              ]
            },
            "serviceArea": {
              "type": [
                "string",
                "null"
              ],
              "description": "Neighborhoods or towns the kitchen serves, as the cook wrote it"
            }
          },
          "additionalProperties": false
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string",
          "description": "Pass as `kitchen` to the other tools"
        },
        "sample": {
          "type": "boolean",
          "description": "True for a sample storefront that takes no orders"
        },
        "timezone": {
          "type": "string"
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "offerCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Offers matching the request; offers may list fewer"
    },
    "orderModel": {
      "type": "string",
      "const": "request_then_confirm"
    },
    "orderModelNote": {
      "type": "string"
    },
    "paymentMethods": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "fulfillmentModel": {
      "enum": [
        "scheduled_slots",
        "weekly_pickup"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_menu annotations
{
  "title": "Get a kitchen's menu",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_pickup_windows — Get pickup and delivery times
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns a kitchen's upcoming pickup and delivery times that are open for ordering, each with its order cutoff and the pickup place name. Kitchens with scheduled times list each slot; kitchens with weekly pickup list each pickup time and the dishes it serves. Street addresses are never included.

get_pickup_windows input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "kitchen"
  ],
  "properties": {
    "kitchen": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "description": "Kitchen slug or storefront link, e.g. \"stephanie-s-bite-of-heaven\" or \"https://app.stovefront.com/<slug>\""
    }
  },
  "additionalProperties": false
}
get_pickup_windows output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "kitchen",
    "model",
    "windows",
    "delivery",
    "notes"
  ],
  "properties": {
    "model": {
      "enum": [
        "scheduled_slots",
        "weekly_pickup"
      ],
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "kitchen": {
      "type": "object",
      "required": [
        "slug",
        "name",
        "url",
        "timezone",
        "sample"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "sample": {
          "type": "boolean"
        },
        "timezone": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "windows": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slotId",
          "method",
          "date",
          "startAt",
          "endAt",
          "orderCutoffAt",
          "place",
          "deliveryFeeCents",
          "minimumOrderCents",
          "dishIds"
        ],
        "properties": {
          "date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Kitchen-local date, YYYY-MM-DD"
          },
          "endAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "place": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pickup place name; never a street address"
          },
          "method": {
            "enum": [
              "pickup",
              "delivery"
            ],
            "type": "string"
          },
          "slotId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scheduled time id (scheduled-slot kitchens); null for fixed weekly pickup"
          },
          "dishIds": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "startAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "RFC 3339 with the kitchen's UTC offset"
          },
          "orderCutoffAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last moment to order for this time"
          },
          "deliveryFeeCents": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "minimumOrderCents": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "delivery": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "offered",
            "feeCents",
            "dates"
          ],
          "properties": {
            "dates": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "offered": {
              "type": "boolean"
            },
            "feeCents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Weekly-pickup kitchens: whether the cook delivers. Scheduled-slot kitchens list delivery times in windows."
    }
  },
  "additionalProperties": false
}
get_pickup_windows annotations
{
  "title": "Get pickup and delivery times",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_order_link — Build an order link
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks that the given dishes can be ordered now in those quantities (stock, cutoff, quantity rules, one shared pickup time) and returns a link to the kitchen's own storefront with them already in the cart. It does not place an order or take payment: the customer reviews and submits the order request on the storefront, and the cook confirms it.

build_order_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "kitchen",
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "dish_id",
          "quantity"
        ],
        "properties": {
          "dish_id": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "description": "An offer id from get_menu or search_kitchens"
          },
          "quantity": {
            "type": "integer",
            "maximum": 99,
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 20,
      "minItems": 1
    },
    "kitchen": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "description": "Kitchen slug or storefront link, e.g. \"stephanie-s-bite-of-heaven\" or \"https://app.stovefront.com/<slug>\""
    }
  },
  "additionalProperties": false
}
build_order_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "url",
    "kitchen",
    "items",
    "estimatedSubtotalCents",
    "currency",
    "pickup",
    "orderModel",
    "instruction",
    "notes"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The kitchen's storefront with these items in the cart"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "dish_id",
          "kind",
          "name",
          "quantity",
          "unitPriceCents",
          "lineTotalCents"
        ],
        "properties": {
          "kind": {
            "enum": [
              "dish",
              "package"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "dish_id": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "lineTotalCents": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "unitPriceCents": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pickup": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "slotId",
            "method",
            "date",
            "startAt",
            "endAt",
            "orderCutoffAt",
            "place",
            "deliveryFeeCents",
            "minimumOrderCents"
          ],
          "properties": {
            "date": {
              "type": [
                "string",
                "null"
              ],
              "description": "Kitchen-local date, YYYY-MM-DD"
            },
            "endAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "place": {
              "type": [
                "string",
                "null"
              ],
              "description": "Pickup place name; never a street address"
            },
            "method": {
              "enum": [
                "pickup",
                "delivery"
              ],
              "type": "string"
            },
            "slotId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Scheduled time id (scheduled-slot kitchens); null for fixed weekly pickup"
            },
            "startAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "RFC 3339 with the kitchen's UTC offset"
            },
            "orderCutoffAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "Last moment to order for this time"
            },
            "deliveryFeeCents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "minimumOrderCents": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "kitchen": {
      "type": "object",
      "required": [
        "slug",
        "name",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "orderModel": {
      "type": "string",
      "const": "request_then_confirm"
    },
    "instruction": {
      "type": "string"
    },
    "estimatedSubtotalCents": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "Before any delivery fee"
    }
  },
  "additionalProperties": false
}
build_order_link annotations
{
  "title": "Build an order link",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
566 ms
95th percentile latency
566 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 566 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http stovefront-mcp https://app.stovefront.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add stovefront-mcp --url https://app.stovefront.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable stovefront-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "stovefront-mcp": {
      "url": "https://app.stovefront.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "stovefront-mcp": {
      "type": "streamableHttp",
      "url": "https://app.stovefront.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start stovefront-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "stovefront-mcp": {
      "type": "http",
      "url": "https://app.stovefront.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http stovefront-mcp https://app.stovefront.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "stovefront-mcp": {
      "url": "https://app.stovefront.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "stovefront-mcp": {
      "serverUrl": "https://app.stovefront.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Stovefront MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Stovefront MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing