Juicy Designs Quote

by cobusvdwest

271 downloads
Not rated
GitHub

Description

# 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…

About

# 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…

Details

Author
cobusvdwest
Downloads
271
Categories
Other

- Two request tools: get_quote and book_strategy_session, both consent‑gated
- Five read tools: service catalog, service areas, case studies, client reviews, FAQs
- All input validated server‑side; model extraction is never trusted
- Quotes are never returned; only receipt confirmation with a four‑working‑hour SLA
- Leads land in the existing Juicy Designs email and Google Sheet
- Supports both MCP (Streamable HTTP) and REST transports

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Juicy Designs Quote
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Deploy by cloning the repository, installing dependencies, setting the LEAD_ENDPOINT secret with the existing Apps Script URL, and running npx wrangler deploy. Connect any MCP client (e.g., Claude under Settings → Connectors) to the worker’s /mcp endpoint, or call the REST endpoints directly at POST /quote and POST /strategy-session. The server accepts no authentication and never returns or implies a price.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "juicy designs quote": {
            "juicy-designs-quote": {
                "type": "streamable-http",
                "url": "https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"
            }
        }
    }
}

McpServers

{
    "juicy-designs-quote": {
        "type": "streamable-http",
        "url": "https://juicy-designs-quote.black-voice-76e6.workers.dev/mcp"
    }
}

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.

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.