accept_bid
ChatGPTStage 2: accept bid with confirmationToken and expectedBidVersion. Creates booking only — never charges payment via MCP.
attach_guest_photo
ChatGPTAttach a photo URL to a guest draft (ChatGPT analyzes images; MCP only stores).
attach_item_photos
ChatGPTStore item crop photos (e.g. PS5 carton) on a draft item. Pass file download_url from ChatGPT fileParams.
attach_move_photos
ChatGPTStore room photos on the draft. ChatGPT already analyzed them; this only persists evidence for companies. Pass file download_url from ChatGPT fileParams.
clear_draft_direct_company
ChatGPTRemove direct company targeting; draft returns to marketplace mode.
create_guest_draft
ChatGPTCreate an anonymous MoveDeal draft without login. Returns draftAccessToken and continuationUrl. REQUIRED in patch: geocoded pickupAddress + destinationAddress (guest_resolve_address first), moveDate, items when known. ALSO write when known (else ASK customer): floorLevel, destinationFloorLevel, hasElevator, destinationHasElevator, accessInfo.pickup.parkingStatus, pickupPropertyType, destinationPropertyType, rooms, additionalInfo (company notes), item.notes. Never invent missing access details. Never return a claim link for empty addresses.
create_move_draft
ChatGPTCreate a MoveDeal draft move request (not published).
get_bids
ChatGPTList bids with freshness. Only summarize backend facts — never invent why a company is cheaper.
get_catalogue_company
ChatGPTFetch one published Anbieter by public slug (id + unclaimed flag for targeting).
get_catalogue_status
ChatGPTCheck whether the MoveDeal Anbieter catalogue and direct company requests are enabled.
get_guest_draft
ChatGPTFetch a guest draft using moveRequestId + draftAccessToken.
get_move_completeness
ChatGPTMissing fields and quote quality score for the draft.
get_move_draft
ChatGPTRead the current structured MoveDeal draft.
get_move_profile
ChatGPTGet the authenticated customer's MoveDeal profile.
guest_resolve_address
ChatGPTGeocode an address for guest drafts without MoveDeal OAuth. ALWAYS include the city in the query (e.g. "Breslauer Straße 3, München" or "Seydlitzplatz 6, Munich"). Prefer German umlauts when known (Straße/München). Use the first result whose city matches the customer's city, then write moveAddress into the draft. Never invent coordinates.
list_my_move_requests
ChatGPTList the customer's MoveDeal requests including drafts.
prepare_accept_bid
ChatGPTStage 1 of accept: returns structured bid facts + confirmationToken. Does not accept yet.
publish_move_request
ChatGPTPublish a confirmed draft to the marketplace. Requires expectedVersion === customerConfirmedVersion and acceptedTerms. Confirmation required.
request_publish_otp
ChatGPTSend a one-time email code so the customer can publish a guest draft from ChatGPT. Only when they ask to publish in chat.
resolve_address
ChatGPTGeocode an address query via Photon. Never store unresolved free-text cities.
search_catalogue_companies
ChatGPTSearch published moving companies by city and/or name. Use when the customer asks for local movers or names a firm. Max 10 results.
set_draft_direct_company
ChatGPTAttach a catalogue company as the direct request target (requestMode=direct). Prefer guest path with draftAccessToken; OAuth uses Bearer only.
update_guest_draft
ChatGPTPatch a guest draft. Requires expectedVersion optimistic lock.
update_move_draft
ChatGPTPatch draft fields with optimistic locking (expectedVersion). Mark inferences with quantityStatus/recognitionStatus; never invent confirmed facts.
verify_and_publish
ChatGPTVerify email OTP, claim the guest draft to the customer account, and publish. Requires acceptedTerms and matching draftVersion.