ReelQuoteAI Survey Tool
com.reelquoteai/survey-toolVersion 1.1.0Filmed moving surveys, itemized inventories, firm quotes and bookings for moving companies.
Status
Responds149 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:12 UTC
- Latency
- 149 ms
- Remotes responding
- 1 of 1
- Sign-in
- API key
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://widget.reelquoteai.com/mcpResponds149 msNo sign-in
Claude Code
claude mcp add --transport http survey-tool https://widget.reelquoteai.com/mcp --header 'Authorization: Bearer <YOUR_TOKEN>'Replace <YOUR_TOKEN> before running.
Claude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: survey-tool
Remote MCP server URL: https://widget.reelquoteai.com/mcp
This server expects the header Authorization.Cursor
{
"mcpServers": {
"survey-tool": {
"url": "https://widget.reelquoteai.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}Replace <YOUR_TOKEN> before running.
VS Code
code --add-mcp '{"name":"survey-tool","type":"http","url":"https://widget.reelquoteai.com/mcp","headers":{"Authorization":"Bearer <YOUR_TOKEN>"}}'Replace <YOUR_TOKEN> before running.
Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
38 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
accept_appointment_timeAccept the time the mover suggested. Both sides get a calendar file. Scope: jobs:write. | No | No | Not declared | No |
acknowledge_gapsRecord the customer's answer to the capture-gap prompts (inventory.gaps on GET /jobs/{id}). Body: { acknowledged: true } stamps "nothing is missing"; false clears it. The prompts themselves are recomputed from the current inventory on every read, so fixing a gap removes its prompt without this call. Scope: jobs:write. | No | No | Not declared | No |
approve_inventoryCustomer sign-off on the inventory, plus free-text notes. Scope: jobs:write. | No | No | Not declared | No |
ballpark_estimateInstant estimate range from home size + addresses. Free; never bookable. Scope: quote. | No | No | Not declared | No |
cancel_appointmentCancel the call or visit. The mover is told. The customer can book again. Scope: jobs:write. | No | No | Not declared | No |
complete_uploadAssemble a chunked upload. Body: { upload_id, parts: [{ part_number, etag }] }. Only after every part has been PUT; then call /submit. Scope: jobs:write. | No | No | Not declared | No |
confirm_accessConfirm floors / elevator / stairs / carry distance for both ends. Scope: jobs:write. | No | No | Not declared | No |
create_jobStart a job (the survey container). Contact details are NOT accepted here — funnel rule. Send `Idempotency-Key` so a retry cannot create a second job. Scope: jobs:write. | No | No | Not declared | No |
create_keyMint a key. The raw secret is in THIS response only. A key can never mint one broader than itself; a test key mints only test keys; a live secret key may mint the sandbox pair. Scope: keys. | No | No | Not declared | No |
create_upload_urlPresigned upload for the walkthrough video. Requires stored contact email. Body: { content_type, consent, size }. Send the byte size: at or above 16 MB the response carries `multipart` (an upload_id, a part_size and a presigned PUT per part) instead of `upload`, and each part is retried on its own rather than restarting the whole video. Report each part's ETag to /upload-complete. Below the threshold, or if opening a multipart upload fails, the response is a single `upload`. Scope: jobs:write. | No | No | Not declared | No |
edit_itemsEdit inventory (quantity, exclude, add by item_key). Response carries the re-priced quote. Scope: jobs:write. | No | No | Not declared | No |
get_availabilityWhich days the mover has marked off, before a job exists. Soft: a marked day can still be requested — the mover confirms and calls first — so steer to an open day when the customer has a choice. Scope: quote. | No | Yes | Not declared | No |
get_cube_sheet_csvItemized cube sheet as CSV (Excel-ready): rooms, volumes, weights, exclusions. Secret key only. Scope: jobs:read. | No | Yes | Not declared | No |
get_date_pricesThis job's quote priced across a ~2-week window from the mover's date rules. flat=true means every day prices the same. Scope: jobs:read. | No | Yes | Not declared | No |
get_jobFull job state: status, inventory, quote, access, terms, move_date. Scope: jobs:read. | No | Yes | Not declared | No |
get_sessionResolve the key to its mover (name, branding, config). Scope: quote. | No | Yes | Not declared | No |
hand_off_videoServer-side handoff: give us a public https URL of the walkthrough instead of uploading it from a browser. Secret key only. We fetch it (up to 500 MB, streamed) and the job runs exactly as an upload would — poll GET /jobs/{id}. Needs the stored contact email and consent, like /upload-url. Replaces /upload-url, /upload-complete and /submit for a caller that already holds the file. A job whose fetch failed (`error`) may be handed a new URL. Counts toward the mover's daily analysis cap (429). Scope: jobs:write. | No | No | Not declared | No |
list_appointment_timesOpen times for a live video call or a home visit (`?kind=live|in_home`): inside the mover's hours, past their notice period, off their days off and clear of their booked appointments. Labels are in the mover's time zone. Scope: jobs:read. | No | Yes | Not declared | No |
list_home_profilesHome sizes for the ballpark step (2br_apt, 3br_house, …). Scope: quote. | No | Yes | Not declared | No |
list_jobsList jobs for the tenant, newest first. Secret key only. Paged: pass `limit` (1–100, default 25), optional `status`, and `cursor` from the previous page's `next_cursor` (null on the last page; a bad cursor is a 400). Scope: jobs:read. | No | Yes | Not declared | No |
list_keysList the account's API keys — live and test, active and revoked. Never a raw secret. Secret key with the `keys` scope. Scope: keys. | No | Yes | Not declared | No |
list_webhook_deliveriesThe delivery log: every webhook POST for 30 days, newest first, with its outcome and the exact body sent. Secret key with the `keys` scope. A key reads the deliveries of its own mode: live keys the live log, test keys the sandbox log. Scope: keys. | No | Yes | Not declared | No |
quote_inventoryDirect pricing for agents: items or total_cuft in, firm quote out. Secret key only. Scope: quote. | No | No | Not declared | No |
replay_webhook_deliveryRe-send one delivery to its endpoint: the same body byte for byte (same envelope id, so your dedupe still works) under a fresh signature, with the usual retries. Returns the replay's own delivery record. Deliveries of the other mode are not found (404). Scope: keys. | No | No | Not declared | No |
report_outcomeReport actuals (hours, final cents, crew). Secret key only. Scope: outcomes. | No | No | Not declared | No |
request_appointmentAsk for a live video call or a home visit, offering up to 3 of the open times. A job with nothing uploaded switches to that kind and becomes priced by the mover. Re-posting replaces the offer until a time is agreed. Scope: jobs:write. | No | No | Not declared | No |
request_bookingRequest the booking. Idempotent per job; requires approve:true (types-name-as-signature approval of the inventory + quote, stored with a quote snapshot) and accept_terms when the mover has terms. Scope: jobs:write. | No | No | Not declared | No |
request_visitAsk the mover to visit (or call) instead of filming. Free, never billed, creates no job; the mover gets it by email, on the dashboard and as `visit.requested`. Scope: quote. | No | No | Not declared | No |
resolve_addressResolve a suggestion to a full address (same session_token). Scope: quote. | No | No | Not declared | No |
revoke_keyRevoke a key immediately. The only live publishable key is refused (409) — rotate it instead. A test key cannot revoke a live key (403 `mode_mismatch`). Scope: keys. | No | No | Not declared | No |
rotate_keyReplace a key with its twin (same kind, mode, scopes, label). The old key keeps working until `replaced.expires_at` so a deploy can swap values without a gap. Needs the `keys` scope even to rotate itself — rotate a scoped key with a full key or from the dashboard. A key is rotated once: rotating it again is a 409 `key_already_rotated`, and during its grace the old key cannot mint, rotate, revoke or read deliveries (403 `key_rotated`). A test key cannot rotate a live key (403 `mode_mismatch`). Scope: keys. | No | No | Not declared | No |
search_catalogSearch the cube-sheet catalog (?q=sofa). Scope: quote. | No | Yes | Not declared | No |
send_inventory_to_moverOn a job the mover prices: the customer sends their list to the mover. Stamps the confirmation and locks the list. Body: { confirmed: true, notes }. Safe to repeat. Scope: jobs:write. | No | No | Not declared | No |
send_resume_linkEmail the customer their resume link. Only on explicit request. Scope: jobs:write. | No | No | Not declared | No |
set_contactStore customer email + optional name + move date. Sends NOTHING — required before upload-url. Scope: jobs:write. | No | No | Not declared | No |
set_move_dateSet or clear the move date; invalidates and recomputes the quote. Refused after a booking is requested. Scope: jobs:write. | No | No | Not declared | No |
submit_jobQueue the uploaded video for analysis. Poll GET /jobs/{id} for status. Scope: jobs:write. | No | No | Not declared | No |
suggest_addressesAddress autocomplete (proxied; send session_token). Scope: quote. | No | No | Not declared | No |
Details
- Registry status
- Active
- Published
- Sep 2, 2026
- Updated
- Sep 2, 2026
- Repository
- Not given
- Categories (suggested)
- Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared