Spruce Health MCP by usefulapi
Server Details
Read Spruce Health contacts, conversations, messages, phone lines and team members (read-only).
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
24 toolssprucehealth_get_contactGet a contactRead-onlyIdempotentInspect
One contact by Spruce contact id (entity_…): demographics, phones, emails, tags, custom and organization fields, integration links. GET /contacts/{contactId}.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id (e.g. "entity_0E5QDGJC03000"). |
sprucehealth_get_conversationGet a conversationRead-onlyIdempotentInspect
One conversation by id (t_…). GET /conversations/{conversationId}.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | The conversation id (e.g. "t_0E5QDJJC03000"). |
sprucehealth_get_conversation_itemGet a conversation messageRead-onlyIdempotentInspect
One conversation item (message, note, call, voicemail…) by id (ti_…). GET /conversationItems/{conversationItemId}.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_item_id | Yes | The conversation item id (e.g. "ti_0D4QABCC06000"). |
sprucehealth_get_memberGet an organization memberRead-onlyIdempotentInspect
One organization member (teammate, team or the organization) by id. GET /organization/members/{memberId}.
| Name | Required | Description | Default |
|---|---|---|---|
| member_id | Yes | The member id (e.g. "entity_0D4QABCC06000"). |
sprucehealth_get_organizationGet the organizationRead-onlyIdempotentInspect
Your Spruce organization (id and name). The id is the owner/member id used by other objects. Good first call. GET /organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
sprucehealth_get_phone_lineGet a phone lineRead-onlyIdempotentInspect
One phone line by id (pd_…). GET /phonelines/{phonelineId}.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_line_id | Yes | The phone line id (e.g. "pd_26RRC7PQ6JG00"). |
sprucehealth_get_transcriptionGet a call or voicemail transcriptionRead-onlyIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| transcription_id | Yes | The transcription id (from a conversation item's audio attachment). |
sprucehealth_list_contact_conversationsList a contact's conversationsRead-onlyIdempotentInspect
The conversations (secure, SMS/phone, email, fax…) associated with one contact. GET /contacts/{contactId}/conversations.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id (e.g. "entity_0E5QDGJC03000"). |
sprucehealth_list_contact_fieldsList organization contact fieldsRead-onlyIdempotentInspect
The organization-wide contact fields shown on every contact. Paged; totalCount included. GET /contacts/fields.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_contact_integration_linksList a contact's integration linksRead-onlyIdempotentInspect
Links between a contact and external systems (Elation, Hint, athena, custom): type, external id, url. GET /contacts/{contactId}/integrationlinks.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id (e.g. "entity_0E5QDGJC03000"). |
sprucehealth_list_contactsList contactsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_contact_tagsList contact tagsRead-onlyIdempotentInspect
All contact tags of the organization. Paged with hasMore/paginationToken; totalCount included. GET /contacts/tags.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_conversation_itemsList conversation messagesRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Order of the items (default newest_first). | |
| page_size | No | 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. | |
| start_from | No | Only items created after this RFC 3339 date-time (with zone). | |
| conversation_id | Yes | The conversation id (e.g. "t_0E5QDJJC03000"). | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_conversationsList conversationsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order_by | No | Order by creation time or last message time (default last_message). | |
| page_size | No | 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. | |
| start_from | No | Only conversations whose ordering time is at or after this RFC 3339 date-time (with zone). | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_conversation_scheduled_messagesList a conversation's scheduled messagesRead-onlyIdempotentInspect
Messages scheduled to be sent later in one conversation (read only; nothing is sent or cancelled). GET /conversations/{conversationId}/scheduledmessages.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | The conversation id (e.g. "t_0E5QDJJC03000"). |
sprucehealth_list_conversation_tagsList conversation tagsRead-onlyIdempotentInspect
All conversation tags of the organization. Paged; totalCount included. GET /conversations/tags.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_internal_endpointsList internal endpointsRead-onlyIdempotentInspect
The organization's own channels: Spruce phone and fax numbers, email addresses and Spruce Links, with their owner and members. GET /internalendpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
sprucehealth_list_membersList organization membersRead-onlyIdempotentInspect
All members of the organization: teammates (name, email, admin, suspended), teams and the organization itself. Paged with hasMore/paginationToken; totalCount included. GET /organization/members.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_phone_linesList phone linesRead-onlyIdempotentInspect
All phone lines of the organization (id, name); totalCount included. GET /phonelines.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
sprucehealth_list_read_receiptsList a message's read receiptsRead-onlyIdempotentInspect
Who has read one conversation item and when they first read it (oldest first). GET /conversationItems/{conversationItemId}/readReceipts.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_item_id | Yes | The conversation item id (e.g. "ti_0D4QABCC06000"). |
sprucehealth_list_saved_messagesList saved messagesRead-onlyIdempotentInspect
Saved message templates (private and organization-wide): title, text, internal/shared flags. Paged with hasMore/paginationToken. GET /savedmessages.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_scheduled_messagesList scheduled messagesRead-onlyIdempotentInspect
All messages scheduled to be sent from the organization (read only). Paged with hasMore/paginationToken; totalCount included. GET /scheduledmessages.
| Name | Required | Description | Default |
|---|---|---|---|
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_list_team_membersList a team's membersRead-onlyIdempotentInspect
The members of one team (team ids come from sprucehealth_list_members, type 'team'). Paged. GET /teams/{teamId}/members.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team id (e.g. "entity_0D4QABCC06000"). | |
| page_size | No | 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. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
sprucehealth_search_contactsSearch contactsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Contact tag text values (the `value` of a tag from sprucehealth_list_contact_tags). | |
| free_text | No | Free-text query (name, phone, email…). | |
| page_size | No | 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. | |
| categories | No | Contact categories to include. | |
| created_to | No | Only contacts added at or before this time (RFC 3339 with zone). | |
| given_name | No | Given (first) name. | |
| tags_match | No | How the tags combine: any (default), all, or none (exclude). | |
| family_name | No | Family (last) name. | |
| created_from | No | Only contacts added at or after this time (RFC 3339 with zone). | |
| invite_states | No | Spruce account/invite state. | |
| phone_numbers | No | Phone numbers, e.g. 2065551234 or +12065551234. | |
| email_addresses | No | Email addresses. | |
| pagination_token | No | The paginationToken from the previous page's reply (when hasMore is true). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
24 tool updates
- First observed
sprucehealth_get_contact - First observed
sprucehealth_get_conversation - First observed
sprucehealth_get_conversation_item - First observed
sprucehealth_get_member - First observed
sprucehealth_get_organization - First observed
sprucehealth_get_phone_line - First observed
sprucehealth_get_transcription - First observed
sprucehealth_list_contact_conversations - First observed
sprucehealth_list_contact_fields - First observed
sprucehealth_list_contact_integration_links - First observed
sprucehealth_list_contact_tags - First observed
sprucehealth_list_contacts - First observed
sprucehealth_list_conversation_items - First observed
sprucehealth_list_conversation_scheduled_messages - First observed
sprucehealth_list_conversation_tags - First observed
sprucehealth_list_conversations - First observed
sprucehealth_list_internal_endpoints - First observed
sprucehealth_list_members - First observed
sprucehealth_list_phone_lines - First observed
sprucehealth_list_read_receipts - First observed
sprucehealth_list_saved_messages - First observed
sprucehealth_list_scheduled_messages - First observed
sprucehealth_list_team_members - First observed
sprucehealth_search_contacts
Related MCP Connectors
Read wearables and lab health data — sleep, activity, workouts, timeseries, lab tests and orders.
Read calls, contacts, users, teams and numbers; tag calls and create or update contacts.
Read patient-authorized EHR records: medications, labs, conditions, allergies. Consent-bounded.
Read Kisi places, doors, users, groups, access rights and access logs (no unlocking).
201
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables read-only access to Benepass employee-web API, allowing users to view HSA accounts, investments, transactions, documents, and benefits without write operations.137 npmMIT
- AlicenseAqualityAmaintenanceEnables read-only FHIR access to Practice Fusion EHR to search patients, appointments, conditions, medications, and lab results.137 npm4MIT
- AlicenseNot gradedqualityBmaintenanceRead-only access to Stripe data including customers, charges, subscriptions, balance, and invoices.399 npmMIT
- AlicenseAqualityBmaintenanceEnables read-only access to Klaviyo marketing data, including campaigns, flows, segments, metrics, reports, and customer profiles, across multiple Klaviyo accounts.2427 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.