Developers & AI agents
Moveezi, machine-readable.
Everything on this site is readable by a program: an OpenAPI 3.1 spec, a JSON API, an MCP server over Streamable HTTP, and every page as markdown. No key, no signup, no rate limit on reads.
What is published
Four ways in
Pick whichever one your stack already speaks. They are all views of the same content, generated from the live site, so none of them can go stale.
Markdown
Append .md to any path, or send Accept: text/markdown to the page itself. Navigation and footer are stripped, so you pay for content and not chrome. Responses carry Vary: Accept, per acceptmarkdown.com.
Public API
A page index, any page as JSON or markdown, and ranked full-text search. Described by an OpenAPI 3.1 document with a unique operation ID, typed parameters and response schemas on every operation.
MCP server
Model Context Protocol over Streamable HTTP at /mcp. Four tools and a set of resources, no authentication. Manifest at /.well-known/mcp.json, and listed on Smithery.
llms.txt
/llms.txt says what Moveezi is, when an agent should reach for it, which kinds of moving business it fits, and where every machine-readable file lives.
Honest 404s
A path that does not exist returns a real HTTP 404, never a 200 with an app shell. Ask for markdown and the body is a short page telling you where to look instead.
SDK and CLI
Official JavaScript and Python clients, both dependency-free, and a moveezi CLI. pip install moveezi, or npm install DumontAI/moveezi-sdk for the JavaScript one.
A sandbox
The one write on this API creates a CRM record and emails a human. POST /api/v1/lead/validate runs the same rules and creates nothing, so you can check a payload before you send it for real.
Limits and a promise
Reads are 120 a minute, leads 5 an hour, both reported in RateLimit-* headers so you can back off on real numbers. The deprecation policy says what will not change without six months of notice.
Structured data
Every page carries JSON-LD: the organisation, its contact points, the product, and FAQ answers. The sitemap and robots.txt are complete and open to AI crawlers.
Connect an agent
Add the MCP server
Point any MCP client at the endpoint below. It is public and read-only: product knowledge, pricing and documentation, never customer or operational data.
# Claude Code
claude mcp add --transport http moveezi https://www.moveezi.com/mcp
# Any client that reads a config file
{
"mcpServers": {
"moveezi": { "type": "http", "url": "https://www.moveezi.com/mcp" }
}
}
Tools: search_moveezi_site, get_moveezi_page, list_moveezi_pages, get_moveezi_pricing. Resources cover llms.txt, the sitemap, the OpenAPI document and the key product pages as markdown.
Try it
Three requests
# Any page as markdown
curl https://www.moveezi.com/pricing.md
curl -H "Accept: text/markdown" https://www.moveezi.com/pricing
# Search the site
curl "https://www.moveezi.com/api/v1/search?q=video+survey"
# Or use the SDK
pip install moveezi && moveezi search "video survey"
npm install DumontAI/moveezi-sdk
# List the MCP tools
curl -X POST https://www.moveezi.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Reference
Every endpoint
| Endpoint | What it returns |
|---|---|
GET /api/v1/pages | Every published page with title, description and markdown URL. Operation ID |
GET /api/v1/pages/{slug} | One page as JSON, or as markdown with Accept: text/markdown.Operation ID |
GET /api/v1/search?q= | Ranked full-text search with a snippet around the first match. Operation ID |
POST /api/v1/pages/batch | Up to 50 pages in one round trip, so you do not loop getPage.Operation ID |
POST /api/v1/lead/validate | Sandbox. Runs a lead through the same rules and writes nothing. Operation ID |
POST /api/lead | Sends an enquiry to the Moveezi sales team. 5 per IP per hour. Operation ID |
POST /mcp | MCP over Streamable HTTP. GET returns 405; there is no server-initiated stream. |
GET /openapi.json | The full API description. Also at /openapi.yaml. |
GET /.well-known/mcp.json | MCP server manifest in registry server.json format. |
GET /auth.md | How to authenticate: you do not. Written to the auth.md structure so nothing is ambiguous. |
GET /api-deprecation-policy | What we will and will not change, and how much notice you get. |
GET /api/v1/sandbox | Where the sandbox is and what it covers. |
GET /llms.txt | Site summary, when-to-use guidance and the index of everything above. |
GET /sitemap.xml | Every published URL. |
GET /<anything-else> | A real HTTP 404, never a 200 with an app shell. With Accept: text/markdown the body is a short markdown page pointing at the files above. |
Limits. Reads allow 120 requests per minute per IP; POST /api/lead allows 5 per hour. Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy, and a 429 carries Retry-After, so you can back off on real numbers rather than guessing.
Versioning. The version is in the path. Within /api/v1 this API only changes additively: new endpoints, new optional parameters, new response fields. When an operation is going to be withdrawn its responses carry Deprecation and Sunset dates (RFC 8594 and RFC 9745) and a Link to its replacement, for at least six months first, and it is marked deprecated in the spec. Nothing is deprecated today. Full policy: /api-deprecation-policy.
This is the public marketing surface. The tenant API behind app.moveezi.com is authenticated, versioned separately and not documented here. Talk to us if you need access to it.
Building something on Moveezi?
Tell us what you are integrating and we will help you get there.
Start a conversation