Groundbase CRM
Groundbase is a $9/mo flat-rate CRM built for solo technical founders.
От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные
Что умеет
- Contacts List: List the user's contacts with optional search/pagination. Use this to find a contact before calling get/update/delete, or to summarize who's in the CRM. Defaults to 50 results; pass `li
- Contacts Get: Fetch a single contact by id, including tags, addresses, custom fields, and recent activity.
- Contacts Create: Create a new contact. At minimum, provide first_name or last_name or email — at least one of those is required. Phone numbers should be E.164 (+1...) when known; the API will normaliz
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Groundbase is a $9/mo flat-rate CRM built for solo technical founders. Unlike most CRM MCP servers that only let an AI client read records or draft messages, Groundbase's 86 tools can actually send SMS, send email, enroll contacts in cadences, and trigger workflows — using your own Twilio and Resend accounts (BYO, no markup). OAuth 2.1 and API-key auth supported.
Список инструментов сервера (60)
Технические названия из tools/list. Нужны только разработчикам.
| contacts_list | List the user's contacts with optional search/pagination. Use this to find a contact before calling get/update/delete, or to summarize who's in the CRM. Defaults to 50 results; pass `limit` up to 200 for more. |
| contacts_get | Fetch a single contact by id, including tags, addresses, custom fields, and recent activity. |
| contacts_create | Create a new contact. At minimum, provide first_name or last_name or email — at least one of those is required. Phone numbers should be E.164 (+1...) when known; the API will normalize. |
| contacts_update | Patch an existing contact. Only include fields you want to change — omitted fields are left as-is. Pass an empty string to clear a field (vs. omitting it which keeps the current value). |
| contacts_delete | Soft-delete a contact (the row is hidden from lists but kept for audit/restore). DESTRUCTIVE — confirm with the user before calling unless they explicitly asked to delete. |
| sms_send_now | Send an SMS message to a phone number immediately. The recipient phone must be in E.164 format (+1...). Cost is billed at $0.025/segment (160 GSM chars per segment, 70 unicode). Pass contactId when available so the message attaches to that contact's thread. |
| sms_send_scheduled | Schedule an SMS message for future delivery. `scheduledAt` must be an ISO 8601 timestamp in the future (UTC or with offset). The per-minute cron dispatches scheduled messages as their time arrives. Same billing as send_now — final balance debit happens at fire time, so a top-up between scheduling and sending works. |
| sms_list_scheduled | List the user's pending scheduled SMS messages (status='scheduled', not yet sent). Useful for showing the user what's queued up or finding a message id to cancel. |
| sms_cancel_scheduled | Cancel a scheduled SMS that hasn't been sent yet. Only works while status='scheduled' — already-delivered messages can't be unsent. Returns 404 if the id is unknown or already fired. |
| sms_list_thread | List recent SMS messages in a thread with a specific phone number — useful for showing the last few exchanges before drafting a reply. |
| companies_list | List the user's companies. Use this to find a company before linking a contact to it, or to summarize accounts in the CRM. Note: like contacts.list, the current API caps the response server-side; pagination params are advisory until the cap is lifted. |
| companies_get | Fetch a single company by id (includes employees, deals, addresses, custom fields). |
| companies_create | Create a new company. Name is required. Website should include the protocol (https://...). Tags are created on the fly if missing. |
| companies_update | Patch a company. Only include fields you want to change. |
| companies_delete | Soft-delete a company. Contacts and deals previously linked to this company become unlinked but are NOT deleted themselves. DESTRUCTIVE — confirm with the user first. |
| deals_list | List deals. Returns all open + closed deals with their stage, value, contact, and company. Use this to summarize pipeline, find a deal to update, or filter by stage / value. |
| deals_get | Fetch a single deal by id, including notes, tasks, and the contact/company linked. |
| deals_create | Create a deal. title + stageId required. valueCents is in CENTS (so $1,500 = 150000). Link to a contact via contactId or a company via companyId (you can also pass both). |
| deals_update | Patch a deal. Only include fields to change. |
| deals_move_stage | Move a deal to a different pipeline stage. Common stage names are "Lead", "Qualified", "Proposal", "Won", "Lost", but the actual stages and their UUIDs are per-user — call deal_stages.list first if you don't know the destination stage id. |
| deals_delete | Soft-delete a deal. DESTRUCTIVE — confirm first. |
| deal_stages_list | List the user's pipeline stages in order. Call this BEFORE creating a deal or moving one between stages so you have the correct stage UUIDs. Returns name, color, position, and id. |
| tasks_list | List tasks/events/meetings for the user. Filter by `kind`, `status`, `contactId`, or date range. Defaults to showing open (status=open) items of all kinds. |
| tasks_get | Fetch a single task/event/meeting by id. |
| tasks_create | Create a task, event, or meeting. • `task` — has dueAt + optional recurrence. • `event` — has startAt + endAt. • `meeting` — has startAt + endAt + location. Title is required. Link to a contact (contactId), company (companyId), or deal (dealId). |
| tasks_update | Patch a task. Only include fields to change. |
| tasks_complete | Mark a task done. For recurring tasks, the server automatically spawns the next occurrence so the series keeps going — you don't need to create it manually. |
| tasks_delete | Soft-delete a task. DESTRUCTIVE — confirm first. |
| notes_list | List notes attached to a contact, company, or deal. Use this to show recent context before drafting a follow-up. Pass exactly one of contactId / companyId / dealId. |
| notes_create | Add a note to a contact, company, or deal. Notes are plain text and appear on the entity's timeline alongside calls, texts, and emails. Provide EXACTLY ONE of contactId / companyId / dealId. |
| notes_update | Edit an existing note's text. |
| notes_delete | Soft-delete a note. DESTRUCTIVE — confirm first. |
| tags_list | List all tags the user has defined. Useful before applying a tag to find its UUID, or to see what tags already exist before creating new ones. |
| tags_create | Create a new tag. Name is required. Color is a hex string like "#B91C1C". |
| tags_update | Rename a tag or change its color. |
| tags_delete | Delete a tag. Contacts previously tagged with it lose the tag but are NOT deleted. DESTRUCTIVE — confirm first. |
| tags_apply | Apply a tag to one or more contacts in bulk. Idempotent — contacts already tagged are skipped without error. Returns count of contacts the tag was newly applied to. |
| tags_remove | Remove a tag from one or more contacts in bulk. Idempotent. |
| sms_templates_list | List the user's SMS templates. Each template has a name, body, and (for email) subject. Use this to find an existing template before drafting a new one. |
| sms_templates_get | Fetch a single SMS template by id. |
| sms_templates_create | Create a new SMS template. Use {{first_name}} / {{last_name}} / {{full_name}} / {{company}} placeholders — they're substituted at send time. Returns the new template id. |
| sms_templates_update | Edit an existing SMS template. |
| sms_templates_delete | Soft-delete a SMS template. DESTRUCTIVE — confirm first. |
| email_templates_list | List the user's EMAIL templates. Each template has a name, body, and (for email) subject. Use this to find an existing template before drafting a new one. |
| email_templates_get | Fetch a single EMAIL template by id. |
| email_templates_create | Create a new EMAIL template. Use {{first_name}} / {{last_name}} / {{full_name}} / {{company}} placeholders — they're substituted at send time. Subject is required for email templates. Returns the new template id. |
| email_templates_update | Edit an existing EMAIL template. |
| email_templates_delete | Soft-delete a EMAIL template. DESTRUCTIVE — confirm first. |
| email_send | Send an email from the user's connected email account. `to` can be a single address or a comma-separated list. Provide `bodyHtml` (preferred), `bodyText` (plain), or both — at least one is required. Pass `contactId` when sending to a Groundbase contact so merge tags like {{first_name}} and {{cf.<field_key>}} resolve and the message threads against that contact. The user's saved signature is appended automatically. |
| dashboard_summary | Get top-of-app KPI summary: total contacts, open deals + their total value, won deals + their total value, messages sent/received this period. Plus a 30-day series for charting. |
| activity_list | Recent activity feed: SMS sent/received, calls, emails, notes added, deal stage changes, task completions. Returns most recent first. Use this to summarize "what happened with X" or build a weekly digest of CRM activity. |
| workflows_list | List the user's workflows with their trigger summary, step count, active/paused state, and last-run timestamp. Use this to see what automations exist before creating new ones or before modifying an existing one. |
| workflows_get | Fetch one workflow by id, including the full step tree and condition. Use this after workflows_list to inspect details before editing. |
| workflows_create | Create a workflow. `trigger_type` is one of "entity_event" (fires on contact.created etc.), "scheduled" (cron/one-time), "inbound_webhook" (when a Groundbase inbound webhook receives a POST), or "manual" (only fired by workflows_run_now). For entity_event, set trigger_event to e.g. "contact.created", "deal.stage_changed", "task.completed". For scheduled, pass trigger_config like { recurrence: "one_time"|"daily"|"weekly"|"hourly", run_at?, time_of_day?, days_of_week?, minute_of_hour?, timezone? }. For inbound_webhook, trigger_event is the inbound webhook id from inbound_webhooks_list. Steps run sequentially. Step shapes: `send_sms` { to?, body }; `send_email` { to, subject, body_html?, body_text?, contact_id? }; `apply_tag` { tag_name, entity_id?, entity_type? }; `remove_tag` { tag_name, entity_id?, entity_type? }; `create_note` { body, entity_type?, entity_id? }; `create_task` { title, description?, due_at?, due_in_days?, kind?, location?, contact_id? }; `fire_webhook` { url, method?, headers?, body? }; `update_field` { entity_type?, entity_id?, field, value } — restricted to a safe allow-list of native columns (first_name, last_name, email, phone, position, city, source, notes, primary_phone, company_id); `set_custom_field` { entity_type?, entity_id?, field_key, value } — writes to a custom field defined in Settings → Custom fields. field_key accepts "loan_amount" or "cf.loan_amount" (the cf. prefix is optional); `delay` { delay_seconds }; `branch` { condition: { all|any: [{ field, op, value }] }, then: [Step], else: [Step] }. Templates supported in string fields: {{first_name}}, {{trigger.event}}, {{steps.<id>.output.<key>}}. Step ids auto-generated as s_<8hex> if omitted; pass an explicit "id" to make {{steps.X.output.Y}} references stable across edits. |
| workflows_update | Patch a workflow. Only include fields you want to change. Useful for tweaking step config, updating the trigger event, switching trigger types (e.g. from manual to entity_event), or rewording the name. To toggle active/paused state, prefer workflows_pause / workflows_resume. NOTE: changing triggerType to entity_event or inbound_webhook usually means you also want to pass triggerEvent in the same call — otherwise the workflow may end up in an inconsistent state where the type is set but no matching event is configured. |
| workflows_pause | Pause a workflow so it stops firing on its trigger. Existing runs continue but no new ones start. Reversible via workflows_resume. |
| workflows_resume | Resume a paused workflow so it starts firing on its trigger again. |
| workflows_delete | Soft-delete a workflow. DESTRUCTIVE — confirm with the user before calling unless they explicitly asked to delete. |
| workflows_run_now | Manually fire a workflow on a specific entity, bypassing its trigger. Useful for testing a workflow you just authored, or for one-off automations the user invokes by name (e.g. "run my onboarding workflow on John Doe"). The entity must already exist; the workflow's trigger context is synthesized as { entity_type, entity_id, payload }. |
| inbound_webhooks_manage | Manage inbound webhooks (URLs the world POSTs to so Groundbase creates contacts/deals/tasks/etc.). Dispatched by `action`: - "list": list all of the user's inbound webhooks (URL token NOT returned). No other args. - "get": fetch one by id (URL token NOT returned). Requires `id`. - "create": author a new webhook. Returns the FULL URL with token ONCE — flag this to the user; it cannot be retrieved later. Most senders use mappingMode="native"; use "mapped" only when the sender has a fixed payload shape that needs translating. signingSecret is OPTIONAL. Requires `name`. - "update": patch fields. Requires `id`. Only pass the fields you want to change. - "delete": DESTRUCTIVE. The URL stops accepting POSTs immediately. Confirm with the user first. |