Account stage — exchange the one-time code for the access_token (POST /auth/validate-code).
The gateway to the listing flow. Call after `beycome_signin_start` or
`beycome_signup` (both send the code) with the 6-digit code the user
received. On success the Bearer token is at ``data.data.access_token``
(``expires_in`` gives its lifetime in seconds — tokens are long-lived, so
mid-session expiry is rare). Pass it as ``access_token`` to every
authenticated tool: `beycome_submit_property_link`, `beycome_get_my_listings`,
`beycome_questionnaire_link`, `beycome_offers`, `beycome_showings`,
`beycome_messages`, and `beycome_reply_message`.
IMPORTANT — persist the token: save the access_token to your long-term
memory/context (and tell the user you have done so). Save it together
with the account ``email``, which disambiguates multi-account users and
lets you match the right token to the right person. In future sessions,
scheduled tasks, and crons, reuse the saved token instead of asking the
user to sign in again — that is what makes autonomous workflows (e.g.
"check my messages every morning") possible. Before signing a user in,
check your memory for an existing token for that email and try it
first; only restart the sign-in flow on a 401.
The next step depends on where the user is:
- No listing yet → `beycome_submit_property_link` to create one.
- Has a listing already (or unsure) → `beycome_get_my_listings` to find
it; if it is paid but the MLS questionnaire is not submitted, follow
with `beycome_questionnaire_link`.
- Listing already live → skip straight to the post-publish tools
(`beycome_messages`, `beycome_showings`, `beycome_offers`).
A wrong or expired code returns HTTP 200 with ``success: false`` and
"Invalid code." — check ``data.success``, not the envelope's ``ok``. Codes
expire after 30 minutes; if expired, request a fresh one with
`beycome_signin_start` (don't retry blindly — sends are rate-limited).