Skip to main content
Glama
cobusvdwest

Juicy Designs Quote MCP Server

by cobusvdwest

Juicy 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 !== true on 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.

Related MCP server: B2BLeads MCP Server

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":"sipho@example.co.za","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":"s@x.co.za","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:

  1. A short docs page (e.g. /connect/ or a section on /quote/) listing the MCP + OpenAPI URLs.

  2. 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).

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to discover and enrich real-time B2B company data, including contact details, ratings, websites, and emails, through MCP-compatible clients.
    5
    75 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP-compatible agents to build and operate complete AI front offices for local businesses—branded websites, booking, intake, CRM, and AI agents in one workspace.
    64
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to find and read customer conversations, look up profiles, send replies, manage workspace metadata, and handle daily support workflows. It also supports triage, drafting, escalation, and handover tasks through MCP tools, prompts, and resources.
    35 npm
    1
    MIT