Xona Dental Gateway

com.xonarkPublished by xonark.comOfficial publisherv1.1.0Updated Oct 24, 2026

Find Canadian dentists; send an appointment request or book with a connected practice.

VerifiedStreamable HTTPWeb executableLocation & LifestyleProductivity & Workflow

Overview

AI-generated overview

A remote MCP server for finding Canadian dental practices and, where a clinic supports it, requesting or booking appointments with patient confirmation.

What you can do
Search and read public Canadian dental practice profiles, with evidence, citations and filters such as service, language, hours, booking route and payment plan acceptance (Canadian Dental Care Plan). Answer bounded factual questions from a selected practice's evidence, returning unknown rather than inferring missing data. List a practice's public booking, request, form, call and website actions and prepare a short-lived action for one of them. Read services and open times from a clinic's own online scheduler and choose a time that hands off to the clinic's booking page. Start and check an appointment request that Xona sends to the clinic only after the patient confirms. Hold, confirm or drop
When to use it
Use it when someone wants to find a Canadian dentist matching criteria such as service, language, weekend hours or CDCP acceptance, or wants to request or book an appointment at a participating clinic. It suits patient-facing booking conversations where the patient completes each step themselves.
Requirements
A remote streamable HTTP endpoint at book.xonark.com; no packages, environment variables or headers are declared. Booking and request flows rely on the patient receiving text messages or emails with links, and on the clinic's own scheduler being readable.
Before you install
Actions create real requests and bookings: requests are sent to the clinic only after the patient presses send, and bookings or changes take effect only after the patient confirms via a link. Patient details (name, mobile number, date of birth, preferred times) are collected and passed to Xona and the clinic. Some tools move or cancel existing appointments; a sent request is never a confirmed booking. No authentication is declared.

Installation

In SourceWeft

  1. Open Xona Dental Gateway in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.xonark%2Fdental-gateway/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "xona-dental-gateway": {
      "type": "http",
      "url": "https://book.xonark.com/mcp"
    }
  }
}

Tools

20

search_canadian_dentists

Search Canadian dentists

Search evidence-backed public profiles in the Canadian dental directory by name or place, and filter by a service, a language, published weekend or evening hours, a booking route you can use now, and a payment plan the clinic says it accepts (the Canadian Dental Care Plan). Each row says which published fact matched and when it was read. A search with order=soonest, the patient's postal code or city and the service returns live rows that already carry each clinic's earliest time, its services and booking_url, the page where the patient books that time; opening it starts the booking there, with no call in the conversation. A row's read.read_at says when its times were read, at most 5 minutes before. The tool a row's next_step names reads more times. Each earliest is only a first pick: the first service in the clinic's own list whose name holds the need's word, an adult's before a child's. Clinic service names often say more than that word: "New Patient Exam (No Cleaning)", a new-patient bundle of exam, x-rays and cleaning, a service for children only, a fee or insurance note. Read service_name against what the patient needs; when it does not fit, choose the service that does from services and read its times with list_public_booking_slots. No login or clinic membership is required.

Parametersopenpagelimitorderquerybookingservicecoveragelanguagelocalityprovincepostal_code

get_canadian_dental_practice

Get a Canadian dental practice

Get one public dental practice profile, fact evidence, citations, and current public actions.

Parameterspractice_slugrequired

answer_dental_practice_question

Answer from dental practice evidence

Answer a bounded factual question from the selected practices' evidence. Unknown is returned explicitly; missing data is never inferred as no.

Parameterstopicrequiredpractice_slugsrequired

list_dental_practice_actions

List dental practice actions

List current public booking, request, form, call, and website actions for a dental practice in preference order.

Parameterspractice_slugrequired

prepare_dental_practice_action

Open one of a clinic's booking routes

Creates a short-lived action for one capability the clinic's action options list (its scheduler page, a Xona request, a request form, a call or its website) and returns the URL of the page for it. A capability the clinic does not list is refused. A connected practice's time from list_xona_booking_slots is held with hold_xona_booking_slot, not through this tool.

Parameterscapabilityrequiredpractice_slugrequired

get_dental_action_status

Get dental action status

Read the exact outcome of an expiring dental action. Handoff, request, and confirmed booking outcomes remain distinct.

Parametersaction_idrequired

list_public_booking_services

List a clinic's public booking services

Read the services a clinic's own online scheduler offers, by practice_slug: a clinic whose search row is live_schedule, or whose action option has reads_times. The answer carries booking_url, the page where the patient books this clinic; a clinic whose scheduler can't be read answers readable false with that booking_url. An answer may be up to 5 minutes old: read_at says when the clinic's scheduler was read and age_seconds how long ago; fresh: true reads this clinic again (twice a minute per clinic; past that the answer says when it next can). Provider locators remain server-owned.

Parametersfreshpractice_slugrequired

list_public_booking_slots

List a clinic's public booking slots

Read open times from a clinic's own online scheduler, by practice_slug, for one service_id between date_from and date_to (the clinic's dates, both included, at most 14 days). Each time carries starts_at, start_local (the time at the clinic), time_zone and booking_url, the page where the patient books that time (Xona's page on that service and day where Xona books the clinic's scheduler, else the clinic's own booking page); earliest is the first one; preferred_time puts the closest times first. An answer may be up to 5 minutes old: read_at says when the clinic's scheduler was read and age_seconds how long ago; fresh: true reads this clinic again (twice a minute per clinic; past that the answer says when it next can).

Parametersfreshdate_torequireddate_fromrequiredservice_idrequiredpractice_slugrequiredpreferred_time

choose_public_booking_time

Choose a time to book at a clinic

For a public_provider_booking action: keeps one time from list_public_booking_slots (or a soonest search row's earliest) and returns continue_url, Xona's page where the patient enters their own details and presses Book. Xona then books that time in the clinic's own scheduler. It takes the action and the time (service_id, slot_id, starts_at) only, reads that time again and keeps it only if it is still open; the page collects the patient's details.

Parametersslot_idrequiredaction_idrequiredstarts_atrequiredservice_idrequired

start_dental_request

Start a dental appointment request

Start an appointment request for Xona to send to the selected clinic (by email, or through the clinic's own website form). It takes the patient's details and preferred times. Xona emails the patient a link that shows the exact request; the request goes to the clinic only when the patient presses "Send this request" there, or enters the email's code on continue_url. The result carries consent_text and continue_url; confirm_dental_request reports the status. Use it where list_dental_practice_actions marks xona_email_appointment_request as completes_in_conversation.

Parametersnotepatient_namerequiredpatient_emailrequiredpatient_phonepractice_slugrequiredpreferred_windowrequiredservice_categoryrequired

confirm_dental_request

Check a dental appointment request

Report a started request's status. It never sends: waiting_for_patient until the patient presses "Send this request" on Xona's page, then the stored result: sent, delivery unknown or failed, expired, or stopped by the patient. A sent request is never a confirmed booking.

Parametersaction_idrequired

list_xona_booking_services

List a connected practice's booking services

List the services a practice that connected its schedule to Xona books online. Use it where list_dental_practice_actions marks the Xona booking route as completes_in_conversation.

Parameterspractice_slugrequired

list_xona_booking_slots

List a connected practice's open times

List open times at a connected practice for one service between date_from and date_to (inclusive, at most 8 weeks out). Returns the closest ten to preferred_time (else a balanced spread) plus the earliest open time, with a reason when empty. Each slot has a slot_fingerprint and date for hold_xona_booking_slot.

Parametersdate_torequireddate_fromrequireddoctor_idservice_idrequiredpractice_slugrequiredpreferred_time

hold_xona_booking_slot

Hold an open time and text the patient a link

Hold one open time and text the patient a link to it. The page the link opens shows the time and the details above a Book this appointment button. When the patient presses it the appointment is booked, or, at a practice that confirms bookings itself, sent to the practice as a request.

Parametersdaterequirednotelast_namerequiredfirst_namerequiredservice_idrequireddate_of_birthrequiredguardian_namepatient_phonerequiredpractice_slugrequiredslot_fingerprintrequired

confirm_xona_booking

Get the booking's result

Get the result once the patient has tapped the text link and pressed Book this appointment. Until then it returns waiting_for_patient. Xona finds an existing patient itself; when it cannot tell, it returns the practice's booking page instead of guessing. If the booking stopped before it was written, the first call tries it once more. Calling again returns the same outcome.

Parametersaction_idrequired

abandon_xona_booking

Give up a booking that is not booked yet

Release the held time and drop the patient's details when the patient no longer wants it, at any step before it is booked. It never cancels a booked appointment. Calling again returns the same result.

Parametersaction_idrequired

start_xona_appointment_access

Text the patient a link to show their appointments

Text a patient one link to see, move or cancel the appointments they already have at a practice connected to Xona, for a conversation with no booking action_id that still works. If the mobile number, name and date of birth match a patient there, Xona texts them the link; after they tap it and press Show my appointments, list_xona_appointments reads their appointments. The answer is the same whether or not the details match.

Parameterslast_namerequiredfirst_namerequireddate_of_birthrequiredpatient_phonerequiredpractice_slugrequired

list_xona_appointments

List the patient's upcoming appointments

Read the named patient's upcoming appointments at the practice, live from its schedule, after the patient tapped the text link. Works with the action_id of a booking made in this conversation (for 30 minutes after the tap, and for that appointment until its day) or of start_xona_appointment_access. Before the tap it says it is still waiting.

Parametersaction_idrequired

list_xona_reschedule_times

List times an appointment can move to

List open times one of the patient's appointments can move to, for its own service and provider, between date_from and date_to. appointment_ref comes from list_xona_appointments.

Parametersdate_torequiredaction_idrequireddate_fromrequiredappointment_refrequired

change_xona_appointment

Ask to move or cancel an appointment

Move or cancel one of the patient's appointments. Xona texts the patient a link to a page that shows the exact change. When they press its button (or type the code from the text on book.xonark.com/code) the practice's schedule changes, or, at a practice that confirms changes itself, the practice receives the request. Calling again with the same arguments returns the result, read live from the practice's schedule.

Parametersdatekindrequiredaction_idrequiredappointment_refrequiredslot_fingerprint

Version history

2
  1. v1.1.0LatestSep 23, 2026
  2. v1.0.0Sep 19, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.