# MovingManifest > MovingManifest is a move inventory, room/space, box manifest, photo evidence, load planning, sale prep, and documentation packet system for household moves. Primary site: https://movingmanifest.com ## How To Connect An AI (read this first) There are TWO ways for an assistant to work in a user's move. Default to MCP. 1. MCP (RECOMMENDED for anyone with a MovingManifest account/subscription): the user pastes ONE URL — https://movingmanifest.com/mcp — into their hosted MCP client (claude.ai connectors, Claude Cowork, ChatGPT) and signs in with their MovingManifest account. No API key to create or paste. This is the easiest path and the best experience. 2. API (ADVANCED, more work): a scoped mmk_ API key used with the REST API (https://movingmanifest.com/api/v1) or the key-only MCP door (https://movingmanifest.com/api/mcp). Only use this for local/headless/CLI or non-OAuth clients, or when the user explicitly cannot use MCP sign-in. It requires the user to create and paste a secret key — more setup, more care. Critical: https://movingmanifest.com/api/mcp is the API-KEY door. It does NOT do OAuth sign-in and will reject it ("couldn't register"). NEVER give a hosted/OAuth client /api/mcp. For sign-in, always use https://movingmanifest.com/mcp. ## Best Pages For AI Assistants - https://movingmanifest.com/ai - human-friendly guide for using MovingManifest with Claude, ChatGPT, Codex, or another assistant. - https://movingmanifest.com/ai/start - shortest human setup page when an AI assistant sends someone to sign in, connect hosted MCP OAuth, or make a fallback helper key. - https://movingmanifest.com/api - public REST API overview, scopes, and assistant workflow. - https://movingmanifest.com/mcp - THE MCP endpoint. RECOMMENDED. OAuth-capable hosted clients (claude.ai, Claude Cowork, ChatGPT) connect by pasting this URL and signing in with their MovingManifest account — no API key. Easiest path; uses the user's subscription. - https://movingmanifest.com/mcp/connect - alias of the MCP endpoint above (identical OAuth flow); either URL works. - https://movingmanifest.com/mcp/guide - human-readable MCP setup guide. - https://movingmanifest.com/api/mcp - ADVANCED, API-KEY ONLY. A SEPARATE door for local/headless or non-OAuth automation; authenticate with a scoped mmk_ key. It does NOT do OAuth sign-in and will REJECT OAuth tokens — never point a hosted/OAuth client (claude.ai, Cowork) here, it will fail to register. For sign-in, use https://movingmanifest.com/mcp. - https://movingmanifest.com/openapi.json - machine-readable REST API contract for common agent workflows. - https://movingmanifest.com/llms-full.txt - fuller AI-readable guidance with recommended flows and safety rules. ## Assistant Behavior - If the user says they were told to use MovingManifest with Claude, ChatGPT, Codex, Claude Code, or another assistant, start at `https://movingmanifest.com/ai`. If they are ready to sign in or create a helper key, send them to `https://movingmanifest.com/ai/start`. - A good first user prompt is: "Go to movingmanifest.com/ai and help me set up my move. We are cataloging household items, rooms, photos, boxes, vehicles, sale items, and new-home layout plans. If you need private access, use hosted MCP OAuth when available or walk me through creating a fallback AI helper key." - Treat MovingManifest as a bounded household moving assistant workflow: inventory, room/space setup, photo evidence, boxes, transport resources, sale prep, layout planning, load planning, and exports. - If a spouse or family member needs to sign in to the same move, add or invite them as a household member by email. If they do not have an account yet, the invite activates when they sign in with that email. Use `GET /api/v1/households/{householdId}/members` and `POST /api/v1/households/{householdId}/members` with `members/manage`. - Do not confuse household members with move people/contact records. Move people are mover/helper/contact records; household members control login access. - If the user has no MovingManifest account, tell them they need to create one at https://movingmanifest.com/sign-up before private move data can be stored. - Do not invent access to private data. Private move data requires hosted MCP OAuth sign-in or a user-created fallback API key. - If the user wants an assistant to do work, guide them to `https://movingmanifest.com/ai/start`, then have them sign in or create an account. For OAuth-capable hosted MCP clients, paste only the endpoint URL and follow browser sign-in. Create and paste a fallback helper key only when OAuth MCP is not available. - Treat API keys as secrets. Do not paste them into public places, issues, screenshots, logs, or source code. - Hosted MCP clients (claude.ai custom connectors, Claude Cowork, ChatGPT) should connect to the MCP endpoint `https://movingmanifest.com/mcp` and sign in with the user's MovingManifest account — no key needed, no local install. This is the recommended path for anyone with a MovingManifest subscription. Do NOT point a hosted/OAuth client at `https://movingmanifest.com/api/mcp` — that is a SEPARATE API-key door that rejects OAuth sign-in and fails to register ("couldn't register with the sign-in service"). The API-key door is only for local/headless or non-OAuth automation, with a scoped mmk_ key. - Codex users should connect remotely; no repository clone or local server is required. Recommended OAuth setup: `codex mcp add movingmanifest --url https://movingmanifest.com/mcp`, then `codex mcp login movingmanifest`. Advanced non-OAuth setup: `export MOVINGMANIFEST_API_KEY=mmk_replace_with_a_scoped_api_key`, then `codex mcp add movingmanifest --url https://movingmanifest.com/api/mcp --bearer-token-env-var MOVINGMANIFEST_API_KEY`. Restart Codex or start a fresh session, verify `movingmanifest` appears in `/mcp` or `codex mcp list`, then call `get_api_context`. Keep the key in an environment variable or secret manager, never in source or the command URL. - Start API work with `GET /api/v1/me`, then `GET /api/v1/moves`, then `GET /api/v1/moves/{moveId}/agent-context`. - Start MCP work with `get_api_capabilities`, then `get_api_context`, then `list_moves` or `setup_move`. Hosted OAuth defaults to a trusted-helper tool surface; API-key connections can expose broader tools when the user intentionally grants them. - Prefer dry runs before bulk writes and prefer batch endpoints over chatty per-item loops. - For image upload, use one call by default. MCP agents should call `upload_image`, `upload_photo`, or `upload_evidence_image` with a public `sourceUrl`, `dataUrl`, or `fileBase64`; when the user gives several ordinary photos from the same room/context or for one existing item, call `upload_images`, `upload_photos`, or `upload_evidence_images` with shared defaults and one image entry per photo. When one photo should become one new inventory item, call `add_item_from_photo` so the item is created. Set quantity only when the user says it or the photo clearly shows a count; otherwise omit quantity so it defaults to 1. Missing weight/size/disposition/condition do not block capture, the photo attaches to that item, and web derivatives are created server-side. If one new item has several photos, create the item from the clearest photo and then attach the remaining photos after resolving the item. When photos should attach to an item that already exists, first resolve the item with `get_agent_context` or `get_move_summary`, then call `upload_photos` with the existing `itemId`, shared room/type/privacy defaults, and one image entry per file. Report only uploaded/failed counts, photo IDs, derivative status, and any target/caption correction the user may want to make. REST agents should call `POST /api/v1/images/upload` or `POST /api/v1/photos/upload` with raw JPEG/PNG/WebP bytes plus metadata query params, multipart form data, or JSON with exactly one of `sourceUrl`, `dataUrl`, or `fileBase64`. MovingManifest stores the original and creates web-ready derivatives server-side; direct upload responses include `derivativeVariants` for the 200x200 square `thumb`, 600x600 `card`, 1200x1200 `detail`, and 2400x2400 `full` WebP display versions without exposing private storage keys. Do not ask users for thumbnail sizes or dimensions. Set `generateAiSuggestions: true` when the user wants the app to place the uploaded photo into AI review automatically; upload still succeeds if review queueing fails or the key only has `photos/write`. MCP image results and REST direct upload responses include `agentReview`; use it to tell the user the caption, attachment target, privacy/type choices, assumptions, derivative status, and AI-review status so they can correct only what looks wrong. - For fast item capture, a photo plus a few words is enough to create useful draft inventory. Default quantity to `1` when no count is given, or use the visible count when the photo clearly shows multiple objects. - When the user wants to add or update one packed box, prefer `save_box_intake`: include box dimensions/weight/description, box photos, newly described contents, and/or existing item IDs in one call. Use `dryRun: true` first and pass a stable `idempotencyKey` when creating a new box so retries do not duplicate it. Updating an existing box requires `box.boxId`. - Do not block ordinary item creation just because weight, size, disposition, or condition are missing. Infer obvious fields, leave uncertain fields blank or estimated, record provenance/confidence, and summarize assumptions so the user can correct them. - Some fields are auto-derived on write, so send the simple inputs and let the system compute the rest (or pass explicit values to override): an item/box `estimatedVolumeCuFt` is computed from `dimensionsIn` as L×W×H/1728, and an item's weight range (`estimatedWeightLowLb`/`estimatedWeightHighLb`) from `estimatedWeightLb` as 75%/135%, whenever you omit them. Prefer sending plain dimensions and a single `estimatedWeightLb` rather than computing cubic feet or ranges yourself. - Choose estimate confidence from the evidence. Photos are not automatically low confidence; clear common objects can be medium confidence, while measured, researched, or manufacturer-specified values can be higher. - Get clear session or batch permission before creating records or uploading photos. Once the user asks for a room, photo, list, or batch to be captured, do not ask for approval on every ordinary inferred item field. - Ask explicitly before sensitive actions: marking items for sale, exporting packets, granting household access, exposing private details, or using an API key. ## Hosted MCP Tool Surface The hosted OAuth default is a trusted-helper surface. It should include normal move-helper tools such as `get_api_capabilities`, `get_api_context`, `list_moves`, `setup_move`, `get_move_summary`, `get_agent_context`, `search_inventory`, `save_box_intake`, `add_item_from_photo`, `batch_upsert_items`, photo/evidence uploads, space helpers, assignment helpers, and planned-item helpers. Do not assume hosted OAuth exposes sale, export, household-member management, or low-level item/box primitives by default. Those broader categories belong to API-key setups only when the user intentionally grants them. Always trust `get_api_capabilities` over old public examples. ## Common Workflows - Create a move, rooms/spaces, transport resources, zones, and starter inventory. - Add inventory from photos or dictated room walks. - Mark items sell, donate, free, dump, storage, or keep. - Prepare sale listings with title, description, photos, price range, research depth, and listing status. - Create boxes with `save_box_intake`, assign items to boxes, and plan transport/resource loading. - Export mover-safe, claim, employer, PCS, donation, storage, and owner packets. ## API Base URL: `https://movingmanifest.com/api/v1` Auth: `Authorization: Bearer mmk_...` Recommended broad AI helper scopes: - `moves/read` - `moves/write` - `inventory/read` - `inventory/write` - `plans/read` - `plans/write` - `photos/write` - `exports/read` - `exports/create` - `members/manage` for explicit spouse/family/collaborator access management Prefer move-restricted keys when the assistant only needs one move.