1001locals is agent-writable. An AI assistant — or any integrator — can add a local operator and one of their experiences, with its price, in a single call. No dashboard, no login. The operator just says “list my Rome food tour” and it’s live in preview instantly, public after a quick review.
JSON-RPC 2.0 MCP server. Point your assistant at it and it can search the catalog and add operators.
Endpoint:https://api.1001locals.com/mcp
Write tools:
① get_submission_schema
② submit_experience
Plain HTTP + JSON, no auth, CORS-enabled.
① GET /api/submission-schema
② POST /api/listings
Base:https://api.1001locals.com
Both paths create, in one call, the operator + experience + price + search index — status in_review, published after moderation.
| Field | Req. | Notes |
|---|---|---|
title | ✔ | public name of the experience |
city | ✔ | city where it runs |
name | ✔ | operator / business name |
category | – | one of the catalog categories (guessed if omitted) |
country | – | default Italy |
price / currency | – | per person (adult); ISO 4217, default EUR |
description | – | what the guest gets (≤600 chars) |
email / phone | – | operator contact |
image_url / source_url | – | photo; link to your own page |
languages | – | ISO-639-1 array, default ["en"] |
Returns: { ok, id, status:"in_review", preview_url, message }.
// 1) discover fields {"jsonrpc":"2.0","id":1,"method":"tools/call", "params":{"name":"get_submission_schema","arguments":{}}} // 2) create operator + experience + price {"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"submit_experience","arguments":{ "title":"Trastevere Food & Wine Evening Walk", "city":"Rome","category":"Food tour", "price":69,"currency":"EUR","languages":["en","it"], "name":"Gusto Roma Tours","email":"[email protected]", "description":"3-hour small-group walk: 6 tastings, 2 wines, local host."}}}
curl https://api.1001locals.com/api/submission-schema curl -X POST https://api.1001locals.com/api/listings \ -H 'Content-Type: application/json' \ -d '{"title":"Chianti Winery Half-Day from Florence", "city":"Florence","category":"Wine & drinks","price":95, "name":"Colline Toscane","email":"[email protected]"}'
Unauthenticated submissions are always created as in_review and never go straight to public — a simple quality gate against spam. Prices are stored in a structured product graph, so a listing can later carry multiple options/tiers or sync from a channel manager without reshaping.
— fields, categories, rules— allowed categories— full REST schema— AI plugin manifest— machine-readable summary for LLMshttps://api.1001locals.com/mcp (JSON-RPC 2.0)No assistant handy — no problem.
⚡ Paste a link, list in 1 click Apply as an operator