---
title: "Moveezi Developer Portal | API, MCP Server & Markdown"
description: "Moveezi's public developer surface: an OpenAPI 3.1 spec, a JSON site API, an MCP server over Streamable HTTP, and every page as markdown. No key required."
url: https://www.moveezi.com/developers
updated: 2026-09-05
---

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.

[OpenAPI 3.1 spec](https://www.moveezi.com/openapi.json) [llms.txt](https://www.moveezi.com/llms.txt)

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](https://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](https://www.moveezi.com/openapi.json) 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](https://www.moveezi.com/.well-known/mcp.json), and listed on [Smithery](https://smithery.ai/servers/dumont/moveezi).

### llms.txt

[/llms.txt](https://www.moveezi.com/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](https://github.com/DumontAI/moveezi-sdk), 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](https://www.moveezi.com/api-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](https://www.moveezi.com/sitemap.xml) and [robots.txt](https://www.moveezi.com/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 `listPages`. |
| `GET /api/v1/pages/{slug}` | One page as JSON, or as markdown with `Accept: text/markdown`. Operation ID `getPage`. |
| `GET /api/v1/search?q=` | Ranked full-text search with a snippet around the first match. Operation ID `searchSite`. |
| `POST /api/v1/pages/batch` | Up to 50 pages in one round trip, so you do not loop `getPage`. Operation ID `getPagesBatch`. |
| `POST /api/v1/lead/validate` | Sandbox. Runs a lead through the same rules and writes nothing. Operation ID `validateLead`. Check a payload before you submit it for real. |
| `POST /api/lead` | Sends an enquiry to the Moveezi sales team. 5 per IP per hour. Operation ID `submitLead`. Send an `Idempotency-Key` so a retry does not create a second lead. Only on behalf of a person who asked you to. |
| `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](https://www.moveezi.com/api-deprecation-policy).

This is the public marketing surface. The tenant API behind [app.moveezi.com](https://app.moveezi.com/login) is authenticated, versioned separately and not documented here. [Talk to us](https://www.moveezi.com/developers) 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](https://www.moveezi.com/developers)
