Insights MCP server
Connect ChatGPT, Claude, Copilot, or Gemini to your Fooodo Insights tenant via the remote Model Context Protocol server.
Fooodo Insights ships a per-tenant remote Model Context Protocol server. It exposes your organisation's operational analytics and a small set of bounded write actions to any AI client that speaks MCP — without API keys, custom integrations, or copy-paste.
Who can use it? Any Fooodo Insights customer with
admin,analyst, orvieweraccess to a tenant that has themcp_enabledfeature flag turned on. The flag is dark by default for every org; contact support@fooodo.com to request enablement and receive your tenant's MCP URL.
Two MCP servers, one product family. This page covers the Insights MCP server, which exposes per-tenant operational analytics over OAuth 2.1. A separate marketing-handbook MCP server runs at
/api/mcponfooodo.comand is public — agents use it to learn what Fooodo is and to submit lead requests. The two surfaces are deliberately separate: handbook content vs. customer data.
Why MCP
MCP is the open standard AI clients use to talk to remote data and tools — the agent's equivalent of OAuth + REST. A single MCP server can be added once and reused by ChatGPT, Claude, Copilot, Gemini, Cursor, Windsurf, Zed, and the growing list of compliant clients.
For Fooodo Insights customers this means:
- No vendor lock-in. Your analyst can ask the same question from ChatGPT today and Gemini tomorrow without re-configuring anything.
- Bounded, audited actions. Write tools (e.g. trigger data import,
acknowledge alert) require the
insights:writescope and anadminoranalystrole. Every write is recorded in the audit log withsource: "mcp". - Tenant isolation. Tools are scoped to the user's organisation at the database level; cross-tenant access is impossible.
Connect from your AI
The Insights MCP server speaks OAuth 2.1 with Dynamic Client Registration, so every client below uses the same one-click flow: paste your tenant URL, click Connect, log in with your Fooodo Insights account, approve the scopes — done.
The snippets below use <INSIGHTS_MCP_URL> as a placeholder. Replace it with
the URL Fooodo support sends you after enabling MCP for your tenant.
ChatGPT (Plus / Pro / Enterprise)
- Open Settings → Connectors → Add custom connector (Developer Mode must be enabled).
- Server URL:
<INSIGHTS_MCP_URL>. - Approve the consent page when prompted.
Claude.ai (Pro and above)
- Open Settings → Connectors → Add custom connector.
- Name:
Fooodo Insights. Server URL:<INSIGHTS_MCP_URL>. - Approve the consent page.
GitHub Copilot (VS Code 1.101+, JetBrains, Visual Studio)
Add to your workspace's .vscode/mcp.json:
{
"servers": {
"fooodo-insights": {
"type": "http",
"url": "<INSIGHTS_MCP_URL>"
}
}
}If you're on Copilot Business/Enterprise, your admin must enable the MCP servers in Copilot policy first.
Gemini CLI
Add to your Gemini CLI configuration:
{
"mcpServers": {
"fooodo-insights": {
"url": "<INSIGHTS_MCP_URL>",
"oauth": true
}
}
}Gemini Enterprise
In the Google Cloud console, register the server as a custom MCP data store:
| Field | Value |
|---|---|
| Server URL | <INSIGHTS_MCP_URL> |
| Authentication | OAuth 2.0 (Dynamic Client Registration) |
| Required scopes | insights:read, insights:write |
What the agent can do
The server exposes tools in three tiers. Clients should pick the lowest tier that answers the question — it's cheaper, faster, and deterministic.
Tier 1 — Data tools (fast, deterministic, read-only)
| Tool | Returns |
|---|---|
get_period_summary | Aggregated metrics for a date range — sales, COGS, EBIT, gross margin, top campaigns |
get_weekly_sales_data | Week-by-week sales with active campaigns and cost data |
get_channel_stats | Per-marketing-channel performance metrics — campaigns and acquisition channels, not the dine-in/delivery split (for that, use get_channel_breakdown) |
get_daily_performance | Day-by-day sales by channel and restaurant |
get_product_performance | Product/menu-item ranking by sales and quantity, with category breakdown |
get_cfo_pnl_data | P&L breakdown — revenue, COGS, labor, OpEx, EBIT — for the CFO dashboard view |
get_restaurant_performance | Per-restaurant / per-location sales breakdown for a date range, with each location's share of the chain total |
get_channel_breakdown | Sales-channel split (dine-in / delivery / Wolt / Bolt / takeaway) with € and % share — the sales-side counterpart; marketing channels live in get_channel_stats |
get_check_metrics | Average check (€, net of VAT), dishes per check, and check counts for a date range — with per-order-type and per-restaurant splits |
get_table_times | Average table-closing time (minutes) and order counts — a service-speed signal — with optional order-type and restaurant splits |
get_waiter_times | Per-waiter average table-closing times for a single restaurant (restaurant_id required) |
get_guest_feedback | Guest satisfaction — NPS survey scores (food / service / restaurant) plus the latest Google review ratings per restaurant |
get_cash_position | Current cash balance, weekly burn rate, runway, and per-entity balances |
get_goals_vs_actuals | KPI targets (average check, dishes per check) and daily sales budget vs. actual, with order-count attainment |
get_monthly_sales_plan | Forward-looking monthly sales plan — revenue and order-count budget per channel and restaurant, including future months |
get_marketing_spend | Monthly marketing spend (from the P&L) and the campaign calendar for the range |
list_restaurants | Restaurant directory (id, code, name, city) — resolves a name or code to the restaurant_id the other data tools filter on |
get_menu_sales | Year-over-year dish-sales breakdown by restaurant or city (lunch-only or general), with an optional channel filter |
Tier 2 — Specialist agents (single-domain LLM analysis)
| Tool | Returns |
|---|---|
consult_financial_analyst | Financial-only "why" analysis grounded in the period's data |
consult_marketing_strategist | Marketing-only causal-uplift and campaign-attribution analysis |
consult_market_research | Market context — seasonality, holidays, consumer-behaviour trends |
Specialist answers are computed, not improvised: multi-step arithmetic is
performed by a deterministic server-side calculator, not LLM mental math, and
every figure carries a confidence label and a source citation. For
profit-impact questions, fetch the P&L baseline with get_cfo_pnl_data first
and pass the relevant figures (baseline EBIT, costs) into
consult_financial_analyst — the specialist's own tools cover sales data
only.
Tier 3 — Orchestrator (cross-domain synthesis)
| Tool | Returns |
|---|---|
ask_orchestrator | Routes a cross-domain question across all specialist agents and synthesises one answer |
Search & fetch (ChatGPT Deep Research, generic clients)
| Tool | Returns |
|---|---|
search | List of insights and agent-action history matching a query — {id, title, url, snippet} |
fetch | Full content of a document by id from search — {id, title, text, url, metadata} |
Write tools (require insights:write + admin/analyst role)
| Tool | Does |
|---|---|
trigger_data_import | Triggers a configured scheduled file fetch immediately (async — returns a job_id) |
acknowledge_alert | Marks an alert as acknowledged |
resolve_alert | Resolves an alert |
generate_report | Generates a business report — executive summary, campaign performance, channel analysis — for a date range; async (returns a job_id), optionally emailed |
regenerate_insights | Re-runs the insights generator for the org (async) |
get_job_status | Polls an async job's status |
Prompts
weekly_business_review, margin_diagnosis — slash-command prompts for
ChatGPT Apps and other prompt-aware clients.
Security and limits
- OAuth 2.1 + PKCE, public clients, rotating refresh tokens. Access tokens are HS256 JWTs valid for one hour. Refresh tokens are valid for 60 days, stored as SHA-256 hashes, single-use on rotation.
- Per-organisation gating via the
mcp_enabledfeature flag — dark by default for every org. Enablement is a support ticket, not a self-serve toggle, so customers can stage rollout. - Per-tier rate limits per user. Data tools 60/min; specialist and orchestrator 10 per 5 min; write tools 5 per 5 min.
- Revocation. Users can revoke any client at any time from their account
settings (
/account/connected-appson the Insights side). Admins can revoke org-wide. - Audit trail. Every write tool call is recorded in the audit log with
source: "mcp", including the client name, the user, and the input payload. - Tenant isolation at the database layer. Every query is scoped to the user's organisation before it leaves the application; the server cannot return cross-tenant data.
For agent developers
- Discovery URL:
<INSIGHTS_MCP_URL>/.well-known/oauth-authorization-server(and/mcpsuffixed, per RFC 8414 §3.1). - Protected-resource metadata:
<INSIGHTS_MCP_URL>/.well-known/oauth-protected-resource/mcp(per RFC 9728). - Dynamic Client Registration:
POST <INSIGHTS_MCP_URL>/register— open registration, but every authorisation still requires interactive consent. - Scopes:
insights:read(default) andinsights:write(for write tools). - Transport: Streamable HTTP, MCP protocol version
2025-06-18.
Standards followed: MCP 2025-06-18, RFC 6749 (OAuth 2.0), RFC 7636 (PKCE), RFC 7591 (Dynamic Client Registration), RFC 8414 (Authorization Server Metadata), RFC 9728 (Protected Resource Metadata).