moveezi
v1.0.0
Published
Client and CLI for the public Moveezi API: read moveezi.com as structured data, search it, and reach the sales team. No credentials needed.
Maintainers
Readme
Moveezi SDK
Client libraries and a CLI for the public Moveezi API.
Moveezi is the operating system for moving, relocation and storage companies: sales and quoting, on-site and video surveys, dispatch and crew scheduling, a mobile crew app, warehousing, sea/air/road shipment tracking, a live control tower and per-job profit and loss.
There is nothing to authenticate with. No key, no signup, no token. Every read is open.
The one write, submitLead, is the same endpoint the website's own forms post to, and it
has a sandbox so you can check a payload without creating anything.
- API reference: https://www.moveezi.com/openapi.json
- Developer portal: https://www.moveezi.com/developers
- MCP server:
https://www.moveezi.com/mcp(Streamable HTTP, no credentials) - Authentication, in one page: https://www.moveezi.com/auth.md
Install
JavaScript / TypeScript (Node 18+, zero dependencies):
npm install moveezi
# or straight from source, no registry account needed:
npm install DumontAI/moveezi-sdkPython (3.9+, standard library only):
pip install moveeziCLI, without installing anything:
npx moveezi search "video survey"Use it
import { MoveeziClient } from "moveezi";
const moveezi = new MoveeziClient();
const hits = await moveezi.searchSite("video survey", { limit: 3 });
const pricing = await moveezi.getPage("pricing", { format: "markdown" });
const pages = await moveezi.allPages({ prefix: "blog/" });
// Check a lead before you send one. Creates nothing.
const check = await moveezi.validateLead({ name: "Ada", email: "[email protected]" });
if (check.wouldSubmit) {
await moveezi.submitLead(
{ name: "Ada", email: "[email protected]", intent: "demo" },
{ idempotencyKey: crypto.randomUUID() }, // a retry will not create a second lead
);
}from moveezi import Moveezi
moveezi = Moveezi()
hits = moveezi.search("video survey", limit=3)
pricing = moveezi.get_page("pricing", markdown=True)
pages = list(moveezi.all_pages(prefix="blog/"))
check = moveezi.validate_lead({"name": "Ada", "email": "[email protected]"})
if check["wouldSubmit"]:
moveezi.submit_lead({"name": "Ada", "email": "[email protected]"},
idempotency_key="a3f1c9e2")CLI
moveezi search <query> Search moveezi.com
moveezi page <slug> One page as markdown
moveezi pages [--prefix] Every published page
moveezi batch <slug...> Several pages in one request
moveezi pricing The pricing page
moveezi lead [--submit] Check a lead; only sends with --submit
moveezi openapi The OpenAPI 3.1 document
moveezi auth How to authenticate here (you do not)
moveezi policy Versioning and deprecation policy
moveezi mcp MCP endpoint and client configRate limits
Reads are 120 requests per minute per IP. POST /api/lead is 5 per hour per IP. Both
report RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy
on every response, and Retry-After on a 429. Both clients expose them:
await moveezi.listPages();
moveezi.lastRateLimit; // { limit: 120, remaining: 119, reset: 60 }A 429 throws a MoveeziError with retryAfter in seconds, so you can back off on real
numbers rather than guessing.
If you are an AI agent
You may not need this package at all. The API is plain HTTP with an
OpenAPI 3.1 document, every page is available as
markdown (append .md, or send Accept: text/markdown), and there is an
MCP server with tools for search, page retrieval and
pricing. Start at llms.txt.
Please only call submitLead on behalf of a person who asked you to contact Moveezi, and
send an Idempotency-Key so a retry does not create a duplicate. validateLead is there
so you never have to learn the rules by creating a bad record.
Stability
The version is in the path (/api/v1) and this API changes additively within it. Anything
being withdrawn gets Deprecation and Sunset headers and six months' notice first. Full
policy: https://www.moveezi.com/api-deprecation-policy.
Development
npm test # JavaScript, no network
MOVEEZI_LIVE=1 npm test # plus a couple against production
cd python && python3 -m unittest test_moveeziLicence
MIT. See LICENSE. The API and the content it serves belong to Dumont Pty Ltd.
