← The evidence ledger
Evidence row 300840
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 2a676e65-1e9d-44ea-a65e-f77e7013629f
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 886784611e1a570c892a370b1d581ee0b6f44d93bbe7223a028cdeae00d11621
- Leaf
- 0x1c5cab392c5553e75e3980613ec3999761cf219f9d356c703d85e67bcffcb0f4
What was observed
{
"count": 19,
"tools": [
{
"description": "Add a tag to a client. The tag is created if it does not exist; adding one the client already has is a no-op. IntakeQ: POST /clientTags.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client_id": {
"description": "The client's numeric id.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"tag": {
"description": "The tag text.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"client_id",
"tag"
],
"type": "object"
},
"name": "intakeq_add_client_tag"
},
{
"description": "Cancel an appointment, with an optional reason. This changes the client's booking and cannot be undone through the API — book a new appointment to replace it. IntakeQ: POST /appointments/cancellation.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"appointment_id": {
"description": "The appointment's id.",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"reason": {
"description": "Why it was canceled.",
"maxLength": 1000,
"type": "string"
}
},
"required": [
"appointment_id"
],
"type": "object"
},
"name": "intakeq_cancel_appointment"
},
{
"description": "Book an appointment in the PracticeQ scheduler. Get PractitionerId, ServiceId and LocationId from intakeq_get_booking_settings. All fields are required by IntakeQ. Status must be Confirmed or WaitingConfirmation; SendClientEmailNotification may be true only when Status is Confirmed. IntakeQ: POST /appointments.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ClientId": {
"description": "The client's numeric id.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"LocationId": {
"description": "The location's id.",
"minLength": 1,
"type": "string"
},
"PractitionerId": {
"description": "The practitioner's id.",
"minLength": 1,
"type": "string"
},
"ReminderType": {
"description": "Reminder channel: Sms, Email, Voice or OptOut.",
"enum": [
"Sms",
"Email",
"Voice",
"OptOut"
],
"type": "string"
},
"SendClientEmailNotification": {
"description": "Email the client (only allowed when Status=Confirmed).",
"type": "boolean"
},
"ServiceId": {
"description": "The service's id.",
"minLength": 1,
"type": "string"
},
"Status": {
"description": "Initial status.",
"enum": [
"Confirmed",
"WaitingConfirmation"
],
"type": "string"
},
"UtcDateTime": {
"description": "Start time as a UTC Unix timestamp in ms.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"PractitionerId",
"ClientId",
"ServiceId",
"LocationId",
"Status",
"UtcDateTime",
"SendClientEmailNotification",
"ReminderType"
],
"type": "object"
},
"name": "intakeq_create_appointment"
},
{
"description": "Fetch one appointment: client, practitioner, service, location, start/end, status, price, invoice, telehealth link and cancellation details. IntakeQ: GET /appointments/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"appointment_id": {
"description": "The appointment's id.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"appointment_id"
],
"type": "object"
},
"name": "intakeq_get_appointment"
},
{
"description": "List the scheduler's locations, services (with duration and price) and practitioners — the ids you need to create an appointment. IntakeQ: GET /appointments/settings.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "intakeq_get_booking_settings"
},
{
"description": "List the diagnoses recorded for one client: code, description, start/end date and the treatment note they came from. IntakeQ: GET /client/{clientId}/diagnoses.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client_id": {
"description": "The client's numeric id (ClientId / ClientNumber).",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"client_id"
],
"type": "object"
},
"name": "intakeq_get_client_diagnoses"
},
{
"description": "Fetch one intake questionnaire with every question and answer, its consent forms and linked appointment. IntakeQ: GET /intakes/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"intake_id": {
"description": "The intake's id (a GUID).",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"intake_id"
],
"type": "object"
},
"name": "intakeq_get_intake"
},
{
"description": "Fetch one invoice: line items, taxes, discounts, payments, totals and amount due. IntakeQ: GET /invoices/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"invoice_id": {
"description": "The invoice's id.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"invoice_id"
],
"type": "object"
},
"name": "intakeq_get_invoice"
},
{
"description": "Fetch one treatment note with every question and answer and its linked appointment. IntakeQ: GET /notes/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"note_id": {
"description": "The note's id (a GUID).",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"note_id"
],
"type": "object"
},
"name": "intakeq_get_note"
},
{
"description": "Query appointments by client name/email, date range, status, practitioner or last-modified date. Max 100 per page. IntakeQ: GET /appointments.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client": {
"description": "Client name or email (partial matches).",
"type": "string"
},
"deleted_only": {
"description": "true = only appointments deleted in the last 10 days.",
"type": "boolean"
},
"end_date": {
"description": "Appointments on or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"page": {
"description": "Page number (1, 2, ...). Each page holds at most 100 records.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"practitioner_email": {
"description": "Only this practitioner's appointments.",
"type": "string"
},
"start_date": {
"description": "Appointments on or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"status": {
"description": "Only appointments in this status.",
"enum": [
"Confirmed",
"Canceled",
"WaitingConfirmation",
"Declined",
"Missed"
],
"type": "string"
},
"updated_since": {
"description": "Only appointments modified after this date (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_list_appointments"
},
{
"description": "Search the practice's clients (patients) by name, email or client number, by created/updated date range, by external id, or by a custom field. Without include_profile it returns Name, Email, Phone and ClientNumber; with include_profile=true it returns the full profile (address, insurance, tags, custom fields, linked clients). Max 100 per page. IntakeQ: GET /clients.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"custom_fields": {
"additionalProperties": {
"type": "string"
},
"description": "Match on custom fields: { \"<FieldId>\": \"<value>\" } (sent as custom.<FieldId>=<value>).",
"propertyNames": {
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"type": "string"
},
"type": "object"
},
"date_created_end": {
"description": "Created on or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"date_created_start": {
"description": "Created on or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"date_updated_end": {
"description": "Updated on or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"date_updated_start": {
"description": "Updated on or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"deleted_only": {
"description": "true = only clients deleted in the last 10 days.",
"type": "boolean"
},
"external_client_id": {
"description": "Look up by your external client id.",
"type": "string"
},
"include_profile": {
"description": "true = return the full client profile.",
"type": "boolean"
},
"page": {
"description": "Page number (1, 2, ...). Each page holds at most 100 records.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Client name, email, or numeric client id.",
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_list_clients"
},
{
"description": "Query submitted intake questionnaires (summaries: client, status, questionnaire, practitioner, dates). By default only completed forms; set all=true for every status (Sent, Partial, Completed, Offline). Max 100 per page. IntakeQ: GET /intakes/summary.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"description": "true = return intakes of every status, not only completed.",
"type": "boolean"
},
"client": {
"description": "Client name or email (partial matches).",
"type": "string"
},
"client_id": {
"description": "Only this client's intakes.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"deleted_only": {
"description": "true = only intakes deleted in the last 10 days.",
"type": "boolean"
},
"end_date": {
"description": "On or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"external_client_id": {
"description": "Only intakes for this external client id.",
"type": "string"
},
"page": {
"description": "Page number (1, 2, ...). Each page holds at most 100 records.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"start_date": {
"description": "On or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"updated_since": {
"description": "Only intakes updated after this date (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_list_intakes"
},
{
"description": "Query invoices by client, issue date range, status, practitioner or last-updated range. Each invoice includes items, payments and amounts due/paid. Max 100 per page. IntakeQ: GET /invoices.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client_id": {
"description": "Only this client's invoices (numeric client id).",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"end_date": {
"description": "Invoices on or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"last_updated_end_date": {
"description": "Changed on or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"last_updated_start_date": {
"description": "Changed on or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"page": {
"description": "Page number (1, 2, ...). Each page holds at most 100 records.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"practitioner_email": {
"description": "Only this practitioner's invoices.",
"type": "string"
},
"start_date": {
"description": "Invoices on or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"status": {
"description": "Only invoices in this status.",
"enum": [
"Draft",
"Scheduled",
"Unpaid",
"Paid",
"PastDue",
"Refunded",
"Forgiven",
"Canceled"
],
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_list_invoices"
},
{
"description": "Query treatment note summaries by client, lock status, date range or last-updated date. Max 100 per page. IntakeQ: GET /notes/summary.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client": {
"description": "Client name or email (partial matches).",
"type": "string"
},
"client_id": {
"description": "Only this client's notes.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"deleted_only": {
"description": "true = only notes deleted in the last 10 days.",
"type": "boolean"
},
"end_date": {
"description": "On or before (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"page": {
"description": "Page number (1, 2, ...). Each page holds at most 100 records.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"start_date": {
"description": "On or after (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"status": {
"anyOf": [
{
"const": 1,
"type": "number"
},
{
"const": 2,
"type": "number"
}
],
"description": "1 = locked notes, 2 = unlocked notes."
},
"updated_since": {
"description": "Only notes updated after this date (yyyy-MM-dd).",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_list_notes"
},
{
"description": "List the practitioners in the account (id, name, email, external id). IntakeQ: GET /practitioners.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "intakeq_list_practitioners"
},
{
"description": "List the intake questionnaire templates in the account (id, name, archived, anonymous) — the ids you need to send one. IntakeQ: GET /questionnaires.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "intakeq_list_questionnaires"
},
{
"description": "Create a client, or update one. With ClientId the existing client is updated. WITHOUT ClientId IntakeQ still tries to match an existing client by first name + email (or first name + phone) and updates that one instead of creating a duplicate. For updates, fetch the full profile first (intakeq_list_clients with include_profile=true) and send it back with your changes, so no field is unintentionally cleared. Field names are IntakeQ's own. Dates are Unix timestamps in milliseconds. IntakeQ: POST /clients.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"AdditionalInformation": {
"type": "string"
},
"Address": {
"description": "Full address, or send the components below instead.",
"type": "string"
},
"Archived": {
"type": "boolean"
},
"City": {
"type": "string"
},
"ClientId": {
"description": "Update this existing client.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"Country": {
"type": "string"
},
"CustomFields": {
"description": "Custom field values (FieldId + Value).",
"items": {
"properties": {
"FieldId": {
"description": "The custom field's id.",
"minLength": 1,
"type": "string"
},
"Text": {
"description": "The field's label (optional).",
"type": "string"
},
"Value": {
"description": "The value to store.",
"type": "string"
}
},
"required": [
"FieldId",
"Value"
],
"type": "object"
},
"type": "array"
},
"DateOfBirth": {
"description": "Unix timestamp in ms.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"Email": {
"type": "string"
},
"ExternalClientId": {
"type": "string"
},
"FirstName": {
"type": "string"
},
"Gender": {
"type": "string"
},
"HomePhone": {
"type": "string"
},
"LastName": {
"type": "string"
},
"MaritalStatus": {
"type": "string"
},
"MiddleName": {
"type": "string"
},
"MobilePhone": {
"type": "string"
},
"Name": {
"description": "Full name.",
"type": "string"
},
"Phone": {
"type": "string"
},
"PostalCode": {
"type": "string"
},
"PractitionerId": {
"description": "Assign to this practitioner.",
"type": "string"
},
"PrimaryInsuranceCompany": {
"type": "string"
},
"PrimaryInsuranceGroupNumber": {
"type": "string"
},
"PrimaryInsuranceHolderDateOfBirth": {
"description": "Unix timestamp in ms.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"PrimaryInsuranceHolderName": {
"type": "string"
},
"PrimaryInsurancePolicyNumber": {
"type": "string"
},
"PrimaryInsuranceRelationship": {
"type": "string"
},
"SecondaryInsuranceCompany": {
"type": "string"
},
"SecondaryInsuranceGroupNumber": {
"type": "string"
},
"SecondaryInsuranceHolderDateOfBirth": {
"description": "Unix timestamp in ms.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"SecondaryInsuranceHolderName": {
"type": "string"
},
"SecondaryInsurancePolicyNumber": {
"type": "string"
},
"SecondaryInsuranceRelationship": {
"type": "string"
},
"StateShort": {
"type": "string"
},
"StreetAddress": {
"type": "string"
},
"UnitNumber": {
"type": "string"
},
"WorkPhone": {
"type": "string"
}
},
"type": "object"
},
"name": "intakeq_save_client"
},
{
"description": "Send an intake questionnaire to a client by email or SMS. This MESSAGES THE CLIENT. Identify the client by ClientId, or by ClientName plus ClientEmail and/or ClientPhone (omit ClientEmail to force SMS). PractitionerId is optional. Returns the new intake. IntakeQ: POST /intakes/send.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ClientEmail": {
"description": "Email delivery address.",
"type": "string"
},
"ClientId": {
"description": "An existing client's numeric id.",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"ClientName": {
"description": "First and last name, if not using ClientId.",
"type": "string"
},
"ClientPhone": {
"description": "SMS delivery number.",
"type": "string"
},
"ExternalClientId": {
"description": "Partners only.",
"type": "string"
},
"PractitionerId": {
"description": "Practitioner to associate; defaults to the client's.",
"type": "string"
},
"QuestionnaireId": {
"description": "The questionnaire template id (intakeq_list_questionnaires).",
"minLength": 1,
"type": "string"
}
},
"required": [
"QuestionnaireId"
],
"type": "object"
},
"name": "intakeq_send_questionnaire"
},
{
"description": "Change an appointment's time, service, location, status or reminder type. Id and UtcDateTime are required (send the current time to keep it); include only the other fields you are changing. The client and practitioner cannot be changed, and a Confirmed appointment cannot go back to WaitingConfirmation. IntakeQ: PUT /appointments.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"Id": {
"description": "The appointment's id.",
"minLength": 1,
"type": "string"
},
"LocationId": {
"description": "New location id.",
"type": "string"
},
"ReminderType": {
"enum": [
"Sms",
"Email",
"Voice",
"OptOut"
],
"type": "string"
},
"SendClientEmailNotification": {
"description": "Email the client about the change.",
"type": "boolean"
},
"ServiceId": {
"description": "New service id.",
"type": "string"
},
"Status": {
"description": "New status.",
"enum": [
"Confirmed",
"WaitingConfirmation"
],
"type": "string"
},
"UtcDateTime": {
"description": "Start time as a UTC Unix timestamp in ms (required even if unchanged).",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"Id",
"UtcDateTime"
],
"type": "object"
},
"name": "intakeq_update_appointment"
}
]
}What the leaf hashes
{"body":"886784611e1a570c892a370b1d581ee0b6f44d93bbe7223a028cdeae00d11621","id":300840,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793053684729599,"prev":null,"subject":"2a676e65-1e9d-44ea-a65e-f77e7013629f","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0x1c5c99c3fe225cf7a6028a80dd22e6bef05843614c36e755e00990810c59bd6c
- 0x3400b2ccf8a91d37763575b3c3d1394ceb1dcd29a4bd97ceb7078557933557a6
- 0xa5afb6a9b50aa98fece48150836dc5792ce5e7c76447614b969928dfc50d1cf6
- 0x50dce4d25f870c0f42d99175bb24dca7fa5138da83670c79b487e79d4add7312
- 0xde6931fb54ede4ab094e321062b5523d65468aae3cf54996aa5dab2b4ac343e9
- 0x544818d57477857fd2e17bf3b2b27ef172acf008d5cf0c6ffc78a453626992a0
- 0xa32fa52eb6e99021ef275bb88bfd38cd8e5ee027b6d2c3db65e7ed4ceaf86135
- 0x134bdfc912c8f8607241d1a29bfdd50ea356f1e01614be0bc6d4f92cc3a24888
- 0xaff15aef61ef405fe04e90c269656f333927fd6146e06c2a00ea1c37fe1fed33
- 0xff0b07a758b1dcaf0eebbded2fa92a070a531479a35a33200105774bbc143b25
- 0xa71cc4f892400c8dd1d9d33faa6b7466eba77734b3716286b78aa51d46ff4255
- 0x7ab2e7902b312a74cfdbc32b2906ced29b1fb9dc4280b5378e8eb181ad88686e
- 0xe00c7829e46541e49a308807d357db902e06eff941a833217a8f0dbccd3964f1
- 0x770e4376196188c7fc9ec40f8e218dc0d1cb92bba5fe0425a0edce27ca9a997f
- 0x60582ab4b41e72eb70eb0bce07fbf0fb4d2b62a8bad5be50f5d16d511adc746c
- 0xc6a4d7899a0f442958e26505011190b7cff2483611c1b94eba9043e0ba9ac36e
- 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
- 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae