Dentrix Ascend API and MCP server Let your AI agent work your front desk lists.

Bring Dentrix Ascend schedules and administrative status reports into your permitted workflow. Use MCP or REST with your agent, automation tools or scripts.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Henry Schein One
Dentrix Ascend logo Dentrix Ascend Cloud Browser

13 tools Read and write

Front desk and insurance

What can you automate in Dentrix Ascend? Use an AI agent, a workflow or a script.

  • Find unverified insurance before visits

  • Work the unconfirmed appointments list

  • List patients overdue for recare

  • Follow up on outstanding claims

  • Fill the schedule from broken appointments

  • Weekly production and missed visits report

Gated

Does Dentrix Ascend have an MCP server or an API? Yes, for approved vendors and select customers.

Dentrix Ascend has an API, but only for software vendors approved into the Henry Schein One API Exchange (checked 27 Oct 2026). Henry Schein One announced an MCP layer inside Ascend on 28 Apr 2026, with no developer docs for connecting your own agent. Cotlet runs 13 tools hosted in your own login, over MCP for agents and REST for scripts.

  • The API Exchange takes vendors through an online application and a security review; a practice cannot get its own key.
  • The MCP layer has three tiers: Ask, a preview for questions inside Ascend; Orchestrate, pre-built agents for select customers; and Build, with no date yet.
  • Henry Schein One's own Eligibility Pro already checks payer portals for you, with a per-request cost.
  • We found no Dentrix Ascend app on Zapier and no community MCP server on GitHub.
Dentrix Ascend official routes, a GitHub MCP server and Cotlet compared
What you need Official API and MCPGitHub serverCotlet
Your own agent on your own practice Approved vendors only None exists Yes, your login
Eligibility list and verification Inside Ascend None exists Yes, Pro asks first
Unconfirmed appointments and recare Recare agent, select customers None exists Yes
Outstanding claims and Power Reports Ask preview inside Ascend None exists Yes, read only
Sanctioned by Henry Schein One Yes, official None exists Uses the web app

Checked 27 Oct 2026. Sources: Henry Schein One: Dentrix Ascend opens its MCP layer (28 Apr 2026) · Henry Schein One: Dentrix Ascend API Exchange announced (13 Jul 2023) · Henry Schein One: API Exchange customer FAQs · Dentrix Ascend Help: Verifying eligibility statuses · Dentrix Ascend Help: Eligibility Essentials and Pro overview

Set up once

How does Cotlet connect to Dentrix Ascend? One account, two ways to connect.

  1. 1Sign in to Dentrix Ascend

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Run your workflow

    Ask your agent or send an HTTP request.

We never keep your Dentrix Ascend password, you type every MFA code, and paid eligibility requests wait for your OK. Who can see your session

Any MCP client

Connect Dentrix Ascend to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

    Enable Dentrix Ascend for agents. Sign up, log in to Dentrix Ascend in its Cloud Browser with your Organization and username, then press Enable for agents.

  2. 2

    Paste the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.

  3. 3

    Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.

One shared address, https://cotlet.dev/mcp/v1, also carries Dentrix Ascend next to your other apps. Use a Dentrix Ascend user of your own with a unique email: Henry Schein One's MFA rules say shared logins trigger more verification codes. If you enable Dentrix Ascend after connecting, refresh the connector so the new tools show up.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-dentrix-ascend \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-dentrix-ascend": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-dentrix-ascend]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: dentrix_ascend_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: dentrix_ascend_write
Scripts and HTTP

How to use the Dentrix Ascend REST API

Create your Cotlet API key

Sign in to Dentrix Ascend in its Cotlet Cloud Browser and enable the app for agents. Your user needs schedule, insurance and report security rights; enter the MFA code yourself.

Create a Cotlet API key with access to Dentrix Ascend and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Make your first Dentrix Ascend API request

cURL: list_appointments

curl "https://cotlet.dev/api/v1/dentrix-ascend/appointments?from=2026-11-02&to=2026-11-02" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read one location and reporting date range

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt

{
  "status": "success",
  "app": "dentrix-ascend",
  "tool": "list_appointments",
  "result": {
    "location": "Main Street Dental",
    "appointments": [
      {
        "appointment_id": "apt_40211",
        "start": "2026-11-02T08:00:00-06:00",
        "duration_minutes": 60,
        "patient": "Ava Morales",
        "patient_id": "pt_1182",
        "provider": "Dr. Ellis",
        "operatory": "OP 2",
        "procedures": [
          "D1110",
          "D0120"
        ],
        "status": "Confirmed",
        "eligibility": "Eligible"
      }
    ]
  }
}

Replace the dates with your reporting day and read result.appointments. The operation reads one location per call without cursor or page-size inputs.

Appointment timestamps keep their offset and durations use minutes. Compare confirmation state and timing as well as IDs when preparing an administrative queue.

Insurance eligibility covers primary insurance only; Unable to Verify does not mean Ineligible. These reads return no clinical notes, charts, images or prescriptions.

Dentrix Ascend workflows for agents and automations

Dentrix Ascend workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestRead appointments and unconfirmed appointments into an administrative follow-up queue without sending messages.
MakeHTTP > Make a requestRead eligibility states into a staff review list that distinguishes Unable to Verify from Ineligible.
Python or Node.jsREST APIRead outstanding and patient claims into an administrative report without resubmission or clinical interpretation.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads Dentrix Ascend; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

9 read, 4 write

Dentrix Ascend API endpoints and MCP tools

Schedule and confirmations5

One location per call. Marking a confirmation records your call; Dentrix Ascend sends the patient nothing.

  • list_appointments Appointments on the schedule in a date range, with patient, provider and status. read

    Returns appointments from the Calendar in start order with patient, provider, operatory, procedures, confirmation status and eligibility status. One location per call. Clinical notes, charts, images and prescriptions are never returned.

    MCP calldentrix_ascend_read → list_appointments

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/appointments

    Parameters

    Parameters: list_appointments
    NameTypeDescription
    from date date Start of the range. Default: today.
    to date date End of the range. Default: 7 days after from.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.
    provider string string Provider name. Default: every provider you can see.

    Example response

    {
      "location": "Main Street Dental",
      "appointments": [
        {
          "appointment_id": "apt_40211",
          "start": "2026-10-28T08:00:00-06:00",
          "duration_minutes": 60,
          "patient": "Ava Morales",
          "patient_id": "pt_1182",
          "provider": "Dr. Ellis",
          "operatory": "OP 2",
          "procedures": [
            "D1110",
            "D0120"
          ],
          "status": "Confirmed",
          "eligibility": "Eligible"
        },
        {
          "appointment_id": "apt_40214",
          "start": "2026-10-28T09:00:00-06:00",
          "duration_minutes": 90,
          "patient": "Liam Carter",
          "patient_id": "pt_2045",
          "provider": "Dr. Ellis",
          "operatory": "OP 1",
          "procedures": [
            "D2740"
          ],
          "status": "Unconfirmed",
          "eligibility": "Unable to Verify"
        }
      ]
    }
  • list_unconfirmed_appointments The Unconfirmed Appts list for a day or week, with the last automated reminder. read

    Reads Schedule > Unconfirmed Appointments. Returns appointments grouped by household with the primary contact's phone and email, the status (Unconfirmed, Left Message, Unreachable, Confirmed) and Last Contacted, which says whether an automated text or email went out and when. Nothing is changed.

    MCP calldentrix_ascend_read → list_unconfirmed_appointments

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/unconfirmed-appointments

    Parameters

    Parameters: list_unconfirmed_appointments
    NameTypeDescription
    date date date Day to read. Default: the next business day.
    view string string day or week. Default: day.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.
    provider string string Provider name. Default: every provider you can see.

    Example response

    {
      "date": "2026-10-28",
      "appointments": [
        {
          "appointment_id": "apt_40214",
          "start": "2026-10-28T09:00:00-06:00",
          "patient": "Liam Carter",
          "household_contact": "Liam Carter",
          "phone": "(555) 010-2231",
          "status": "Unconfirmed",
          "last_contacted": {
            "channel": "text",
            "at": "2026-10-26T10:00:00-06:00"
          }
        },
        {
          "appointment_id": "apt_40219",
          "start": "2026-10-28T13:30:00-06:00",
          "patient": "Noah Kim",
          "household_contact": "Grace Kim",
          "phone": "(555) 010-4410",
          "status": "Left Message",
          "last_contacted": {
            "channel": "email",
            "at": "2026-10-26T10:00:00-06:00"
          }
        }
      ]
    }
  • list_broken_appointments Appointments on the Pinboard, ASAP or Broken/No Show list. read

    Reads the list panel of the Calendar page. Returns each appointment with patient, provider, procedures and the date it was originally booked for. Nothing is changed and no appointment is moved.

    MCP calldentrix_ascend_read → list_broken_appointments

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/broken-appointments

    Parameters

    Parameters: list_broken_appointments
    NameTypeDescription
    list string required string pinboard, asap or broken_no_show.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.

    Example input

    {
      "list": "list"
    }

    Example response

    {
      "list": "Broken/No Show",
      "appointments": [
        {
          "appointment_id": "apt_39877",
          "patient": "Olivia Grant",
          "patient_id": "pt_2290",
          "provider": "Dr. Ellis",
          "procedures": [
            "D2391"
          ],
          "original_start": "2026-10-21T14:00:00-06:00"
        }
      ]
    }
  • find_patient Patients by name, phone or birth date, with status and primary insurance. read

    Uses the Patient Search box and returns matches with patient_id, status, preferred location, primary contact and primary carrier. Clinical notes, charts, images and prescriptions are never returned.

    MCP calldentrix_ascend_read → find_patient

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/patients/find

    Parameters

    Parameters: find_patient
    NameTypeDescription
    query string required string Name, phone number or birth date.

    Example input

    {
      "query": "query"
    }

    Example response

    {
      "patients": [
        {
          "patient_id": "pt_2045",
          "name": "Liam Carter",
          "birth_date": "1988-04-12",
          "status": "Active",
          "location": "Main Street Dental",
          "primary_contact": "Liam Carter",
          "primary_carrier": "Delta Dental"
        }
      ]
    }
  • set_confirmation_status Marks an appointment Confirmed, Left Message, Unreachable or Unconfirmed. write

    Does what the Confirm, Left Message, Unreachable and Unconfirm buttons on the Unconfirmed Appts page do. It records the outcome of a call you or your team made; no message goes to the patient. It reaches no one and the next call sets it back, so it does not wait for your OK.

    MCP calldentrix_ascend_write → set_confirmation_status

    REST endpointPUT https://cotlet.dev/api/v1/dentrix-ascend/appointments/{appointment_id}/confirmation-status

    Parameters

    Parameters: set_confirmation_status
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments or list_unconfirmed_appointments.
    status string required string confirmed, left_message, unreachable or unconfirmed.

    Example input

    {
      "appointment_id": "appointment_8c41d2",
      "status": "status"
    }

    Example response

    {
      "appointment_id": "apt_40214",
      "status": "Confirmed",
      "previous_status": "Unconfirmed"
    }

Insurance eligibility2

Primary plans only, as in Dentrix Ascend. A request needs the "Request Eligibility" security right, and a Pro request costs money, so it always asks first.

  • list_insurance_eligibility The Insurance Eligibility list for upcoming appointments, by Eligible, Ineligible and Unable to Verify. read

    Reads Schedule > Insurance Eligibility for a day or week. Appointments come grouped by carrier, then by time, with the last verification date and whether it was manual or automatic. Dentrix Ascend verifies primary insurance only; a patient never verified, or a carrier without real-time checks, shows as Unable to Verify. Nothing is changed.

    MCP calldentrix_ascend_read → list_insurance_eligibility

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/insurance-eligibilities

    Parameters

    Parameters: list_insurance_eligibility
    NameTypeDescription
    date date date Day to read. Default: today.
    view string string day or week. Default: day.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.
    provider string string Provider name. Default: every provider you can see.

    Example response

    {
      "date": "2026-10-28",
      "unable_to_verify": [
        {
          "appointment_id": "apt_40214",
          "patient": "Liam Carter",
          "patient_id": "pt_2045",
          "carrier": "Delta Dental",
          "last_verified": null,
          "method": null
        }
      ],
      "ineligible": [
        {
          "appointment_id": "apt_40230",
          "patient": "Mia Lopez",
          "patient_id": "pt_3310",
          "carrier": "Cigna",
          "last_verified": "2026-10-01",
          "method": "automatic"
        }
      ],
      "eligible": [
        {
          "appointment_id": "apt_40211",
          "patient": "Ava Morales",
          "patient_id": "pt_1182",
          "carrier": "MetLife",
          "last_verified": "2026-10-02",
          "method": "automatic"
        }
      ]
    }
  • request_eligibility_verification Asks the payer for a patient's eligibility with Essentials or Pro. writeasks first

    Clicks Essentials or Pro on the Insurance Eligibility page for one appointment. Your user role needs the "Request Eligibility" security right, the location needs an eTrans User ID, and Pro needs a payer connection. Henry Schein One charges for each Pro request, so every call waits for your approval. By default you confirm each call; you can switch that off for this tool.

    MCP calldentrix_ascend_write → request_eligibility_verification

    REST endpointPOST https://cotlet.dev/api/v1/dentrix-ascend/appointments/{appointment_id}/eligibility-verification/request

    Parameters

    Parameters: request_eligibility_verification
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments or list_unconfirmed_appointments.
    level string required string essentials or pro.

    Example input

    {
      "appointment_id": "apt_40214",
      "level": "essentials"
    }

    Example response

    {
      "appointment_id": "apt_40214",
      "patient_id": "pt_2045",
      "level": "essentials",
      "carrier": "Delta Dental",
      "result": "Eligible",
      "verified_at": "2026-10-27T09:12:00-06:00",
      "import_available": true
    }

Recare3

Active patients by default. A recare note stays inside the practice.

  • list_recare_due Patients from the Recare Management report, filtered by due date and scheduled recare. read

    Runs Home > Reports > Recare Management with your filters. Returns each patient with recare type, due date, the next recare appointment or Unscheduled, primary contact, phone and Last Contacted. Only active patients unless you set include_inactive. Nothing is changed.

    MCP calldentrix_ascend_read → list_recare_due

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/recare-dues

    Parameters

    Parameters: list_recare_due
    NameTypeDescription
    due_from date date Start of the due date range.
    due_to date date End of the due date range. Default: today.
    appointment string string all, scheduled or unscheduled. Default: unscheduled.
    recare_types string[] string[] Recare type names as set up in your practice. Default: all.
    include_inactive boolean boolean Also return inactive patients. Default: false.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.

    Example response

    {
      "patients": [
        {
          "patient_id": "pt_0874",
          "patient": "Ethan Brooks",
          "recare_type": "Prophy",
          "due_date": "2026-08-14",
          "appointment": "Unscheduled",
          "primary_contact": "Ethan Brooks",
          "phone": "(555) 010-7781",
          "last_contacted": {
            "channel": "email",
            "at": "2026-08-07T09:00:00-06:00"
          }
        },
        {
          "patient_id": "pt_1530",
          "patient": "Sofia Reyes",
          "recare_type": "Perio Maint",
          "due_date": "2026-09-02",
          "appointment": "Unscheduled",
          "primary_contact": "Sofia Reyes",
          "phone": "(555) 010-9123",
          "last_contacted": null
        }
      ]
    }
  • add_recare_note Adds or replaces the note on a patient's recare type. write

    Writes the Recare Note the Recare Management report and the patient Overview show, such as "Called twice, asked for a Tuesday slot". The note stays inside the practice and is edited the same way, so it does not wait for your OK.

    MCP calldentrix_ascend_write → add_recare_note

    REST endpointPOST https://cotlet.dev/api/v1/dentrix-ascend/patients/{patient_id}/recare-notes

    Parameters

    Parameters: add_recare_note
    NameTypeDescription
    patient_id string required string Patient ID from find_patient or a list tool.
    recare_type string required string Recare type name from list_recare_due.
    note string required string Note text.

    Example input

    {
      "patient_id": "patient_8c41d2",
      "recare_type": "recare type",
      "note": "note"
    }

    Example response

    {
      "patient_id": "pt_0874",
      "recare_type": "Prophy",
      "note": "Oct 27: left voicemail, wants a Saturday slot.",
      "saved": true
    }
  • add_patient_note Adds a patient note to the record, up to 5,000 characters. write

    Adds a note under Patient Information > Notes, dated today unless you set date. It does not set the note as a pop-up notification. Patient notes are internal; the patient never sees them. It reaches no one and can be edited or deleted in Dentrix Ascend, so it does not wait for your OK.

    MCP calldentrix_ascend_write → add_patient_note

    REST endpointPOST https://cotlet.dev/api/v1/dentrix-ascend/patients/{patient_id}/note

    Parameters

    Parameters: add_patient_note
    NameTypeDescription
    patient_id string required string Patient ID from find_patient or a list tool.
    text string required string Note text, up to 5,000 characters.
    date date date Note date. Default: today.

    Example input

    {
      "patient_id": "patient_8c41d2",
      "text": "text"
    }

    Example response

    {
      "patient_id": "pt_2045",
      "note_id": "nt_77120",
      "date": "2026-10-27",
      "saved": true
    }

Claims and reports3

Read only. Power Reports show synced data with its "Data as of" time, so the newest entries appear after the next sync.

  • list_outstanding_claims Unresolved claims from the Outstanding Claims report, with status and age. read

    Runs Home > Insurance > Outstanding Claims. A claim is unresolved when it is overdue past the carrier's cut-off, rejected (Rejected by Payer, Rejected by eServices, Unprocessable, Zero Payment, Additional Information Requested, Attachment Error) or due for a follow-up reminder. Age comes from the claim's creation date. Nothing is changed.

    MCP calldentrix_ascend_read → list_outstanding_claims

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/outstanding-claims

    Parameters

    Parameters: list_outstanding_claims
    NameTypeDescription
    as_of date date Claims created up to this date. Default: today.
    period string string all, over_15, over_30, over_45 or over_60. Default: all.
    carrier string string Insurance carrier name. Default: all carriers.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.

    Example response

    {
      "as_of": "2026-10-27",
      "claims": [
        {
          "claim_id": "clm_58120",
          "patient": "Liam Carter",
          "patient_id": "pt_2045",
          "carrier": "Delta Dental",
          "created": "2026-09-02",
          "status": "Additional Information Requested",
          "amount": 1240,
          "currency": "USD"
        },
        {
          "claim_id": "clm_58164",
          "patient": "Mia Lopez",
          "patient_id": "pt_3310",
          "carrier": "Cigna",
          "created": "2026-09-15",
          "status": "Sent",
          "amount": 310,
          "currency": "USD"
        }
      ]
    }
  • get_patient_claims A patient's claims from the Insurance Claims page, with status and attachments. read

    Returns every claim created for the patient, newest first, with carrier, dates, amount, status and attachment names. Predeterminations are included when you ask for them. Nothing is changed and no claim is resubmitted.

    MCP calldentrix_ascend_read → get_patient_claims

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/patients/{patient_id}/claims

    Parameters

    Parameters: get_patient_claims
    NameTypeDescription
    patient_id string required string Patient ID from find_patient or a list tool.
    include_predeterminations boolean boolean Also return predeterminations. Default: false.

    Example input

    {
      "patient_id": "patient_8c41d2"
    }

    Example response

    {
      "patient_id": "pt_2045",
      "claims": [
        {
          "claim_id": "clm_58120",
          "carrier": "Delta Dental",
          "created": "2026-09-02",
          "amount": 1240,
          "status": "Additional Information Requested",
          "attachments": [
            "Narrative"
          ]
        }
      ]
    }
  • run_power_report Runs a report from Power Reporting by name and returns its rows. read

    Opens the report from Home > Reports > Power Reporting (for example Production Summary, Missed Appointments, Recare Report, New Patients Seen) with your filters and returns the rows and the Data as of time. Power Reports read synced data, so entries made after that time show on the next sync. Nothing is saved.

    MCP calldentrix_ascend_read → run_power_report

    REST endpointGET https://cotlet.dev/api/v1/dentrix-ascend/power-reports/run

    Parameters

    Parameters: run_power_report
    NameTypeDescription
    report string required string Report name as Power Reporting shows it.
    from date date Start of the range. Default: today.
    to date date End of the range. Default: 7 days after from.
    location string string Location name as Dentrix Ascend shows it on the Location menu. Default: the location you are signed in to.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "report": "Missed Appointments",
      "data_as_of": "2026-10-27T06:00:00-06:00",
      "rows": [
        {
          "provider": "Dr. Ellis",
          "missed": 6,
          "production_not_realized": 1850
        },
        {
          "provider": "Jordan Hale, RDH",
          "missed": 4,
          "production_not_realized": 620
        }
      ]
    }
Encrypted, revocable

Who can see my Dentrix Ascend session, and how do I revoke it?

  • What we store

    Your logged-in Dentrix Ascend profile, encrypted with AES-256-GCM, in Finland. Not the password.

  • What your agent gets

    The 13 Dentrix Ascend tools. Never the cookie.

  • What the session sees

    What your user role sees: schedule, patients, insurance and reports at your locations.

  • What no tool touches

    Clinical notes, charts, images, prescriptions, payments, users and settings.

  • If Ascend asks to verify

    MFA sends a code by email or text. You type it in, we never do.

  • How to cut access

    Disable for agents, reset the browser, or deactivate the user in Ascend.

Patient data is protected health information. Your agreement with Henry Schein One covers it inside Dentrix Ascend; sending it to an AI agent or to Cotlet is your practice's own decision under HIPAA. Cotlet does not sign a BAA. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.

Account risk

Is it against Henry Schein One's rules? Account safety Ascend logs out what it reads as a bot.

"To protect against bots and non-humans, a user is logged out automatically when there is inappropriate usage."
Dentrix Ascend Help, Logging in, checked 27 Oct 2026

After such a logout, the next sign-in shows a CAPTCHA and may ask for MFA. Henry Schein One also says it is "strengthening our security to prevent unauthorized connections" from vendors outside its API Exchange, and it sued one such vendor in October 2025 over access to Dentrix desktop databases. Its customer license is not published, so we could not quote it. Cotlet works through the Ascend web app in your own login, but Henry Schein One could still treat it as unapproved access. We found no public case of a practice account closed for this (checked 27 Oct 2026).

How we keep your account looking like you

  • Your own Dentrix Ascend user, signed in by you
  • One Cloud Browser with its own IP and cookies, so no new-device check every call
  • Paid Eligibility Pro requests wait for your OK
  • No tool deletes, schedules or changes a patient record
  • If Henry Schein One objects, we pause the Dentrix Ascend tools for everyone within 24 h

If you get a CAPTCHA at sign-in, solve it yourself in the Cloud Browser. Cotlet never solves one.

Tested every 12 h

What happens when Dentrix Ascend changes? We repair the tool; your prompts stay the same.

between tests of the Dentrix Ascend reads
12 h
between tests of confirmations and notes
24 h
for a call to a Dentrix Ascend tool paused for repair
$0

Dentrix Ascend is a web app that Henry Schein One updates in place. When a page moves or a column is renamed, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.

1 tool asks first

Approvals, undo and mistakes Nothing that costs money runs without your OK.

  1. 01 Reads the list list_insurance_eligibility for tomorrow, by Unable to Verify, Ineligible and Eligible.
  2. 02 Picks the gaps Patients never verified or verified last month.
  3. 03 Waits for your OK Each verification request shows up in your Cotlet console first.
  4. 04 Reports the result Eligible or not, and whether benefits can be imported.
Which Dentrix Ascend actions can be undone
ActionUndo
Set a confirmation statusSet it again: Unconfirm, Left Message or Unreachable
Request an Essentials checkNo; it only updates the status from the payer's answer
Request a Pro checkNo, and the per-request fee applies
Add a recare noteEdit the note in the patient Overview
Add a patient noteEdit or delete it under Patient Information > Notes

1 of 13 tools asks first: request_eligibility_verification, because a Pro request carries a fee from Henry Schein One. Confirmations and notes stay inside the practice and reach no patient, so they run at once. Switch the wait off per tool for a scheduled run.

Essentials and Pro need an eTrans User ID for the location, and Pro needs a payer connection. Without them the request fails and costs nothing on our side.

MCP call
{
  "name": "request_eligibility_verification",
  "arguments": {
    "appointment_id": "apt_40214",
    "level": "essentials"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/dentrix-ascend/appointments/apt_40214/eligibility-verification/request \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level":"essentials"}'
Tool output
{
  "appointment_id": "apt_40214",
  "patient_id": "pt_2045",
  "level": "essentials",
  "carrier": "Delta Dental",
  "result": "Eligible",
  "verified_at": "2026-10-27T09:12:00-06:00",
  "import_available": true
}

Scripts and cron jobs reach the same tools over REST at /api/v1/dentrix-ascend, with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.

Pay per call

How much does the Dentrix Ascend MCP server cost?

About $29 a monthfor a two-dentist location that works its lists every business day, 4,940 credits. Henry Schein One bills Dentrix Ascend and Eligibility Pro as before.

A month of Dentrix Ascend jobs for one location, in credits
JobCallsCredits
Check insurance before visits5 × 221,100
Work the unconfirmed list7 × 221,540
Recare list and notes12 × 4480
Outstanding claims follow-up6 × 4240
Production and missed appointments2 × 480
Cloud Browser, 30 days1,500
Total4,940
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No API Exchange membership needed, only a login

The month is our example: the eligibility and unconfirmed lists every business day, recare, claims and two reports every week. Henry Schein One does not publish Dentrix Ascend or Eligibility Pro prices. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Dentrix Ascend MCP server: official, vendor or hosted Ask your Henry Schein One rep first.

Dentrix Ascend options, checked 27 Oct 2026
OptionWhat it doesWhere it stops
Ascend MCP layerAsk preview for questions in plain language inside Ascend; pre-built agents for eligibility, claims reconciliation and recall gaps.Agents for select customers; Build has no date; no docs for Claude, ChatGPT or your own agent.
Henry Schein One API ExchangeApproved vendors connect forms, analytics, communications and AI products through the API.For vendors, not practices. You buy their product and its workflows.
Eligibility ProHenry Schein One's own add-on: checks payer portals and imports benefits.Eligibility only, with a per-request or monthly fee.
GitHubWe found no Dentrix Ascend MCP server or CLI.Nothing to install.
Zapier, Make, n8nWe found no Dentrix Ascend app.Only through a vendor that has its own app.

If your plan includes the MCP agents or Eligibility Pro, use them: they are official and sanctioned. Cotlet is for a practice that wants its own agent on its own lists today, without waiting for the Build layer or buying a vendor product.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Dentrix Ascend tools.

Dentrix Ascend API and MCP: questions

Can I use the Dentrix Ascend API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

How do I get access?

Create a free account at https://cotlet.dev, open Dentrix Ascend under Integrations in the console and log in to Dentrix Ascend in its Cloud Browser. The trial starts with your first app, no card asked.

Which Dentrix Ascend security rights does the user need?

The tools see what your user role sees. Requesting an eligibility check needs the "Request Eligibility" right, the Insurance A/R overview needs "Review Insurance", and Eligibility Pro payer setup needs "Payer Connection Portal" (Dentrix Ascend Help, checked 27 Oct 2026).

Does an eligibility check cost money?

A Pro request does: Dentrix Ascend Help says each Pro request has a per-transaction cost, paid per request or through a monthly package. Essentials uses standard payer data. request_eligibility_verification waits for your approval on every call.

Is patient data covered by my Henry Schein One agreement?

Your agreement with Henry Schein One covers data inside Dentrix Ascend. Sending patient data to an AI agent or to Cotlet is a separate decision for your practice under HIPAA. Cotlet does not sign a BAA. No tool reads clinical notes, charts, images or prescriptions.

Does it work with Dentrix desktop (G-series)?

No. These tools are for Dentrix Ascend, the cloud version you open in a browser. Dentrix desktop runs on a server in your office and has no web login.

Does it say "recall" or "recare"?

Dentrix Ascend calls it recare. Ask your agent either way; list_recare_due reads the Recare Management report.

Is the MCP server different from the REST API?

Only the door is different. Both expose the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Henry Schein One?

No. Cotlet is independent and not affiliated with Henry Schein One or Dentrix.

Give your agent access to Dentrix Ascend.

Free 7-day trial with 2,000 credits, no card needed.