Your Eveoy expert in any AI — learn how it works, get a price, and order real in-store visits.
One address for any MCP client. No sign-in needed on this server.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
Marketing was always a bet. We made it a sure thing.
Real customers · in real stores · from any AI.
The official Eveoy MCP server — a knowledgeable Eveoy associate any AI agent can install. It's here to help and educate first, not to sell. Through one endpoint an agent can learn what Eveoy is, get an exact quote, save the brand it represents, and — when ready — order verified in-store customer visits end to end, anonymously, no sign-in.
You don't pay for tokens. You don't pay for clicks. You don't pay for hope. You pay $24.99 per real customer who walks into your store, spends 10+ minutes, completes your tasks, and brings back 2 authentic photos to prove it (and buys at your register on purchase visits). No-shows are 100% refunded.
Built as a native Cloudflare Worker (McpAgent + Durable Objects). Registry: com.eveoy/mcp (v1.1.1).
Endpoint https://mcp.eveoy.com/mcp · Streamable HTTP (MCP spec 2025-06-18) · legacy SSE at /sse
Humans: mcp.eveoy.com is an agent endpoint. A browser that lands on /, /index.html, or /mcp (Accept: text/html) is 302-redirected to the human-facing page at www.eveoy.com/mcp. Agents (Accept */*, application/json, text/event-stream) are never redirected, and static/discovery paths (/llms.txt, /robots.txt, /.well-known/*, /info.json, /health, POST /mcp, /sse) pass through untouched.
Remote, no auth — connects immediately. mcp-remote is not needed.
| Client | One-line setup |
|---|---|
| Claude.ai / Claude Desktop | Settings → Connectors → Add custom connector → paste https://mcp.eveoy.com/mcp. |
| Claude Code | claude mcp add --transport http eveoy https://mcp.eveoy.com/mcp |
| ChatGPT | Settings → Connectors → Add → paste the URL (developer mode). |
| Cursor | .cursor/mcp.json → {"mcpServers":{"eveoy":{"url":"https://mcp.eveoy.com/mcp"}}} |
| VS Code (Copilot) | .vscode/mcp.json → {"servers":{"eveoy":{"type":"http","url":"https://mcp.eveoy.com/mcp"}}} |
| Windsurf | mcp_config.json → {"mcpServers":{"eveoy":{"serverUrl":"https://mcp.eveoy.com/mcp"}}} |
| Lovable | Connectors → Chat connectors → New MCP server → paste the URL → Add. |
11 tools · 5 prompts · 10 resources. One endpoint. Just receipts. The Worker is a thin adapter — read/static tools run at the edge; the rest call Eveoy's Supabase edge functions ("the brain") with the publishable anon key only. Every interaction is logged to Eveoy's CRM (Zoho, via a Supabase crm-log edge function); high-intent events — profile captured, demo booked, checkout started, order paid, human requested — also ping the team in Zoho Cliq.
Learn
ask_eveoy — any question about Eveoy (proxies the live brain; public-only KB fallback)get_case_studies — outcome stories (aggregate; no client PII)list_industries — the 16 B2C sectors Eveoy servesget_app_link — canonical app / install linksQuote
get_pricing — exact price; mirrors eveoy.com/order ($24.99/customer · $999 Starter pilot for 40 customers)Buy & convert
capture_profile — save the brand the agent represents (→ Zoho Lead)start_checkout — returns a Stripe Checkout URL directly · anonymous, no sign-in (→ Zoho Deal)book_demo — book a live walkthroughsubscribe_newsletter — newsletter opt-inStatus & handoff
check_order_status — masked order lookup by session idrequest_human — escalate to a person (→ Zoho Task + Cliq)Prompts — /recommend_pilot · /eveoy_price_quote · /eveoy_objection_handle · /pitch_for_role · /pilot_scope_intake
Resources — 10 read-only KB docs at eveoy://kb/* (overview, product, pricing, comparison, sectors, why-now, ugc-ripple, validation, directory, and for-agents — the end-to-end how-to-buy guide written for agents).
Contracts: docs/API_CONTRACTS.md. Backend integration + current state: docs/NOTES_FOR_LOVABLE.md.
This server speaks public Eveoy only. A versioned classifier in src/classifier/denylist.ts blocks every internal pattern — financials, roadmap, partner names, sales playbook, secrets — before it can leave the server, and the same assertPublic gate (src/classifier/public-only.ts) runs on every CRM payload. If a question can't be answered from the public set, the response is "That detail isn't publicly available — email brad@eycrowd.com for more."
mcp.eveoy.com (Worker Custom Domain)
│
▼ one Worker (src/index.ts)
├─ "/" → Lovable's mcp-landing edge fn (marketing source of truth)
├─ /info.json live tool list + pricing + industries
├─ static assets (public/) /privacy, icons, /.well-known/server-card.json,
│ served free from the edge robots.txt, sitemap.xml, llms.txt, eveoy.dxt
├─ EveoyMCP (McpAgent + Durable Object + SQLite)
│ wraps the official SDK McpServer; per-session state (profile, session_id) + SSE resumability
│ serve('/mcp') = Streamable HTTP · serveSSE('/sse') = legacy
│ start_checkout → anonymous agent path on create-checkout-session (no sign-in)
├─ src/integrations/crm.ts → crm-log edge fn (Zoho Activity/Lead/Deal + Cliq) · fire-and-forget
├─ KV (CACHE) 15-min eveoy.com fetch cache (not used for rate counting)
└─ Rate Limit binding per-session + per-IP soft limit (60 / 60s)
The deterministic core (src/lib/pricing.ts, src/classifier/*, src/industries.ts, src/mcp/schemas.ts, src/knowledge/*, tool/prompt bodies) is platform-agnostic — no Cloudflare imports. The Worker shell (src/index.ts) and src/config.ts are the only platform-coupled files.
npm install
cp .dev.vars.example .dev.vars # set IP_HASH_SALT, SUPABASE_ANON_KEY
npm run dev # wrangler dev → http://localhost:8787 (workerd)
npm run inspect # MCP Inspector against localhost:8787/mcp
npm run typecheck # tsc --noEmit
npm test # 110 tests across 20 files (vitest)
npm run lint:descriptors # tool-descriptor integrity gate
npx wrangler deploy --dry-run --outdir dist # bundle validation, no login
The classifier suite must stay at 100% — every internal pattern from the about-eveoy KB has a deny case. The handshake suite asserts every tool follows the canonical description template, carries zero anti-slop tokens, and that server.json + dxt/manifest.json descriptions stay ≤100 chars.
See docs/CLOUDFLARE_DEPLOY.md for the full runbook (account, KV namespace, secrets, custom domain, DNS zone, registry publish). Short version:
wrangler login
wrangler kv namespace create CACHE # paste the id into wrangler.jsonc
wrangler secret put IP_HASH_SALT
wrangler secret put SUPABASE_ANON_KEY
wrangler deploy
2025-06-18.strict() schemas on every tool — no extra params; inputs mirror eveoy.com/orderassertPublicmcp/server.json — Official MCP Registry (com.eveoy/mcp, v1.1.1)smithery.yaml — Smithery · dxt/manifest.json — Claude Desktop .dxt (npm run build:dxt → served at /eveoy.dxt)/.well-known/mcp/server-card.json · /llms.txt · /sitemap.xml · /robots.txtdocs/DIRECTORY_SUBMISSIONS.md.Proprietary. © The Eveoy™ MCP by Eveoy, Inc.