{"id":301502,"recorded_at":"2026-10-26T22:35:19.140944Z","observed_at":"2026-10-26T22:35:19.140804Z","subject_kind":"endpoint","subject":"d4908eb4-d465-4c29-985b-38bcbf9ee52b","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":24,"tools":[{"description":"One contact by Spruce contact id (entity_…): demographics, phones, emails, tags, custom and organization fields, integration links. GET /contacts/{contactId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"contact_id":{"description":"The contact id (e.g. \"entity_0E5QDGJC03000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["contact_id"],"type":"object"},"name":"sprucehealth_get_contact"},{"description":"One conversation by id (t_…). GET /conversations/{conversationId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"conversation_id":{"description":"The conversation id (e.g. \"t_0E5QDJJC03000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["conversation_id"],"type":"object"},"name":"sprucehealth_get_conversation"},{"description":"One conversation item (message, note, call, voicemail…) by id (ti_…). GET /conversationItems/{conversationItemId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"conversation_item_id":{"description":"The conversation item id (e.g. \"ti_0D4QABCC06000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["conversation_item_id"],"type":"object"},"name":"sprucehealth_get_conversation_item"},{"description":"One organization member (teammate, team or the organization) by id. GET /organization/members/{memberId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"member_id":{"description":"The member id (e.g. \"entity_0D4QABCC06000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["member_id"],"type":"object"},"name":"sprucehealth_get_member"},{"description":"Your Spruce organization (id and name). The id is the owner/member id used by other objects. Good first call. GET /organization.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"sprucehealth_get_organization"},{"description":"One phone line by id (pd_…). GET /phonelines/{phonelineId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"phone_line_id":{"description":"The phone line id (e.g. \"pd_26RRC7PQ6JG00\").","maxLength":200,"minLength":1,"type":"string"}},"required":["phone_line_id"],"type":"object"},"name":"sprucehealth_get_phone_line"},{"description":"The full transcription text and its summary (if any) for a transcription id (the transcriptionId on a call/voicemail attachment). Status pending/completed/failed/noSpeech. GET /transcriptions/{transcriptionId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"transcription_id":{"description":"The transcription id (from a conversation item's audio attachment).","maxLength":200,"minLength":1,"type":"string"}},"required":["transcription_id"],"type":"object"},"name":"sprucehealth_get_transcription"},{"description":"The conversations (secure, SMS/phone, email, fax…) associated with one contact. GET /contacts/{contactId}/conversations.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"contact_id":{"description":"The contact id (e.g. \"entity_0E5QDGJC03000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["contact_id"],"type":"object"},"name":"sprucehealth_list_contact_conversations"},{"description":"The organization-wide contact fields shown on every contact. Paged; totalCount included. GET /contacts/fields.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_contact_fields"},{"description":"Links between a contact and external systems (Elation, Hint, athena, custom): type, external id, url. GET /contacts/{contactId}/integrationlinks.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"contact_id":{"description":"The contact id (e.g. \"entity_0E5QDGJC03000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["contact_id"],"type":"object"},"name":"sprucehealth_list_contact_integration_links"},{"description":"All contact tags of the organization. Paged with hasMore/paginationToken; totalCount included. GET /contacts/tags.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_contact_tags"},{"description":"Contacts of the organization (patients, professionals, clinics): name, date of birth, phones, emails, tags, custom fields, integration links. Paged with hasMore/paginationToken; totalCount included. Use sprucehealth_search_contacts to find someone. GET /contacts.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_contacts"},{"description":"The items (messages, internal notes, calls, voicemails, faxes, attachments with short-lived signed URLs) in one conversation. Order newest_first (default) or oldest_first; start_from = only items created after that time. Paged with hasMore/paginationToken; totalCount is a best-effort count. GET /conversations/{conversationId}/items.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"conversation_id":{"description":"The conversation id (e.g. \"t_0E5QDJJC03000\").","maxLength":200,"minLength":1,"type":"string"},"order":{"description":"Order of the items (default newest_first).","enum":["newest_first","oldest_first"],"type":"string"},"page_size":{"description":"Results per page (1-200). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":200,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"},"start_from":{"description":"Only items created after this RFC 3339 date-time (with zone).","type":"string"}},"required":["conversation_id"],"type":"object"},"name":"sprucehealth_list_conversation_items"},{"description":"Messages scheduled to be sent later in one conversation (read only; nothing is sent or cancelled). GET /conversations/{conversationId}/scheduledmessages.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"conversation_id":{"description":"The conversation id (e.g. \"t_0E5QDJJC03000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["conversation_id"],"type":"object"},"name":"sprucehealth_list_conversation_scheduled_messages"},{"description":"All conversation tags of the organization. Paged; totalCount included. GET /conversations/tags.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_conversation_tags"},{"description":"Conversations of the organization (title, type, tags, archived, assignee, participants, last message time), ordered by creation or last message. With start_from, only conversations whose ordering time is at or after it (useful for 'what changed since…'). Eventually consistent. Paged; give start_from OR pagination_token, not both. GET /conversations.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"order_by":{"description":"Order by creation time or last message time (default last_message).","enum":["created","last_message"],"type":"string"},"page_size":{"description":"Results per page (1-200). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":200,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"},"start_from":{"description":"Only conversations whose ordering time is at or after this RFC 3339 date-time (with zone).","type":"string"}},"type":"object"},"name":"sprucehealth_list_conversations"},{"description":"The organization's own channels: Spruce phone and fax numbers, email addresses and Spruce Links, with their owner and members. GET /internalendpoints.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"sprucehealth_list_internal_endpoints"},{"description":"All members of the organization: teammates (name, email, admin, suspended), teams and the organization itself. Paged with hasMore/paginationToken; totalCount included. GET /organization/members.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (2-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":2,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_members"},{"description":"All phone lines of the organization (id, name); totalCount included. GET /phonelines.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"sprucehealth_list_phone_lines"},{"description":"Who has read one conversation item and when they first read it (oldest first). GET /conversationItems/{conversationItemId}/readReceipts.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"conversation_item_id":{"description":"The conversation item id (e.g. \"ti_0D4QABCC06000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["conversation_item_id"],"type":"object"},"name":"sprucehealth_list_read_receipts"},{"description":"Saved message templates (private and organization-wide): title, text, internal/shared flags. Paged with hasMore/paginationToken. GET /savedmessages.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_saved_messages"},{"description":"All messages scheduled to be sent from the organization (read only). Paged with hasMore/paginationToken; totalCount included. GET /scheduledmessages.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"}},"type":"object"},"name":"sprucehealth_list_scheduled_messages"},{"description":"The members of one team (team ids come from sprucehealth_list_members, type 'team'). Paged. GET /teams/{teamId}/members.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"},"team_id":{"description":"The team id (e.g. \"entity_0D4QABCC06000\").","maxLength":200,"minLength":1,"type":"string"}},"required":["team_id"],"type":"object"},"name":"sprucehealth_list_team_members"},{"description":"Find contacts by free text and/or filters (category, tags, name, phone, email, invite state, created time). Filters combine with AND; values inside one filter match ANY (tags can use all/none). Paged; totalCount with totalCountRelation (eq = exact, gte = lower bound). A read: POST /contacts/search changes nothing.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"categories":{"description":"Contact categories to include.","items":{"enum":["patient","professional","clinic","unknown"],"type":"string"},"maxItems":4,"type":"array"},"created_from":{"description":"Only contacts added at or after this time (RFC 3339 with zone).","type":"string"},"created_to":{"description":"Only contacts added at or before this time (RFC 3339 with zone).","type":"string"},"email_addresses":{"description":"Email addresses.","items":{"format":"email","maxLength":320,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"maxItems":20,"type":"array"},"family_name":{"description":"Family (last) name.","maxLength":200,"type":"string"},"free_text":{"description":"Free-text query (name, phone, email…).","maxLength":500,"type":"string"},"given_name":{"description":"Given (first) name.","maxLength":200,"type":"string"},"invite_states":{"description":"Spruce account/invite state.","items":{"enum":["has_account","invited","not_invited"],"type":"string"},"maxItems":3,"type":"array"},"page_size":{"description":"Results per page (1-500). Keep it small (e.g. 25-50) for long records: an oversized page is cut, but the Paging part with the cursor always stays whole.","maximum":500,"minimum":1,"type":"integer"},"pagination_token":{"description":"The paginationToken from the previous page's reply (when hasMore is true).","maxLength":4096,"minLength":1,"type":"string"},"phone_numbers":{"description":"Phone numbers, e.g. 2065551234 or +12065551234.","items":{"maxLength":40,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"tags":{"description":"Contact tag text values (the `value` of a tag from sprucehealth_list_contact_tags).","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":50,"type":"array"},"tags_match":{"description":"How the tags combine: any (default), all, or none (exclude).","enum":["any","all","none"],"type":"string"}},"type":"object"},"name":"sprucehealth_search_contacts"}]},"body_sha256":"9a848cfaeac836908e314dab0bdf3eb90cf3172881cfe27f0b1287dc91b67027","prev_id":null,"leaf":"0xa49e01e61d76e49ffb8721ded1cfa0af9ab09ebb03ab85e9de2595999a4830df","leaf_text":"{\"body\":\"9a848cfaeac836908e314dab0bdf3eb90cf3172881cfe27f0b1287dc91b67027\",\"id\":301502,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793054119140804,\"prev\":null,\"subject\":\"d4908eb4-d465-4c29-985b-38bcbf9ee52b\",\"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":["0xa49d4b4f0d3b7cc618fa8aa844617f15dd88e788879de40456d042ce6427e4f5","0x16bab4c9abcfe4e349c8d0ad66e8ff657783e84bb9e9132bb02a08cbddfd527a","0x4534c7662aed5ae7427db404cd60848b38a8162a2cd3242a93b3475a5ce8a3b8","0xc8e6fce9f835d23930cc77ae9437df86fe91971626888907b0aa2152781985f8","0x079554627ef049571d98254d9fd5ddf3d6bb069b2a665fc735167654b645f703","0xea8853b937b6e95c535946305fbbdf921bb4b9840427aa64e93aa3778494d798","0x8b5ddb0ad55794cb2cc6a367f90dcb038cfbc384a23c0db646bff59cf2c8c66c","0xe49e2d0ed142794e41252c9c2ae9faecb6a7d846aaf89f7fc1462a5bc05ca899","0xbcef88b1730010a11c8820c2e7e4ec1441c62ab07c0fc752b294fd2666c9d9a9","0xcfc41667c7e4033b09b3eb60ac1b4f7735f1d813168ca8ee332b26dbabe469c4","0x63bb18928b05af339d3db18a674ec04120f1a31736f638d4e101d735122f8380","0x21725c62783071369e87d9e0abedb3d8cc37bdab8d0d58308c28aeb7cfd2bc8c","0xc34c13c58ba9c342ea1b833ac1882a4aea22777c4fd1092b2f83d3bac6b9f845","0x428106f4ae4ec142f17aebf6fa50935242f8d3f1c211cf95d6351d03d11da2b7","0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0","0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f","0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}