For developers and AI assistants
Farmstand & Food Truck MCP Connector
The Western Slope Farmstands and Western Slope Food Trucks directories are available to AI assistants through a free, public Model Context Protocol (MCP) server. Connect Muse, Claude, or any MCP client and it can find farmstands, farmers markets and food trucks across Grand Junction, Fruita, Palisade, Montrose, Delta and nearby towns, check who is open right now, and help someone request a food truck for an event.
https://www.westernslope.digital/api/mcp/directory/- Transport: Streamable HTTP, stateless, JSON responses (no SSE stream or sessions)
- Authentication: none — the data is public
- Protocol versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05
- Cost: free
Connect
Muse Code
Add the server to ~/.config/muse/settings.json:
{
"mcp_servers": {
"westernslope-directory": {
"transport": "streamable_http",
"url": "https://www.westernslope.digital/api/mcp/directory/",
"mode": "optional"
}
}
}Setting mode to optional means Muse Code keeps working if the server is unreachable.
Claude Code
claude mcp add --transport http westernslope-directory https://www.westernslope.digital/api/mcp/directory/Other MCP clients
Point any client that supports remote (Streamable HTTP) MCP servers at the endpoint above. No headers or keys are needed.
Tools
search_farmstandsread-only
Find farmstands and farmers markets on the Western Slope. Filter by product or keyword (e.g. "eggs", "peaches", "honey"), town, and whether they are open right now.
| Argument | Type | Notes |
|---|---|---|
query | string | Product or keyword, matched against name, category, tags and description. |
type | "farmstand", "farmers_market" | |
near | "Grand Junction", "Fruita", "Palisade", "Montrose", "Delta", "Rifle", "Glenwood Springs", "Clifton", "Olathe", "Cedaredge", "Hotchkiss", "Paonia" | Only listings near this town, sorted by distance. |
radius_miles | number | Radius around "near" (default 15). |
open_now | boolean | Only listings confirmed open right now. |
limit | integer | Max results (default 10). |
get_farmstandread-only
Full details for one farmstand or farmers market: schedule, this week's menu, payment methods, parking, links, and whether it is open now.
| Argument | Type | Notes |
|---|---|---|
id_or_slug required | string | The listing id or slug from a search result. |
search_food_trucksread-only
Find food trucks on the Western Slope by cuisine, home town, catering, or keyword, with today's schedule and whether each is open now.
| Argument | Type | Notes |
|---|---|---|
query | string | Keyword matched against name, cuisine and description. |
cuisine | "Tacos / Mexican", "BBQ / Smoked Meats", "Burgers / American", "Asian / Fusion", "Pizza", "Desserts / Ice Cream", "Breakfast / Brunch", "Coffee / Beverages", "Sandwiches / Wraps", "Seafood", "Vegan / Vegetarian", "Other" | |
city | "Grand Junction", "Fruita", "Palisade", "Montrose", "Delta", "Rifle", "Clifton", "Cedaredge" | The truck's home town. |
does_catering | boolean | Only trucks that cater private events. |
open_now | boolean | Only trucks serving right now. |
limit | integer | Max results (default 10). |
food_trucks_on_dateread-only
Which food trucks are scheduled to serve on a given date (today by default, up to 30 days ahead), with times and locations.
| Argument | Type | Notes |
|---|---|---|
date | string | YYYY-MM-DD in Mountain Time. Defaults to today. |
cuisine | "Tacos / Mexican", "BBQ / Smoked Meats", "Burgers / American", "Asian / Fusion", "Pizza", "Desserts / Ice Cream", "Breakfast / Brunch", "Coffee / Beverages", "Sandwiches / Wraps", "Seafood", "Vegan / Vegetarian", "Other" | |
city | "Grand Junction", "Fruita", "Palisade", "Montrose", "Delta", "Rifle", "Clifton", "Cedaredge" | Only trucks serving in this town that day. |
get_food_truckread-only
Full details for one food truck: description, menu link, specials, rating, and where it will be for the next 7 days.
| Argument | Type | Notes |
|---|---|---|
id_or_slug required | string | The listing id or slug from a search result. |
draft_food_truck_event_requestcreates a draft
Prepare a request for local food trucks to serve at an event (wedding, corporate, birthday, festival). Returns a pre-filled link: the host must open it, review, and submit it themselves before any truck is contacted. Collect what you can from the host; anything missing they can fill in on the page.
| Argument | Type | Notes |
|---|---|---|
event_type required | "wedding", "corporate", "birthday", "festival", "other" | |
is_public_event | boolean | true if open to the public (e.g. a festival), false for a private party. |
event_date required | string | YYYY-MM-DD; must be after today. |
start_time | one of 36 values | e.g. "5:30 PM" (half-hour steps). |
end_time | one of 36 values | |
location_address required | string | Street address or venue and town. |
estimated_guests | integer | |
trucks_needed | "1", "2-3", "4+", "not_sure" | |
power_available | boolean | |
water_available | boolean | |
indoor_outdoor | "outdoor", "indoor", "both" | |
payment_type | "paid", "revenue_share", "undecided", "truck_fee" | paid = host pays the truck; revenue_share = no fee, guests buy their own food; truck_fee = the truck pays the host a fee; undecided. |
budget_range | string | |
cuisine_preference | list of: "Tacos / Mexican", "BBQ / Smoked Meats", "Burgers / American", "Asian / Fusion", "Pizza", "Desserts / Ice Cream", "Breakfast / Brunch", "Coffee / Beverages", "Sandwiches / Wraps", "Seafood", "Vegan / Vegetarian", "Other" | |
special_requirements | string | At least 20 characters if given. |
host_name | string | |
host_email | string | |
host_phone | string |
Example
curl -X POST https://www.westernslope.digital/api/mcp/directory/ \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_farmstands",
"arguments":{"query":"eggs","near":"Palisade","open_now":true}}}'The result arrives as both structuredContent and a JSON text block, trimmed here:
{
"as_of": "2026-09-19 Saturday, Mountain Time",
"total_matches": 7,
"results": [{
"name": "Stanley Farm Stand",
"type": "farmstand",
"distance_miles": 0.9,
"open_now": { "open": true, "reason": "Self-serve honor stand" },
"info_last_confirmed": "Confirmed 3 days ago",
"url": "https://www.westernslope.digital/farmstands/stanley-farm-stand/"
}]
}How to read the results
- Mountain Time. All dates and times, including "open now", are evaluated in America/Denver.
open_nowcan be"unknown". Stands that are by appointment only, or that haven't posted structured hours, are reported as unknown rather than closed. Please pass that on rather than telling someone the stand is closed.- Freshness. Listings are managed by the businesses themselves.
info_last_confirmedsays when the owner last confirmed their hours or stock; every result includes the listingurlso people can check before driving out. - Approximate locations. Stands whose owners hide their exact address return coordinates rounded to about 1 km, with
location_is_approximate: true. - Private bookings. A truck booked for a private event today is returned as
unavailable, without its location. - Future dates.
food_trucks_on_datelooks up to 30 days ahead using posted schedules; live check-ins and event bookings are added on the day.
Event requests
draft_food_truck_event_request never contacts a food truck by itself. It saves the event details as a draft for 48 hours and returns a link to our request-a-truck form, pre-filled. The host opens the link, reviews the details, adds anything missing (the response lists these in still_needed), completes a bot check and submits. Only then are participating trucks notified.
Limits and errors
- 60 requests per minute per IP address; over that, the endpoint returns HTTP 429 with
Retry-After: 60. - 10 event-request drafts per hour per IP address.
- Invalid arguments and unknown listings come back as tool results with
isError: trueand a message the model can act on. GETreturns 405: this server does not open a server-to-client event stream.
Data and privacy
The connector serves only what the public directory pages already show; owners' contact details and account data are never returned. See our Privacy Policy for how event-request drafts and rate-limit data are handled, and our Terms of Service.
Support
Questions, bugs or a listing that looks wrong? Email info@westernslope.digital or use our contact page. Building something similar for your own business? That's what we do.
