Read Hint Health patients, memberships, plans, invoices and payments for direct primary care.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One customer invoice by id with its charges, location, owner, amounts in cents and payment status. GET /provider/customer_invoices/{id}.
A Hint id.
One customer invoice by id with its charges, location, owner, amounts in cents and payment status. GET /provider/customer_invoices/{id}.
| Argument | Type | Description |
|---|---|---|
| invoice_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice_id"
],
"properties": {
"invoice_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}One location by id (for example loc-ab12C345DeF6). GET /provider/locations/{id}.
| Argument | Type | Description |
|---|---|---|
| location_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location_id"
],
"properties": {
"location_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}One membership by id: plan, rates, dates, owner, member patients, cancellation and upcoming bills. GET /provider/memberships/{id}.
| Argument | Type | Description |
|---|---|---|
| membership_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"membership_id"
],
"properties": {
"membership_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}One patient by id (for example pat-ab12C345DeF6), protected health information: identity, contact, address, insurance, consents, memberships, sponsorships, emergency contact. The Social Security number is never returned. GET /provider/patients/{id}.
| Argument | Type | Description |
|---|---|---|
| patient_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"patient_id"
],
"properties": {
"patient_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}The practice this API key belongs to: id, name, address, email, phones, website and logo. GET /provider/practice.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One practitioner by id. GET /provider/practitioners/{id}.
| Argument | Type | Description |
|---|---|---|
| practitioner_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"practitioner_id"
],
"properties": {
"practitioner_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}List the practice's charge item catalog (the services and products a charge is made of): code, name, price in cents, category, stock. GET /provider/charge_items.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
}
}
}List membership coupons: code, discount (cents or percent), duration, redeemable window and archive state. GET /provider/coupons.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| archived | boolean | true = only archived coupons, false = only unarchived (default: all). |
| redeemable | boolean | true = only coupons that can be redeemed now. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"archived": {
"type": "boolean",
"description": "true = only archived coupons, false = only unarchived (default: all)."
},
"redeemable": {
"type": "boolean",
"description": "true = only coupons that can be redeemed now."
}
}
}List the payments made on one customer invoice: amount in cents, date, status, error message, memo, source and whether it was recorded outside Hint. GET /provider/customer_invoices/{id}/payments.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| invoice_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"invoice_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}List customer invoices (what patients are billed) with number, date, status, amounts in cents (total, due, paid), charges, location and owner. Filter by owner patient, location, status or created/updated time. GET /provider/customer_invoices.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| owner | string | Patient id of the person who pays the invoice. |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| status | array | Only these statuses. cancelled = voided. |
| location | string | Location id. |
| created_to | string | Created at or before. |
| updated_to | string | Updated at or before. |
| created_from | string | Created at or after (ISO 8601 date or date-time). |
| updated_from | string | Updated at or after. |
List the practice's locations with address, phone, virtual flag and location group. Optionally search near a postal code. GET /provider/locations.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| distance | integer | Search radius in miles (Hint default 20 when a postal code is given). |
| near_zip | string | Postal code at the center of a distance search. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"distance": {
"type": "integer",
"maximum": 500,
"description": "Search radius in miles (Hint default 20 when a postal code is given).",
"exclusiveMinimum": 0
},
"near_zip": {
"type": "string",
"pattern": "^[A-Za-z0-9 -]{3,10}$",
"description": "Postal code at the center of a distance search."
}
}
}List memberships: status, enrollment status, dates, rates in cents, plan, coupon, owner, member patients and upcoming bills. Filter by created or updated time (ISO 8601). GET /provider/memberships.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| created_to | string | Created at or before. |
| updated_to | string | Updated at or before. |
| created_from | string | Created at or after (ISO 8601 date or date-time). |
| updated_from | string | Updated at or after. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"created_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Created at or before."
},
"updated_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Updated at or before."
},
"created_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Created at or after (ISO 8601 date or date-time)."
},
"updated_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Updated at or after."
}
}
}List a patient's account credits: amount, remaining balance, category and reason. GET /provider/patients/{patient_id}/credits.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| patient_id* | string | A Hint id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"patient_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"patient_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "A Hint id."
}
}
}List patients (protected health information) one page at a time: name, date of birth, contact, address, membership status, autopay, past-due balance, practitioner and location. Archived patients are left out unless archived is true. The Social Security number is never returned. There is no bulk export: page with limit and offset. GET /provider/patients.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| archived | boolean | true = only archived patients (default: only active patients). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"archived": {
"type": "boolean",
"description": "true = only archived patients (default: only active patients)."
}
}
}List the practice's membership plans (id, name, type: company, retail or sponsor_fixed_fee). GET /provider/plans.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| plan_type | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"plan_type": {
"enum": [
"company",
"retail",
"sponsor_fixed_fee"
],
"type": "string"
}
}
}List the practice's practitioners with bio, NPI, specialties, panel size and limit, enrollment settings and locations. Optionally search near a postal code. GET /provider/practitioners.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Results to skip (default 0). Pass the previous reply's next_offset. |
| distance | integer | Search radius in miles (Hint default 20 when a postal code is given). |
| near_zip | string | Postal code at the center of a distance search. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"distance": {
"type": "integer",
"maximum": 500,
"description": "Search radius in miles (Hint default 20 when a postal code is given).",
"exclusiveMinimum": 0
},
"near_zip": {
"type": "string",
"pattern": "^[A-Za-z0-9 -]{3,10}$",
"description": "Postal code at the center of a distance search."
}
}
}Find existing patients that match a first and last name, optionally narrowed by email, date of birth or middle name. Reads only: nothing is created. Use it to look a patient up by name. POST /provider/patients/matching.
| Argument | Type | Description |
|---|---|---|
| dob | string | Date of birth, yyyy-mm-dd. |
| string | ||
| last_name* | string | |
| first_name* | string | |
| middle_name | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"first_name",
"last_name"
],
"properties": {
"dob": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of birth, yyyy-mm-dd."
},
"email": {
"type": "string",
"maxLength": 254,
"minLength": 3
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"middle_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"owner": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "Patient id of the person who pays the invoice."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Results to skip (default 0). Pass the previous reply's next_offset."
},
"status": {
"type": "array",
"items": {
"enum": [
"draft",
"issued",
"sent",
"retrying",
"paid",
"disputed",
"bad_debt",
"cancelled"
],
"type": "string"
},
"maxItems": 8,
"description": "Only these statuses. cancelled = voided."
},
"location": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,100}$",
"description": "Location id."
},
"created_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Created at or before."
},
"updated_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Updated at or before."
},
"created_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Created at or after (ISO 8601 date or date-time)."
},
"updated_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Updated at or after."
}
}
}