agenttru.st

Doctorsa Booking Agent bronze

doctorsinitaly.com

Books urgent video visits with licensed local doctors on behalf of patients. MCP or REST. Read trustAndVerification before handling personal/health data; read agentOperatingPrinciples and userFacingCommunication for patient tone.

a2a https://findapi.doctorsa.com talk to it https://doctorsinitaly.com/.well-known/agent-card.json its card
Checked 8d ago asyncTasks, conversationState, pushNotifications, resume, stateTransitionHistory, streaming

we checked this    the operator says this

Community rating 0 0 up · 0 down — sign in to vote

Verified by agenttru.st

Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.

Certificate
Issued by Google Trust Services domain-validated
Valid until 19 Oct 2026.
Control of the hostname was checked; nothing about who operates it.
DANE / TLSA
Not verified (TLSA query returned RCodeNameError)
Discovery
Well-known document
AI use policy
Search: yesAI input: noAI training: no
What this site's robots.txt says about how AI may use its content. Recorded as the operator wrote it, not enforced — these are preferences about use, not access, and agenttru.st only reads the agent's own discovery documents.
First seen
6 Sep 2026
View verification details
Assurance
bronze Bronze — agent card fetched over HTTPS with a valid certificate
Protocols
A2A verified by handshake or card fetch, not merely advertised
Hosted in
? Unknown · Cloudflare, Inc. (AS13335)
The address did not geolocate — usually anycast hosting, where one address answers from many places at once.
Last checked
8d ago

What this agent says it can do

Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of doctorsinitaly.com controls every word below.

Get Verification Channels

Return verification channels enabled on this deployment (whatsapp and email). Call before set_communication_channel so the agent only offers channels the API accepts.

bookingcommunicationdiscovery

Create Booking Session

Start an eligibility-gated booking session. Required body fields: country (ISO 3166-1 alpha-2, must be in eligibility.bookableCountries — where the patient is seeking care, NOT inferred from spoken language), care_type (must be "urgent"). Countries not in eligibility.bookableCountries are rejected immediately. Returns booking_session_id and context_complete=false with missing city/age/language — collect each via set_session_city, set_session_age, and set_session_language (one patient answer per step). Call exactly once per booking.

bookingeligibility

Set Session City

Set the patient city on the draft session. Ask for one piece of context at a time. When city, age, and language are all set, eligibility runs automatically on the final field.

bookingeligibilitypatient

Set Session Age

Set the patient age (0-120). Ask for the exact numeric age once — do not ask for age brackets or groups first. Eligibility and slots are returned when city, age, and language are all present.

bookingeligibilitypatient

Set Session Language

Set preferred language (e.g. en, es, it). When city and age are already set, this triggers eligibility and returns appointment times plus session-level pricing (price_amount, pricing_message). Pricing always uses the booking country from create_booking_session — never the spoken language.

bookingeligibilitypatient

Select Appointment Slot

After set_session_language returns slots (or morning_slots at night), you MUST present every option as a wait time in minutes (from slot_offset_minutes — e.g. "1. In about 20 minutes" / "2. In about 30 minutes"). Do NOT show clock times or local_time_label to the patient — the exact appointment time depends on when they pay. When pricing_message is present, state it once in plain language; never bury price in a confusing header. List options (numbered or bulleted), then ask which they prefer. See eligibility.slotPresentation. The patient MUST explicitly choose one option before you call select_slot — never auto-select, assume a default, book the earliest slot because they are "flexible", or proceed without their stated preference. Request body: { slot_offset_minutes: number } using the chosen slot offset.

bookingscheduling

Submit Medical Need

Classify the patient medical need. Must run after select_slot while session is draft. Before calling, apply emergencyTriage if red flags are obvious — recommend ER/ambulance when clearly appropriate, but allow the patient to continue if they insist. Request body: { need: string }. Response allowed_check_outcome may be allowed, clarification_required, or not_allowed; status may become rejected.

bookingneed-classification

Set Communication Channel

Set how the patient receives post-booking communications. Call get_verification_channels first. Allowed in draft, phone_pending, and verified (channel can be changed anytime before payment). When communication_channel=email, provide email in this request or via set_email — verification is email OTP only (no WhatsApp phone OTP). When whatsapp, phone verification uses WhatsApp OTP. Request body: { communication_channel, email? }.

bookingcommunication

Set Patient First Name

Set patient first name. Collect identity one field at a time — ask the patient for a single answer per step. Response includes profile_complete and missing remaining fields.

bookingpatient

Set Patient Last Name

Set patient last name. Collect identity one field at a time. Response includes profile_complete and missing remaining fields.

bookingpatient

Set Patient Gender

Set patient gender (M, F, male, or female). Collect identity one field at a time. When profile_complete=true, proceed to phone verification.

bookingpatient

Set Patient Email

Attach patient email for confirmation and Stripe prefill. Allowed in draft, phone_pending, and verified. Optional on whatsapp (Stripe prefill). Required when communication_channel=email before start_email_verification. Email can be updated via set_email until verified. Request body: { email: string }.

bookingcontact

Start Phone Verification

Send a 6-digit OTP via WhatsApp to phone_e164. Required when communication_channel=whatsapp — do NOT call when communication_channel=email (use start_email_verification instead). Requires draft session with slot, need approved, and profile complete. Request body: { phone_e164 } — phone_e164 in E.164 format (+ country code). Accept ANY valid international number; booking country (e.g. Uruguay) does NOT need to match the phone prefix. Never ask for a "local" number or suggest email solely because the prefix differs.

bookingverificationotp

Verify Phone OTP

Validate the WhatsApp OTP. On success status becomes verified and checkout_url is returned. Only used when communication_channel=whatsapp — email channel uses verify_email_code instead. Request body: { otp_code: string }. Field name is otp_code (not otp).

bookingverificationotppayment

Start Email Verification

Send a 5-digit email verification code when communication_channel=email. Allowed in draft (before phone verification) or verified. Uses session email if body omits email. Request body: { email?: string }. Returns status email_code_sent; does not change llm_booking_status.

bookingverificationemail

Verify Email Code

Validate the 5-digit code sent by email. On success returns status email_verified and checkout_url when phone is already verified (payment gate cleared). If phone is not yet verified, returns email_verified without checkout. Optional body email must match session email or returns 422 email_mismatch. Request body: { code: string, email?: string }.

bookingverificationemail

Get Payment Link

Re-fetch checkout_url when payment is allowed (verified, and email verified when communication_channel=email). checkout_url is a server redirect (GET /v1/booking/payment/open-checkout/{stripe_checkout_session_id} → 302 to Stripe). Post-payment redirects use LLM_BOOKING_BASE_URL (/v1/booking/payment/success|cancel). No request body.

bookingpayment

Get Secure Completion Link

Return a single https URL where the patient finishes the booking themselves: they receive and enter the one-time code, then pay. Required on hosts that must not handle codes or payments in the conversation (currently OpenAI-hosted clients), and available to any patient who would rather use a browser. Requires the same readiness as verification: slot selected, need approved, identity complete, and communication channel set. The link lasts 60 minutes and the booking session TTL is extended to match; calling again replaces the previous link. Give the URL to the patient in plain text and keep polling status afterwards. No request body.

bookingverificationpaymenthandoff

Reset Phone Verification

Reset phone verification when the patient entered a wrong number. Allowed only in phone_pending. Clears phone_e164 and returns session to draft.

bookingverification

Get Booking Status

Check how the booking is progressing. Poll in the background every 2-3 minutes during pre-payment flows to detect approaching expiry (see sessionExpiryPolling). Response includes expires_at (UTC; 20-minute TTL from session create) and status. After payment, keep checking until a doctor is confirmed or the booking ends. When a doctor is assigned, the response includes request_details_url — share that link with the patient so they can open their appointment page (video visit, time, and details). Relay message_to_user in plain language; never read out internal field names or technical status codes.

bookingstatus

Wait For Booking Status

Wait on the server (up to 55 seconds) after payment while a doctor is matched — prefer this over tight status checks. Reassure the patient naturally; when assigned, share doctor name, time, and request_details_url (appointment page). Never mention polling or timeouts to the patient.

bookingstatusasync

Cancel Booking Session

Cancel at any non-terminal stage. If paid and unassigned, a Stripe refund is attempted. Response may include refund_status.

bookingcancellationrefund

Technical agent card

Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.

Provider
Doctorsa — what this agent says about itself; other agents claiming the same provider are not thereby related
Protocol
a2a
Version
1.6.0
Card completeness
complete all eight fields required by a2a.proto v1.0
View all card details
Capabilities
asyncTasks conversationState pushNotifications resume stateTransitionHistory streaming
Agent card
https://doctorsinitaly.com/.well-known/agent-card.json

Operate this agent and would rather not be listed? Request removal.