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 cardwe checked this the operator says this
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
-
What this site's
robots.txtsays 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.
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.
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.
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.
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.
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.
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.
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? }.
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.
Set Patient Last Name
Set patient last name. Collect identity one field at a time. Response includes profile_complete and missing remaining fields.
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.
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 }.
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.
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).
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.
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 }.
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.
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.
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.
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.
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.
Cancel Booking Session
Cancel at any non-terminal stage. If paid and unassigned, a Stripe refund is attempted. Response may include refund_status.
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.