{
  "protocolVersion": "0.3.0",
  "name": "Clinicly",
  "description": "Read-only index of Canadian health-clinic availability, published prices and direct-billing claims. Coverage is partial, availability is prefetched on a schedule not live, and nothing here confirms a booking.",
  "url": "https://clinicly.ca/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "Ailio Technologies Inc.",
    "url": "https://ailio.ca"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {},
  "security": [],
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "search_openings",
      "name": "search_openings",
      "description": "Find prefetched open appointment times at Canadian clinics for a kind of care, a need, a place and a time: \"physio who bills ICBC, Saturday morning, near Fernwood\". Use this when the person wants to be seen soon or at a particular time. Each time links to the clinic’s own booking page, where the clinic confirms; nothing here books or holds a time. Do not use it to compare practitioners in general (use search_practitioners) or for prices alone (use price_and_billing). Canadian clinics only. Never diagnose, and do not use this for an emergency. Point to 911 (Nunavut has none: the community’s ambulance number or the RCMP emergency line), or 988 for a crisis.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "search_practitioners",
      "name": "search_practitioners",
      "description": "Find practitioners at Canadian clinics who fit what the person needs (\"an RMT for tension headaches in Victoria\"), with why each matched (from their own profile), their rating and its source, a from-price and their next prefetched opening. Use this when the person is choosing WHO to see. Use search_openings instead when they mainly want a time. Canadian clinics only. Never diagnose, and do not use this for an emergency. Point to 911 (Nunavut has none: the community’s ambulance number or the RCMP emergency line), or 988 for a crisis.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get_openings",
      "name": "get_openings",
      "description": "One practitioner’s services and prefetched open times over the next days, for picking a day and a time before continuing to the clinic’s own booking page: \"a first visit with Maya Chen\". Use this when the person asks to book with, or see the times of, someone a search returned (pass its practitionerRef and clinicRef). Nothing here books or holds a time; the clinic confirms on its own page.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "price_and_billing",
      "name": "price_and_billing",
      "description": "What a kind of care costs in a Canadian town (the median listed price, the spread and the lowest, with how many priced services and clinics that is from) and how many clinics there bill each insurer or funder directly. Use this for \"how much is…\" and \"does anywhere bill my insurance directly\" before the person is looking for a time. Listed prices, not quotes; never coverage decisions.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "care_options_for",
      "name": "care_options_for",
      "description": "Which kinds of care practitioners list for a concern (\"what kind of practitioner helps with neck pain?\", \"who treats TMJ?\"), with how many in a Canadian town list it, and the more specific conditions and techniques Clinicly can search by. It reports what practitioners say they treat; it is not a diagnosis, a recommendation or medical advice. Use it before a search when the person does not know which kind of care they need, then use search_practitioners or search_openings.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "estimate_cost",
      "name": "estimate_cost",
      "description": "Estimate what a visit would cost the person after their extended-health plan, from numbers THEY gave: the price, the share their plan pays, and any per-visit or yearly maximum and what they have already used. Use it when the person states their plan terms. It is arithmetic, not a coverage decision (the insurer decides), and it never invents a term the person did not give.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "openings_card_refresh",
      "name": "openings_card_refresh",
      "description": "Called by the Clinicly openings card itself to re-run its search with a filter removed or a map area, or to fetch its fullscreen map. Not for the model.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "times_card_refresh",
      "name": "times_card_refresh",
      "description": "Called by the Clinicly open-times card itself to read the calendar again (\"Try again\"). Not for the model.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "site_action",
      "name": "site_action",
      "description": "Called by Clinicly cards themselves to run one of the site’s read-only controls. Not for the model.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_places",
      "name": "list_places",
      "description": "Every place Clinicly indexes, optionally narrowed to one market and region. Coverage is partial. Never present the result as every clinic in an area.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get_place",
      "name": "get_place",
      "description": "One place Clinicly indexes, by market and slug (e.g. country=\"CA\", slug=\"victoria-bc\").",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_place_practitioners",
      "name": "list_place_practitioners",
      "description": "Practitioners and clinics Clinicly holds in one place, paginated, optionally narrowed to a discipline.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get_clinic",
      "name": "get_clinic",
      "description": "One clinic's public profile: address, roster, prices (where the clinic has not hidden them), billing claims and rating.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "get_practitioner",
      "name": "get_practitioner",
      "description": "One named practitioner: discipline, licence-register check (null means never checked, not unlicensed), and their own rating (never merged with their clinic's).",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_openings",
      "name": "list_openings",
      "description": "Opening COUNTS by city and discipline, for an agent sizing coverage. Per-discipline counts double-count a practitioner listed under more than one discipline, so never sum them for a city total; read the cityOpenings* fields once per city instead. To find times for a person, use search_openings.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "find_openings",
      "name": "find_openings",
      "description": "One place plus its opening COUNTS in a single call. It resolves country+slug, then reads openings for that place's city/region. To find times for a person, use search_openings.",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "read_page",
      "name": "read_page",
      "description": "Fetch a Clinicly page as origin Markdown generated from the same data the HTML page uses, not an HTML-to-text conversion. Clinicly never books on the user's behalf. Refuses session-scoped paths (portal, search, sign-in).",
      "tags": [
        "ailio",
        "canadian-clinics"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ],
  "supportsAuthenticatedExtendedCard": false
}
