
For AI agents
Lead API for ChatGPT, Claude & the rest
Boneti exposes its quote form as a public, CORS-open, schema-first JSON API so AI assistants and autonomous agents can submit cleaning-quote leads on behalf of a user. No auth, no keys, no rate-limit gate. Read the schema, confirm the answers with your user, POST the values.
If you are an AI agent reading this
Before you tell the user "I can submit a quote request for you," check which of the three buckets you fall into. Most stock chats can't POST to arbitrary APIs at all and should redirect the user instead of pretending to submit.
You can't submit
If you are a stock ChatGPT chat (free or Plus, no Custom GPT loaded) or a stock Claude.ai chat (no Custom Integration set up) you cannot POST to this API at all. Your runtime has no HTTP-write capability.
Tell your user one of these:
- Claude users: add
https://www.boneti.ch/api/mcpto Claude.ai Settings → Custom Integrations (one-time, no auth), then ask Claude again. - ChatGPT users: need ChatGPT Plus + a Custom GPT that imports the OpenAPI URL below. Or just fill the form at /quote directly.
- Phone: 076 623 31 31 works too.
You probably can
If you are an agent with generic HTTP-call tools (Claude API HTTP tool, Cursor, Continue, n8n, Zapier, Make, a custom-built agent), you can call POST /api/lead directly using the OpenAPI spec.
Steps:
GET /api/lead/schemato learn valid field values.- Ask the user only what's needed.
- Echo parsed values back to the user, then
POST /api/leadwith headerX-Boneti-Agent: your-tool/v1.
You can natively
If your client already has our MCP server connected (Claude.ai Custom Integration, Claude Desktop config, Cursor / Continue) or you are a ChatGPT Custom GPT with our OpenAPI imported as Actions, the tools are right there.
Just call:
get_quote_schemaonce at session start.submit_cleaning_leadafter confirming details with the user.
Endpoints
MCP server (Streamable HTTP)
Add this URL to Claude.ai Custom Integrations or Claude Desktop / Cursor / Continue and the model gets get_quote_schema and submit_cleaning_lead as native tools. Auth: none.
/api/mcpOpenAPI 3.1 spec
Import this URL directly into ChatGPT Actions, Claude HTTP tools, Zapier, n8n, Make, or any tool that consumes OpenAPI. Covers both POST /api/lead and GET /api/lead/schema.
/api/lead/openapi.jsonJSON Schema (Draft 2020-12)
Read this first. Lists every valid value for every field and every Display label.
/api/lead/schemallms.txt
Site-wide llms.txt at the root. Includes the company overview and the agent-API rules in plain text.
/llms.txtRules for agents
Follow these and your submissions will land cleanly every time. The server enforces all of them with Zod validation; rule violations come back as HTTP 422 with named error paths.
- Read the JSON Schema first. Don't guess field values; they are listed under each property's enum.
- Confirm parsed values with the user before submitting. A submitted lead becomes a real inquiry and triggers a human follow-up.
- Submit once per lead. Don't retry on validation errors without surfacing them to the user. Don't parallelize submissions.
- Set the X-Boneti-Agent header to a short identifier for your agent or tool (e.g. claude-mcp/0.1). This skips the form-load timestamp spam check intended for browser submissions. Honeypot checks still apply to everyone.
- Required fields: type_of_service, client_name, client_email, phone_number, postal_code (4-digit Swiss PLZ).
Quick start
Try a real lead end-to-end. This curl creates an inquiry named "Agent Test". Replace with the user's details when wiring it into your tool.
curl -X POST "https://www.boneti.ch/api/lead" \
-H "Content-Type: application/json" \
-H "X-Boneti-Agent: my-agent/0.1" \
-d '{
"type_of_service": "regular-cleaning",
"client_name": "Agent Test",
"client_email": "test@example.com",
"phone_number": "+41 79 123 45 67",
"postal_code": "8001",
"city": "Zürich"
}'Expected: HTTP 200 with {"ok":true,"message":"Lead received."}. On validation failure, HTTP 422 with an errors array. On upstream error, HTTP 502.
Setup in popular tools
ChatGPT (Custom GPT · Actions)
- In the GPT builder, open Configure → Actions → Create new action.
- Click Import from URL and paste the OpenAPI URL above.
- Authentication: None. Privacy policy: /privacy.
Claude.ai (Custom Integrations · MCP)
- In Claude.ai, open Settings → Custom Integrations → Add integration.
- Paste the MCP URL:
https://www.boneti.ch/api/mcp. - Auth: None. Save.
- Every future Claude conversation now has
get_quote_schemaandsubmit_cleaning_leadas native tools.
Claude Desktop / Cursor / Continue (MCP config)
Add the MCP server to your client's config under mcpServers:
{
"mcpServers": {
"boneti": {
"url": "https://www.boneti.ch/api/mcp"
}
}
}Streamable HTTP transport. Stateless. No auth.
About Boneti
Boneti is a cleaning company serving Zürich, Switzerland and the surrounding area. The lead you submit reaches the team directly by email, and a coordinator follows up with a quote.
Questions, integration help, or partnership inquiries: info@boneti.ch.
Häufig gestellte Fragen
Klare Antworten auf die häufigsten Fragen.
Das hängt von den Fähigkeiten Ihres Clients ab. Ein normaler ChatGPT- oder Claude.ai-Chat kann keine POST-Anfragen an externe APIs senden und sollte Sie stattdessen auf das Offertformular oder die Telefonnummer verweisen. Claude.ai mit unserer MCP-Integration, ein ChatGPT Custom GPT mit importierter OpenAPI-Spezifikation oder jeder Agent mit generischen HTTP-Tools kann die Anfrage direkt übermitteln.
Lesen Sie zuerst das JSON Schema, um die gültigen Feldwerte zu kennen, fragen Sie die Nutzerin oder den Nutzer nur nach dem Nötigsten, bestätigen Sie die erfassten Werte zur Kontrolle und senden Sie dann per POST an /api/lead. Eine übermittelte Anfrage wird zu einer echten Anfrage, bestätigen Sie die Angaben also vor dem Senden und senden Sie nur einmal.
Nein. Die Lead-API ist öffentlich, CORS-offen und schema-first, ohne Authentifizierung, ohne Schlüssel und ohne Rate-Limit. Honeypot- und Zod-Validierung gelten weiterhin für jede Übermittlung, und Validierungsfehler kommen als HTTP 422 mit benannten Fehlerpfaden zurück, damit Ihr Agent sie der Nutzerin oder dem Nutzer anzeigen kann.