Juicy Designs Quote
RemoteAbout Juicy Designs Quote
Juicy Designs Quote is an MCP server and REST API for requesting digital marketing quotes or strategy sessions and reading service information. It validates submissions and never returns or implies a price.
Key features
- 01Consent-gated quote requests
- 02Requests for free strategy sessions
- 03Read-only service and area catalogs
- 04Case studies, reviews, and FAQ access
- 05Server-side validation of submitted fields
- 06No price returned or implied
Use cases
- 01Submitting a digital marketing quote request
- 02Requesting a strategy session
- 03Checking services and service areas
- 04Reviewing case studies, ratings, and FAQs
MCP support
The server exposes request and read tools to MCP clients. Requests require contact consent and are forwarded to the existing Juicy Designs form handler; read tools return static reference data.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://juicy-designs-quote.black-voice-76e6.workers.dev/mcpclaude mcp add --transport http cobusvdwest-juicy-designs-quote https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp{"mcpServers":{"cobusvdwest-juicy-designs-quote":{"type":"http","url":"https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"}}}Open in Cursor{"servers":{"cobusvdwest-juicy-designs-quote":{"type":"http","url":"https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"}}}Open in VS Code{"mcpServers":{"cobusvdwest-juicy-designs-quote":{"type":"http","url":"https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"}}}{"mcpServers":{"cobusvdwest-juicy-designs-quote":{"serverUrl":"https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
7| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Contact name. |
| string | Yes | Contact email address. | |
| phone | string | No | Contact phone number. |
| company | string | No | Company or brand name. |
| service | enum | Yes | Main service the quote is for.web_design | seo | ai_search_visibility | branding | google_ads | meta_ads | social_media_marketing | content_marketing | other |
| timeline | enum | No | Optional project timeline.asap | 1_3_months | 3_6_months | flexible |
| budget_range | enum | No | Optional budget range in ZAR. Used only to scope the work, never to calculate a price.under_25k | 25k_75k | 75k_200k | 200k_plus | unsure |
| project_summary | string | Yes | Goals, scope, and context in the user's own words (min 20 chars). |
| consent_to_contact | boolean | Yes | Must be true: the user agrees to be contacted (POPIA). |
Details
From the project READMEJuicy Designs — Quote MCP Server + REST API (Cloudflare Worker)
Request and read-only capabilities for AI agents, exposed two ways:
| Transport | Path | For |
|---|---|---|
| MCP (Streamable HTTP) | POST /mcp | ChatGPT / Claude / agent connectors |
| REST request | POST /quote, POST /strategy-session | Agentic browsers / OpenAPI clients |
| REST read | GET /service-catalog /service-areas /case-studies /client-reviews /faqs | Read reference data |
| Discovery | GET /, GET /openapi.json | Health + machine-readable spec |
Tools
| Tool | Type | Purpose |
|---|---|---|
get_quote | request | Submit a free, no-obligation quote request. Consent-gated. |
book_strategy_session | request | Request a free strategy session. Consent-gated. |
get_service_catalog | read | Services + reference "from" floors (reference only). |
get_service_areas | read | Where Juicy Designs works. |
get_case_studies | read | Track record and portfolio pointer. |
get_client_reviews | read | Aggregate Google rating and review source. |
get_faqs | read | Common questions and answers. |
Both request tools share the same server-side validation and the same forwardLead()
sink, which posts the lead to the existing Juicy Designs Apps Script form handler
as form_type=quote — leads land exactly where the website form's leads land
(email + the "Leads" Google Sheet). Read tools return curated static data only; no PII,
no external calls.
Guarantees
- Never returns or implies a price. Published "from" figures are entry-point references only, never a quote or estimate. Confirms receipt + the four-working-hour SLA only.
- Rejects
consent_to_contact !== trueon every request tool (POPIA). - All input validated server-side — the model's extraction is never trusted.
- Read tools are side-effect-free and contain no per-user calculation.
- Enum inputs map to the labels the Apps Script email/sheet expects.
Deploy
cd mcp-quote-worker
npm install
# 1) Lead sink (the existing Apps Script /exec URL)
npx wrangler secret put LEAD_ENDPOINT
# paste: https://script.google.com/macros/s/AKfycb.../exec
# 2) (optional) per-IP rate limit — Apps Script already throttles 5/10min
# npx wrangler kv namespace create RATELIMIT # then paste id into wrangler.toml + uncomment
npx wrangler deploy
Deploy prints the Worker URL, e.g. https://juicy-designs-quote.<subdomain>.workers.dev.
Put that origin into openapi.yaml (servers.url) and wherever you advertise the endpoint.
Local test
npx wrangler dev # serves on http://localhost:8787
# REST
curl -s localhost:8787/quote -H 'content-type: application/json' -d '{
"name":"Sipho Dlamini","email":"[email protected]","service":"seo",
"project_summary":"E-commerce store, want to rank for running shoes in SA.",
"budget_range":"25k_75k","timeline":"1_3_months","consent_to_contact":true
}'
# MCP: list tools
curl -s localhost:8787/mcp -H 'content-type: application/json' -d \
'{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# MCP: call get_quote
curl -s localhost:8787/mcp -H 'content-type: application/json' -d \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_quote","arguments":{"name":"Sipho","email":"[email protected]","service":"seo","project_summary":"Need SEO for a new store in Pretoria.","consent_to_contact":true}}}'
A request without consent_to_contact:true must come back as an error — that is the POPIA gate working.
Connect as a connector
Claude (Settings → Connectors → Add custom connector): URL = https://<worker>/mcp.
ChatGPT (Settings → Connectors / Developer mode): add an MCP server with the same /mcp URL.
The connector lists one tool, get_quote. The agent should read the fields back and confirm
consent with the user before calling. No authentication is required (the tool only creates a lead).
Connector discovery (so agents can find it)
After deploy, advertise the endpoints from the site:
- A short docs page (e.g.
/connect/or a section on/quote/) listing the MCP + OpenAPI URLs. - Append to
llms.txt(root of juicydesigns.co.za):
## For AI agents
- MCP server (request a quote): https://<worker>/mcp
- OpenAPI 3.1 spec: https://<worker>/openapi.json
(Left out of llms.txt until you have the real Worker URL — paste it in post-deploy so there is no dead link.)
Map of inputs → Apps Script fields
| MCP/REST input | sent as | shown in email/sheet |
|---|---|---|
service (enum) | services (label) | Services |
budget_range (enum) | budget (label) | Budget |
project_summary (+ timeline + source) | message | Message |
name / email / phone / company | same | as-is |
form_type | quote | routes to the quote email/template |
Swap the body of forwardLead() in src/index.ts to send leads elsewhere (CRM, webhook, Resend).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.