{"id":300840,"recorded_at":"2026-10-26T22:28:04.729758Z","observed_at":"2026-10-26T22:28:04.729599Z","subject_kind":"endpoint","subject":"2a676e65-1e9d-44ea-a65e-f77e7013629f","kind":"mcp.tools","method":"probe.mcp/1","body":{"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"}]},"body_sha256":"886784611e1a570c892a370b1d581ee0b6f44d93bbe7223a028cdeae00d11621","prev_id":null,"leaf":"0x1c5cab392c5553e75e3980613ec3999761cf219f9d356c703d85e67bcffcb0f4","leaf_text":"{\"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\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0x1c5c99c3fe225cf7a6028a80dd22e6bef05843614c36e755e00990810c59bd6c","0x3400b2ccf8a91d37763575b3c3d1394ceb1dcd29a4bd97ceb7078557933557a6","0xa5afb6a9b50aa98fece48150836dc5792ce5e7c76447614b969928dfc50d1cf6","0x50dce4d25f870c0f42d99175bb24dca7fa5138da83670c79b487e79d4add7312","0xde6931fb54ede4ab094e321062b5523d65468aae3cf54996aa5dab2b4ac343e9","0x544818d57477857fd2e17bf3b2b27ef172acf008d5cf0c6ffc78a453626992a0","0xa32fa52eb6e99021ef275bb88bfd38cd8e5ee027b6d2c3db65e7ed4ceaf86135","0x134bdfc912c8f8607241d1a29bfdd50ea356f1e01614be0bc6d4f92cc3a24888","0xaff15aef61ef405fe04e90c269656f333927fd6146e06c2a00ea1c37fe1fed33","0xff0b07a758b1dcaf0eebbded2fa92a070a531479a35a33200105774bbc143b25","0xa71cc4f892400c8dd1d9d33faa6b7466eba77734b3716286b78aa51d46ff4255","0x7ab2e7902b312a74cfdbc32b2906ced29b1fb9dc4280b5378e8eb181ad88686e","0xe00c7829e46541e49a308807d357db902e06eff941a833217a8f0dbccd3964f1","0x770e4376196188c7fc9ec40f8e218dc0d1cb92bba5fe0425a0edce27ca9a997f","0x60582ab4b41e72eb70eb0bce07fbf0fb4d2b62a8bad5be50f5d16d511adc746c","0xc6a4d7899a0f442958e26505011190b7cff2483611c1b94eba9043e0ba9ac36e","0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13","0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}