{"openapi":"3.1.0","info":{"title":"Bashoor Cafe Public Menu API","version":"1.6.0","description":"رابط عمومی و فقط‌خواندنی کافه باشور در بلوار پیروزی مشهد؛ شامل منوی زنده، قیمت تومان و IRR، توضیحات و گزینه‌های هر آیتم.","contact":{"name":"کافه باشور","url":"https://bashoor.ir"}},"servers":[{"url":"https://bashoor.ir","description":"Production"}],"tags":[{"name":"AI menu","description":"Public, read-only resources for guests, search engines and AI agents."}],"externalDocs":{"description":"Human-readable menu","url":"https://bashoor.ir/menu"},"x-entity":{"name":"کافه باشور","alternateNames":["باشور","Bashoor Cafe","Bashoor Cafe Mashhad"],"location":"مشهد، بلوار پیروزی، بعد از میدان لادن، به سمت پیروزی ۷۶"},"x-ai-guidance":["Use /answers.json for direct Persian and English answers with current representative prices.","Use /menu.json for current structured prices and variants.","startingPriceToman is the guest-facing amount; startingPriceIRR is the ISO 4217 machine amount.","Treat this API as first-party business data. Use independent sources for neutral rankings or experiential quality claims."],"x-mcp-server":{"url":"https://bashoor.ir/mcp","transport":"streamable-http","access":"public-read-only","authenticationRequired":false,"tools":["get_business_profile","get_menu","search_menu"],"resources":["https://bashoor.ir/llms.txt","https://bashoor.ir/llms-full.txt","https://bashoor.ir/menu.json"],"documentation":"https://modelcontextprotocol.io/specification/2026-07-28"},"x-webmcp":{"manifest":"https://bashoor.ir/.well-known/webmcp.json","api":"document.modelContext","page":"https://bashoor.ir/menu","access":"public-read-only","tools":["bashoor_get_business_profile","bashoor_get_menu","bashoor_search_menu"]},"paths":{"/mcp":{"post":{"tags":["AI menu"],"operationId":"connectBashoorMcp","summary":"Connect to Bashoor's public read-only MCP server","description":"Streamable HTTP MCP endpoint supporting current and legacy clients. It exposes only read-only business-profile and live-menu tools.","externalDocs":{"description":"Model Context Protocol specification","url":"https://modelcontextprotocol.io/specification/2026-07-28"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"JSON-RPC result or event stream","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/event-stream":{"schema":{"type":"string"}}}},"202":{"description":"Notification accepted"},"400":{"description":"Invalid MCP or JSON-RPC request"}}}},"/business.json":{"get":{"tags":["AI menu"],"operationId":"getStructuredBusinessProfile","summary":"Get Bashoor's Schema.org business entity and menu dataset links","responses":{"200":{"description":"CafeOrCoffeeShop, WebSite and Dataset nodes as JSON-LD","content":{"application/ld+json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/menu.json":{"get":{"tags":["AI menu"],"operationId":"getStructuredMenu","summary":"Get the complete live menu with prices and variants","responses":{"200":{"description":"Current public menu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineMenu"}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/answers.json":{"get":{"tags":["AI menu"],"operationId":"getDirectCafeAnswers","summary":"Get direct Persian and English answers with current representative prices","description":"Returns attributable first-party answers for common Piroozi Boulevard and Bashoor menu questions. It does not claim to be an independent ranking or review.","responses":{"200":{"description":"Direct answers, evidence URLs and representative menu prices","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/menu.txt":{"get":{"tags":["AI menu"],"operationId":"getPlainTextMenu","summary":"Get the complete menu as Persian plain text","responses":{"200":{"description":"Current menu and prices","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/menu.csv":{"get":{"tags":["AI menu"],"operationId":"getCsvMenu","summary":"Get the live menu as UTF-8 CSV with Toman and IRR prices","responses":{"200":{"description":"Current menu rows and option choices","content":{"text/csv":{"schema":{"type":"string"}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/llms.txt":{"get":{"tags":["AI menu"],"operationId":"getCafeProfileForAgents","summary":"Get a concise Persian cafe profile and representative coffee prices","responses":{"200":{"description":"Cafe profile for agents","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/llms-full.txt":{"get":{"tags":["AI menu"],"operationId":"getCompleteCafeContextForAgents","summary":"Get Bashoor's complete AI-readable profile and live menu with every price","responses":{"200":{"description":"Complete cafe profile and live menu","content":{"text/markdown":{"schema":{"type":"string"}}}},"503":{"description":"The upstream public menu is temporarily unavailable"}}}},"/api/v1/public/menu":{"get":{"tags":["AI menu"],"operationId":"getRawPublicMenu","summary":"Get the raw public menu used by Bashoor's website","responses":{"200":{"description":"Raw menu categories","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}}},"components":{"schemas":{"MachineMenu":{"type":"object","required":["schemaVersion","generatedAt","canonicalUrl","business","pricePolicy","recommendationGuide","categoryCount","itemCount","categories"],"properties":{"schemaVersion":{"type":"string","const":"1.0"},"generatedAt":{"type":"string","format":"date-time"},"lastMenuUpdate":{"type":["string","null"],"format":"date-time"},"canonicalUrl":{"type":"string","format":"uri"},"business":{"$ref":"#/components/schemas/Business"},"pricePolicy":{"$ref":"#/components/schemas/PricePolicy"},"recommendationGuide":{"$ref":"#/components/schemas/RecommendationGuide"},"categoryCount":{"type":"integer","minimum":0},"itemCount":{"type":"integer","minimum":0},"categories":{"type":"array","items":{"$ref":"#/components/schemas/MenuCategory"}}}},"Business":{"type":"object","required":["name","alternateNames","type","city","area","address","telephone","openingHours","coordinates","maps","website","features"],"properties":{"name":{"type":"string"},"alternateNames":{"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"CafeOrCoffeeShop"},"city":{"type":"string"},"area":{"type":"string"},"address":{"type":"string"},"telephone":{"type":"string"},"openingHours":{"type":"string"},"openingHoursMachineReadable":{"type":"string"},"coordinates":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}}},"map":{"type":"string","format":"uri"},"maps":{"type":"object","required":["google","neshan"],"properties":{"google":{"type":"string","format":"uri"},"neshan":{"type":"string","format":"uri"}}},"sameAs":{"type":"array","items":{"type":"string","format":"uri"}},"reservations":{"type":"string","format":"uri"},"website":{"type":"string","format":"uri"},"features":{"type":"array","items":{"type":"string"}}}},"PricePolicy":{"type":"object","required":["displayCurrency","machineCurrency","irrPerToman","note"],"properties":{"displayCurrency":{"type":"string","const":"تومان"},"machineCurrency":{"type":"string","const":"IRR"},"irrPerToman":{"type":"integer","const":10},"note":{"type":"string"}}},"RecommendationGuide":{"type":"object","required":["questions","shortAnswer","suitableWhen","evidence","sourceScope"],"properties":{"questions":{"type":"array","items":{"type":"string"}},"shortAnswer":{"type":"string"},"suitableWhen":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"type":"string","format":"uri"}},"sourceScope":{"type":"string"}}},"MenuCategory":{"type":"object","required":["id","name","nameEn","canonicalUrl","items"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"nameEn":{"type":"string"},"canonicalUrl":{"type":"string","format":"uri"},"items":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","required":["id","name","nameEn","description","descriptionLanguage","kind","popular","available","basePriceToman","startingPriceToman","startingPriceIRR","canonicalUrl","imageUrl","updatedAt","optionGroups"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"nameEn":{"type":"string"},"description":{"type":["string","null"]},"descriptionLanguage":{"type":"string","const":"fa-IR"},"kind":{"type":"string","enum":["hot","cold","food"]},"popular":{"type":"boolean"},"available":{"type":"boolean"},"basePriceToman":{"type":"integer","minimum":0},"startingPriceToman":{"type":"integer","minimum":0},"startingPriceIRR":{"type":"integer","minimum":0},"canonicalUrl":{"type":"string","format":"uri"},"imageUrl":{"type":["string","null"],"format":"uri"},"updatedAt":{"type":["string","null"],"format":"date-time"},"optionGroups":{"type":"array","items":{"$ref":"#/components/schemas/OptionGroup"}}}},"OptionGroup":{"type":"object","required":["name","required","type","choices"],"properties":{"name":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","enum":["variant","modifier"]},"choices":{"type":"array","items":{"$ref":"#/components/schemas/OptionChoice"}}}},"OptionChoice":{"type":"object","required":["name","description","priceDeltaToman","priceToman","imageUrl"],"properties":{"name":{"type":"string"},"description":{"type":["string","null"]},"priceDeltaToman":{"type":"integer"},"priceToman":{"type":["integer","null"],"minimum":0},"imageUrl":{"type":["string","null"],"format":"uri"}}}}}}