Jane App API and MCP server Let your AI agent run your clinic's front desk.

Read Jane appointments, wait lists and administrative reports through MCP or REST. Connect your staff account to an agent or a private reporting script.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Jane
Jane App logo Jane App Cloud Browser

14 tools Read and write

Front desk to reports

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

  • Fill cancellations from the Wait List

  • Resend unfinished intake forms

  • Send Pay Balance emails

  • Recall patients who have not rebooked

  • Notify the Wait List about an opening

  • Report new and returning patients

Partners only

Does Jane App have an MCP server or an API? An API for approved partners only, and no MCP server.

Jane has no public API and no MCP server (checked 27 Oct 2026). Its Jane Developer Platform is for approved Technology Partners, and Jane says clinics cannot build their own integrations. Cotlet runs 14 Jane tools hosted, over MCP for agents and REST for scripts.

  • The partner API reads patients, appointments, treatments and staff and writes chart records. It has no endpoints for the Wait List, intake forms, invoices or reports.
  • Jane's partner rules say "Posting directly into Jane's calendars is not supported", and Jane is "not looking to work with AI scheduling" tools for now.
  • Zapier and n8n have no Jane app (both pages answer 404). Jane announced a partner marketplace without a date.
Jane App with its partner API, doing it by hand and Cotlet compared
What you need Partner APIBy hand in JaneCotlet
Read the Schedule and patients Approved partners only Yes Yes
Book from the Wait List No Yes, slot by slot Yes, after your OK
Resend intake forms No Yes, patient by patient Yes, after your OK
Balances and Pay Balance emails No Yes Yes, after your OK
Runs while the front desk is busy Your own code, if approved No Yes, also on a schedule

Checked 27 Oct 2026. Sources: Jane blog: Jane Integrations, our program and how to work with us · Jane Developer Platform API Quick Start Guide · Jane Developer Platform API reference index · Jane Guide: Using Wait List Notifications

Set up once

How does Cotlet connect to Jane App? One account, two ways to connect.

  1. 1Sign in to Jane App

    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 Jane password or ask you to turn off two-factor, and nothing reaches a patient until you approve it. Who can see your session

Any MCP client

Connect Jane App 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 Jane for agents. Sign up, sign in to your clinic at yourclinic.janeapp.com/admin in its Cloud Browser, 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 address serves every app you enable, Jane included. Enable Jane after connecting and the connector needs a refresh before its tools appear.

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

Claude Code:
claude mcp add --transport http cotlet \
  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": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
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: jane_app_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: jane_app_write
Scripts and HTTP

How to use the Jane App REST API

Create your Cotlet API key

Sign in to Jane App in its Cotlet Cloud Browser and enable the app for agents. Use your clinic staff login; clinic-wide reports require Full Access or the relevant Administrative / All Billing permissions.

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

Make your first Jane App API request

cURL: list_appointments

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

Read appointment reports and follow the cursor

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": "jane-app",
  "tool": "list_appointments",
  "result": {
    "appointments": [
      {
        "appointment_id": "apt_48230",
        "patient_id": "pt_10988",
        "patient": "Sam Rivera",
        "staff_member": "Dana Lee",
        "treatment": "Physiotherapy Initial 60 min",
        "start": "2026-11-02T13:00:00-07:00",
        "state": "Booked Online"
      }
    ],
    "next_cursor": null
  }
}

Replace the dates with your reporting day and read result.appointments. Pass result.next_cursor unchanged as cursor until null, preserving dates, state, staff and location filters.

There is no page-size input. The report includes cancellations and reschedules in its default state selection; compare time, practitioner and state as well as IDs.

Patient profiles omit chart notes, and intake-form reads return status rather than answers. Accounts Receivable does not subtract account credit; preserve that distinction in administrative reports.

Jane App workflows for agents and automations

Jane App workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestCombine appointments and intake-form statuses into a private administrative preparation list without reading answers.
MakeHTTP > Make a requestRead wait lists and appointments to prepare a staff-reviewed slot shortlist without booking or contacting patients.
Python or Node.jsREST APIRead Accounts Receivable into an administrative aging report that retains the account-credit distinction.

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

Cotlet reads Jane App; 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.

8 read, 6 write

Jane App API endpoints and MCP tools

Schedule and Wait List5

The Wait List comes longest-waiting first. Front Desk and Limited access see only their own Wait List; Wait List Notifications need the Thrive or Legacy plan.

  • list_appointments Appointments in a date range with patient, practitioner, treatment and state. read

    Reads the Appointments report: past and future appointments with the patient, location, treatment, appointment date and booking date. Filter by state (Booked Online, Arrived, No Show, Cancelled, Rescheduled, Archived) and by chart status. Clinic owners and staff with the matching report access see every practitioner; others see their own. Nothing is changed.

    MCP calljane_app_read → list_appointments

    REST endpointGET https://cotlet.dev/api/v1/jane-app/appointments

    Parameters

    Parameters: list_appointments
    NameTypeDescription
    from date date First day. Default: today.
    to date date Last day. Default: from.
    state string string booked_online, arrived, no_show, cancelled, rescheduled or archived. Default: all.
    staff_member string string Practitioner name as Jane shows it. Default: every practitioner your access lets you see.
    location string string Clinic location name, for clinics with more than one.
    cursor string string Next page cursor from the previous call.

    Example response

    {
      "appointments": [
        {
          "appointment_id": "apt_48213",
          "patient_id": "pt_10422",
          "patient": "Alex Morgan",
          "staff_member": "Dana Lee",
          "treatment": "Physiotherapy Follow-up 30 min",
          "start": "2026-10-28T10:00:00-07:00",
          "state": "Cancelled"
        },
        {
          "appointment_id": "apt_48230",
          "patient_id": "pt_10988",
          "patient": "Sam Rivera",
          "staff_member": "Dana Lee",
          "treatment": "Physiotherapy Initial 60 min",
          "start": "2026-10-28T13:00:00-07:00",
          "state": "Booked Online"
        }
      ],
      "next_cursor": null
    }
  • list_wait_list Clients on each practitioner's Wait List with requested treatment, availability and notes. read

    Reads the Wait List the way Jane shows it on the Schedule: clients who have waited longest come first. Each entry has the requested treatment, the days and times the client is available, the date range and the staff note. Staff with Practitioner Front Desk or Limited access see only their own Wait List; Administrative / All Billing access or higher sees the whole clinic. Nothing is changed.

    MCP calljane_app_read → list_wait_list

    REST endpointGET https://cotlet.dev/api/v1/jane-app/wait-lists

    Parameters

    Parameters: list_wait_list
    NameTypeDescription
    staff_member string string Practitioner name as Jane shows it. Default: every practitioner your access lets you see.
    location string string Clinic location name, for clinics with more than one.
    date date date Only clients available on this day. Default: every day.

    Example response

    {
      "wait_list": [
        {
          "entry_id": "wl_2207",
          "patient_id": "pt_11873",
          "patient": "Jordan Patel",
          "staff_member": "Dana Lee",
          "treatment": "Physiotherapy Follow-up 30 min",
          "available": "Mon to Fri, 09:00 to 12:00",
          "date_range": "2026-10-27 to 2026-11-10",
          "added": "2026-10-14",
          "note": "Prefers mornings"
        },
        {
          "entry_id": "wl_2231",
          "patient_id": "pt_12004",
          "patient": "Casey Nguyen",
          "staff_member": "Dana Lee",
          "treatment": "Physiotherapy Follow-up 30 min",
          "available": "Anytime for a Week",
          "date_range": "2026-10-27 to 2026-11-03",
          "added": "2026-10-21",
          "note": ""
        }
      ]
    }
  • add_to_wait_list Put a patient on a practitioner's Wait List with a treatment and availability. write

    Adds a Wait List entry as staff do from the Schedule, with the requested treatment, the available days and times and a note. Jane sends nothing to the patient when the entry is added, and staff remove it with one click in Jane, so this runs without asking. Returns the new entry.

    MCP calljane_app_write → add_to_wait_list

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/wait-lists

    Parameters

    Parameters: add_to_wait_list
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.
    staff_member string required string Practitioner whose Wait List to use.
    treatment string required string Treatment name as Jane lists it.
    available string string Days and times the patient can come, e.g. "Mon, Wed, 14:00 to 17:00". Default: all of today.
    until date date Last day of the request.
    note string string Note for other staff.

    Example input

    {
      "patient_id": "patient_8c41d2",
      "staff_member": "staff member",
      "treatment": "treatment"
    }

    Example response

    {
      "entry_id": "wl_2240",
      "patient_id": "pt_10422",
      "staff_member": "Dana Lee",
      "treatment": "Physiotherapy Follow-up 30 min",
      "available": "Mon, Wed, 14:00 to 17:00",
      "date_range": "2026-10-27 to 2026-11-24"
    }
  • book_appointment Book a patient into an open slot, from the Wait List or directly. writeasks first

    Books the treatment with the practitioner at the start time, the way staff do from the Schedule or with the Book button on a Wait List entry. Jane then sends the patient its usual appointment notifications, with any intake form set for that treatment. With wait_list_entry_id, the entry is removed after booking unless keep_on_wait_list is true. A slot that overlaps another appointment fails. By default you confirm each call; you can switch that off for this tool.

    MCP calljane_app_write → book_appointment

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/appointments

    Parameters

    Parameters: book_appointment
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.
    staff_member string required string Practitioner to book with.
    treatment string required string Treatment name as Jane lists it.
    start datetime required datetime Start time in the clinic's time zone.
    wait_list_entry_id string string Wait List entry this booking fills, from list_wait_list.
    keep_on_wait_list boolean boolean Keep the entry after booking. Default: false.
    location string string Clinic location name, for clinics with more than one.

    Example input

    {
      "patient_id": "pt_11873",
      "staff_member": "Dana Lee",
      "treatment": "Physiotherapy Follow-up 30 min",
      "start": "2026-10-28T10:00:00-07:00",
      "wait_list_entry_id": "wl_2207"
    }

    Example response

    {
      "appointment_id": "apt_48251",
      "patient_id": "pt_11873",
      "staff_member": "Dana Lee",
      "treatment": "Physiotherapy Follow-up 30 min",
      "start": "2026-10-28T10:00:00-07:00",
      "state": "Booked",
      "removed_from_wait_list": true
    }
  • send_wait_list_notification Notify the eligible Wait List clients about an opening at once. writeasks first

    Clicks Send Notification(s) Now on a Wait List cue, the held spot Jane creates after a cancellation, deletion, no-show or move. Every eligible client listed on the cue gets the notification at the same time, and the hold switches to your Exclusive Access period. Jane offers Wait List Notifications on the Thrive and Legacy plans only. By default you confirm each call; you can switch that off for this tool.

    MCP calljane_app_write → send_wait_list_notification

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/wait-list-notifications

    Parameters

    Parameters: send_wait_list_notification
    NameTypeDescription
    staff_member string required string Practitioner of the opening.
    start datetime required datetime Start time of the Wait List cue.

    Example input

    {
      "staff_member": "staff member",
      "start": "2026-10-01T09:00:00Z"
    }

    Example response

    {
      "opening": {
        "staff_member": "Dana Lee",
        "start": "2026-10-28T10:00:00-07:00"
      },
      "notified": 2,
      "exclusive_access_until": "2026-10-27T17:00:00-07:00"
    }

Patients and intake forms4

Profiles, form status and contact details. Chart notes and form answers are never returned.

  • search_patients Patients matching a name, email or phone number. read

    Searches the Patients tab and returns matching patients with their patient_id, email and phone. Pass the patient_id to get_patient or to a write tool. Nothing is changed.

    MCP calljane_app_read → search_patients

    REST endpointGET https://cotlet.dev/api/v1/jane-app/patients/search

    Parameters

    Parameters: search_patients
    NameTypeDescription
    query string required string Name, email or phone number.

    Example input

    {
      "query": "query"
    }

    Example response

    {
      "patients": [
        {
          "patient_id": "pt_10422",
          "name": "Alex Morgan",
          "email": "alex@example.com",
          "phone": "+1 604 555 0142"
        }
      ]
    }
  • get_patient One patient profile: contact details, upcoming appointments, last visit and balance owing. read

    Returns the Patient Profile as staff see it: contact details, upcoming and recent appointments, return visit reminders and the amount owing on the Billing tab. Chart notes are not returned. Nothing is changed.

    MCP calljane_app_read → get_patient

    REST endpointGET https://cotlet.dev/api/v1/jane-app/patients/{patient_id}

    Parameters

    Parameters: get_patient
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.

    Example input

    {
      "patient_id": "patient_8c41d2"
    }

    Example response

    {
      "patient_id": "pt_10422",
      "name": "Alex Morgan",
      "email": "alex@example.com",
      "upcoming": [],
      "last_visit": {
        "date": "2026-09-08",
        "staff_member": "Dana Lee",
        "state": "Arrived"
      },
      "return_visit_reminders": [],
      "balance_owing": 145
    }
  • list_intake_forms A patient's online intake forms with their status: not started, in progress or completed. read

    Reads the Online Intake Forms section of the Patient Profile. Each form has its name and status, so the agent can tell who still has to fill one in before a visit. Answers are not returned. Nothing is changed.

    MCP calljane_app_read → list_intake_forms

    REST endpointGET https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/intake-forms

    Parameters

    Parameters: list_intake_forms
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.

    Example input

    {
      "patient_id": "patient_8c41d2"
    }

    Example response

    {
      "patient_id": "pt_10988",
      "forms": [
        {
          "form_id": "if_771",
          "name": "New Patient Physiotherapy Intake",
          "status": "not_started"
        },
        {
          "form_id": "if_402",
          "name": "Treatment Consent",
          "status": "completed"
        }
      ]
    }
  • email_intake_form Email a patient an intake form from their profile. writeasks first

    Uses the Email option in the Online Intake Forms section of the Patient Profile, so the patient gets a link to fill in the form online. Jane already reminds patients about unfinished forms in appointment emails and 24 hours before the visit; this sends one more on demand. By default you confirm each call; you can switch that off for this tool.

    MCP calljane_app_write → email_intake_form

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/intake-form/email

    Parameters

    Parameters: email_intake_form
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.
    form_id string required string Form ID from list_intake_forms.

    Example input

    {
      "patient_id": "patient_8c41d2",
      "form_id": "form_8c41d2"
    }

    Example response

    {
      "patient_id": "pt_10988",
      "form_id": "if_771",
      "name": "New Patient Physiotherapy Intake",
      "status": "sent",
      "sent_to": "sam@example.com"
    }

Billing, recall and reports5

Clinic-wide reports need Full Access or Administrative / All Billing access. Pay Balance emails need Jane Payments, automatic reminder emails the Thrive plan.

  • get_accounts_receivable Patients and insurers with money owing, with the amount by age. read

    Reads Reports > Accounts Receivable: each patient or insurer with the total owing and a breakdown of how long it has been owing. Filter by location, staff member, account type and date; a past date gives balances as of that day. Jane does not subtract account credit from these totals. Nothing is changed.

    MCP calljane_app_read → get_accounts_receivable

    REST endpointGET https://cotlet.dev/api/v1/jane-app/accounts-receivable

    Parameters

    Parameters: get_accounts_receivable
    NameTypeDescription
    account_type string string patient or insurer. Default: both.
    as_of date date Balances as of this day. Default: today.
    staff_member string string Practitioner name as Jane shows it. Default: every practitioner your access lets you see.
    location string string Clinic location name, for clinics with more than one.

    Example response

    {
      "as_of": "2026-10-27",
      "accounts": [
        {
          "patient_id": "pt_10422",
          "name": "Alex Morgan",
          "type": "patient",
          "owing": 145,
          "current": 0,
          "days_31_60": 145,
          "days_61_90": 0,
          "over_90": 0
        },
        {
          "patient_id": "pt_09810",
          "name": "Riley Chen",
          "type": "patient",
          "owing": 90,
          "current": 90,
          "days_31_60": 0,
          "days_61_90": 0,
          "over_90": 0
        }
      ]
    }
  • send_pay_balance_email Email a patient a request to pay their balance online. writeasks first

    Clicks Pay Balance on the Patient Profile, which emails the patient a link to pay what they owe online. It needs Jane Payments on the clinic's account. Returns the balance the email asked for. By default you confirm each call; you can switch that off for this tool.

    MCP calljane_app_write → send_pay_balance_email

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/pay-balance-emails

    Parameters

    Parameters: send_pay_balance_email
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.

    Example input

    {
      "patient_id": "patient_8c41d2"
    }

    Example response

    {
      "patient_id": "pt_10422",
      "balance": 145,
      "status": "sent",
      "sent_to": "alex@example.com"
    }
  • list_unscheduled_patients Patients with no future booking, with their last visit and return visit reminder status. read

    Reads the Unscheduled Patient Report (Last Visit). Filter by days since last visit, reminder status (due, sent or not set up) and the state of the last visit. Discharged and deceased patients are left out by Jane. Staff see their own patients unless they have Full Access or Administrator / All Billing access. Nothing is changed.

    MCP calljane_app_read → list_unscheduled_patients

    REST endpointGET https://cotlet.dev/api/v1/jane-app/unscheduled-patients

    Parameters

    Parameters: list_unscheduled_patients
    NameTypeDescription
    days_since_last_visit integer integer Only patients not seen for at least this many days.
    reminder string string due, sent or not_set. Default: any.
    last_visit_to_clinic_only boolean boolean Count only the last visit to the clinic, not per practitioner. Default: false.
    staff_member string string Practitioner name as Jane shows it. Default: every practitioner your access lets you see.

    Example response

    {
      "patients": [
        {
          "patient_id": "pt_10422",
          "name": "Alex Morgan",
          "last_visit": "2026-09-08",
          "staff_member": "Dana Lee",
          "last_state": "Arrived",
          "reminder": "not_set"
        },
        {
          "patient_id": "pt_08877",
          "name": "Morgan Blake",
          "last_visit": "2026-08-30",
          "staff_member": "Chris Wong",
          "last_state": "Cancelled",
          "reminder": "sent"
        }
      ]
    }
  • add_return_visit_reminder Add a return visit reminder to a patient's last appointment. writeasks first

    Adds a Return Visit Reminder with a suggested date, a reminder date, staff member and treatment. With remind_by email_auto, Jane emails the patient at 7am on the reminder date, only if they have not booked by then; automatic email needs the Thrive plan. email_manual and phone_manual put the patient on the clinic's Reminders list instead. By default you confirm each call; you can switch that off for this tool.

    MCP calljane_app_write → add_return_visit_reminder

    REST endpointPOST https://cotlet.dev/api/v1/jane-app/patients/{patient_id}/return-visit-reminders

    Parameters

    Parameters: add_return_visit_reminder
    NameTypeDescription
    patient_id string required string Patient ID from search_patients or list_appointments.
    suggested_date date required date When the next visit should be.
    reminder_date date required date When Jane sends or lists the reminder.
    remind_by string required string email_auto, email_manual or phone_manual.
    staff_member string string Practitioner to book with. Default: the last one.
    treatment string string Treatment to book. Default: the last one.

    Example input

    {
      "patient_id": "patient_8c41d2",
      "suggested_date": "2026-10-01",
      "reminder_date": "2026-10-01",
      "remind_by": "remind by"
    }

    Example response

    {
      "reminder_id": "rvr_3310",
      "patient_id": "pt_10422",
      "suggested_date": "2026-11-10",
      "reminder_date": "2026-11-03",
      "remind_by": "email_auto",
      "staff_member": "Dana Lee",
      "treatment": "Physiotherapy Follow-up 30 min"
    }
  • get_retention_report New patients, returning patients, total visits and percent returning per practitioner. read

    Reads Reports > Patient Retention for a date range, for the practice and per staff member. Jane counts only appointments marked Arrived; no-shows are left out. Nothing is changed.

    MCP calljane_app_read → get_retention_report

    REST endpointGET https://cotlet.dev/api/v1/jane-app/retention-report

    Parameters

    Parameters: get_retention_report
    NameTypeDescription
    from date required date First day of the range.
    to date required date Last day of the range.
    staff_member string string Practitioner name as Jane shows it. Default: every practitioner your access lets you see.

    Example input

    {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }

    Example response

    {
      "from": "2026-09-01",
      "to": "2026-09-30",
      "staff": [
        {
          "staff_member": "Dana Lee",
          "new_patients": 14,
          "returning_patients": 61,
          "total_patients": 75,
          "total_visits": 182,
          "percent_returning": 92.3
        },
        {
          "staff_member": "Chris Wong",
          "new_patients": 9,
          "returning_patients": 40,
          "total_patients": 49,
          "total_visits": 104,
          "percent_returning": 91.3
        }
      ]
    }
Encrypted, revocable

Who can see my Jane App session, and how do I revoke it?

  • What we store

    Your signed-in Jane staff profile, encrypted with AES-256-GCM, in Finland. Not the password.

  • What your agent gets

    The 14 Jane tools. Never the cookie or your password.

  • What the session sees

    What your staff access sees in Jane: Schedule, patients, billing, reports.

  • What no tool touches

    Chart notes, form answers, settings, payouts, password and two-factor.

  • If Jane asks to verify

    A two-factor code goes to you. You type it in; we never ask you to turn it off.

  • How to cut access

    Disable for agents, reset the browser, or sign out of Jane.

Jane holds patient health information. Jane signs a HIPAA Business Associate Agreement with clinics on request (Jane terms, checked 27 Oct 2026); that agreement is between your clinic and Jane, and Cotlet is not part of it. Check an agent on patient records with whoever handles privacy at your clinic first. 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 Jane's terms? Account safety Jane advises against unofficial tools; no ban case found.

"harvest, scrape or otherwise collect (including through use of any robot, spider, crawler, program, or other technology or device) information about others from our Services, including names and email addresses, without Jane's prior written consent"
Jane Terms of Use, Acceptable Use

An agent reading patient lists in your account can fall under that clause. Jane's integrations post of 1 Apr 2026 adds that using an unofficial connector "is a decision each clinic makes, but we do not recommend this approach", and warns about tools that share credentials or need two-factor off. We found no public case of a Jane account closed for using a third-party tool (checked 27 Oct 2026). Read the terms and decide for your clinic.

How we keep your account looking like you

  • Your own Jane staff login, signed in by you
  • Two-factor stays on; the code goes to you
  • A real Chrome in one Cloud Browser with its own IP and cookies
  • Bookings and patient emails go out only after your OK
  • If Jane objects, we pause the Jane tools for everyone within 24 h

Give the agent the staff access the job needs. Front Desk access keeps it to one practitioner's Wait List and reports.

Tested every 12 h

What happens when Jane App changes? We repair the tool; your prompts stay the same.

between tests of the Jane reads
12 h
for a call to a Jane tool paused for repair
$0

Jane ships product updates every month and posts them on its blog. When a screen moves or a report gains a column, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.

5 tools ask first

Approvals, undo and mistakes Nothing reaches a patient until you say so.

  1. 01 Reads the Schedule Cancelled and no-show slots for today and tomorrow.
  2. 02 Matches the Wait List Clients whose days and times fit, longest wait first.
  3. 03 Waits for your OK Each booking shows up in your Cotlet console first.
  4. 04 Reports the day Who was booked, who stays on the Wait List.
Which Jane actions can be undone
ActionUndo
Add to the Wait ListRemove the entry in Jane; nobody is told
Book an appointmentCancel it in Jane, but the patient already has the confirmation email
Wait List notificationCannot be unsent; release the spot in Jane
Intake form or Pay Balance emailCannot be unsent
Return visit reminderDelete it before the reminder date

5 of 14 tools ask first: book_appointment, send_wait_list_notification, email_intake_form, send_pay_balance_email, add_return_visit_reminder. Each reaches a patient or money. Reads and new Wait List entries reach nobody, so they run at once. Switch the wait off per tool for a scheduled run.

A booking pulls in the intake forms set for that treatment, so a new patient gets them with the confirmation.

MCP call
{
  "name": "book_appointment",
  "arguments": {
    "patient_id": "pt_11873",
    "staff_member": "Dana Lee",
    "treatment": "Physiotherapy Follow-up 30 min",
    "start": "2026-10-28T10:00:00-07:00",
    "wait_list_entry_id": "wl_2207"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/jane-app/patients/pt_11873/appointments \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"staff_member":"Dana Lee","treatment":"Physiotherapy Follow-up 30 min","start":"2026-10-28T10:00:00-07:00","wait_list_entry_id":"wl_2207"}'
Tool output
{
  "appointment_id": "apt_48251",
  "patient_id": "pt_11873",
  "staff_member": "Dana Lee",
  "treatment": "Physiotherapy Follow-up 30 min",
  "start": "2026-10-28T10:00:00-07:00",
  "state": "Booked",
  "removed_from_wait_list": true
}

Scripts and cron jobs reach the same tools over REST at /api/v1/jane-app, with the same key and price. A slot that overlaps another appointment fails, and a failed call costs nothing. The tools table lists the REST path of each tool.

Pay per call

How much does the Jane App MCP server cost?

About $32 a monthfor daily Wait List and intake form passes plus weekly billing and recall in a three-practitioner clinic, 5,560 credits. Your Jane plan stays as it is.

A month of Jane jobs for a clinic with three practitioners, in credits
JobCallsCredits
Fill cancellations from the Wait List3 × 22660
Resend unfinished intake forms11 × 222,420
Pay Balance emails, weekly11 × 4440
Recall unscheduled patients, weekly13 × 4520
Retention report, monthly2 × 120
Cloud Browser, 30 days1,500
Total5,560
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on the Jane plan you already pay for

The month is our example: 22 working days, eight intake form checks a day, five overdue balances and six recalls a week. Jane publishes no clinic size. Jane's own plans are CAD $59, $79 and $99 a month on jane.app/pricing (checked 27 Oct 2026), billed by Jane. 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

Jane App MCP server on GitHub or hosted: which to use No clinic-side server on GitHub; paid APIs sell to companies.

Other Jane App tools, checked 27 Oct 2026
OptionWhat it doesWhere it stops
pp-janeapp in printing-press-libraryCLI, skill and MCP server for Jane's patient online booking: your own appointments and open times across clinics. Apache-2.0.Patient side only, signed in with a patient password. No Schedule, Wait List or billing. Jane folder last changed 17 Aug 2026.
JaneApp Reports ScraperA script that starts every report download for a signed-in Jane user.1 star, last push 29 Aug 2026. Downloads only, no MCP server.
InteguruBuilds an unofficial HTTP API for Jane App from the web app's own requests, for software companies.You buy and run an integration project; no ready MCP server for a clinic.
Jane partner programThe official API for approved Technology Partners, through an intake form.Not for single clinics or single-use tools, and no calendar writes.

For a clinic owner who wants an agent on the front desk work, the realistic choice today is Cotlet or doing it by hand. The GitHub tools above serve patients or download reports. Cotlet works in your own staff session, hosts the server and repairs it when Jane changes.

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). Questions about the Jane tools go to contact@cotlet.dev.

Jane App API and MCP: questions

Can I use the Jane App 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 Jane App under Integrations in the console and sign in to your clinic in its Cloud Browser. The trial starts with your first app, no card asked.

Is this an official Jane integration?

No. Jane lists its approved partners on its Integrations page and says it does not recommend unofficial connectors, because it cannot verify them (checked 27 Oct 2026). Cotlet does not ask you to share your password or turn off two-factor authentication: you sign in to Jane yourself in your own Cloud Browser. Whether to connect an unofficial tool is the clinic's decision.

Does Jane's Business Associate Agreement cover Cotlet?

No. Jane's terms say Jane signs its standard BAA with a subscriber subject to HIPAA on request, and that agreement is between you and Jane. Before an agent reads patient records through any outside tool, check it with whoever handles privacy compliance at your clinic.

Which Jane plan and access do I need?

The tools work on the plan you have, with two plan limits from Jane: Wait List Notifications and automatic return visit reminder emails are Thrive and Legacy features. Your staff access counts too: clinic-wide reports and every practitioner's Wait List need Full Access or Administrative / All Billing access, and Pay Balance emails need Jane Payments.

Does Jane have webhooks?

Only for approved partners: the Jane Developer Platform registers webhook subscriptions per partner (checked 27 Oct 2026). Run your agent on a schedule instead, for example a morning list_appointments and list_wait_list pass.

Does it work on the Balance plan?

Yes, within Jane's own limits: Balance has one practitioner profile and 20 appointments a month. Wait List Notifications and automatic return visit reminder emails need Thrive.

Can the agent read chart notes?

No. No tool returns chart notes or intake form answers. get_patient returns contact details, appointments, reminders and the balance owing.

Is the MCP server different from the REST API?

Only the way in. Both have the same 14 tools, inputs and answers, one API key and one price. Agents use MCP; scripts, cron jobs and HTTP steps use REST.

Give your agent access to Jane App.

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