Morphic MCP

Connect AI agents and MCP clients to Morphic — CRM records and activities, notes, meetings and calendar, knowledge base and wiki, workspace memory, workflow automations and revenue intelligence. 270 tools over one streamable HTTP endpoint.

Connect URL current release 0.4.0

One endpoint, streamable HTTP. You sign in with Morphic — there is no key to create, copy or store.

https://mcp.morphic.io/v2/mcp
No headers to set — your client runs the sign-in.

Connect in 30 seconds

Pick your client. Every block below is complete as written — paste it in, and approve the connection when Morphic asks.

Claude Code

claude mcp add --transport http morphic https://mcp.morphic.io/v2/mcp

Claude Code opens the Morphic sign-in the first time you use a tool. Add --scope user to make the server available in every project.

Native HTTP connector

Edit claude_desktop_config.json — macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\. Restart Claude Desktop afterwards.

{
  "mcpServers": {
    "morphic": {
      "url": "https://mcp.morphic.io/v2/mcp"
    }
  }
}

Fallback: mcp-remote bridge

Remote HTTP connectors arrived with Custom Connectors in the June 2025 Claude Desktop release, on paid plans. On an older build — or wherever custom connectors are unavailable — run the mcp-remote bridge, which speaks stdio to Claude Desktop and HTTP to Morphic. It needs Node 18+ on your machine.

{
  "mcpServers": {
    "morphic": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.morphic.io/v2/mcp"]
    }
  }
}

Claude.ai custom connector

  1. Open Settings → Connectors → Add custom connector.
  2. Paste the URL: https://mcp.morphic.io/v2/mcp
  3. Click Connect. Morphic opens its sign-in page.
  4. Sign in, choose the workspaces to share, and approve.

Nothing to copy and nothing to store — Claude holds a short-lived token and renews it on its own.

Cursor

Global: ~/.cursor/mcp.json. Per project: .cursor/mcp.json in the repository root.

{
  "mcpServers": {
    "morphic": {
      "url": "https://mcp.morphic.io/v2/mcp"
    }
  }
}

No credential lives in this file — Cursor runs the sign-in itself and keeps the token out of your repository.

VS Code (GitHub Copilot agent mode)

Workspace file: .vscode/mcp.json. No secret goes in it.

{
  "servers": {
    "morphic": {
      "type": "http",
      "url": "https://mcp.morphic.io/v2/mcp"
    }
  }
}

ChatGPT custom connector

  1. Open Settings → Connectors (or Apps) and add a custom MCP connector.
  2. Paste the URL: https://mcp.morphic.io/v2/mcp
  3. Connect. ChatGPT opens Morphic so you can sign in and approve.

No API key and nothing to store. If ChatGPT shows a redirect URL, it will be under chatgpt.com — Morphic already allows those.

Any streamable-HTTP MCP client

Point the client at the endpoint below. There is no stdio binary to install, and no credential to paste — the client discovers the OAuth endpoints and runs the flow.

https://mcp.morphic.io/v2/mcp

Authorization is OAuth 2.1 with PKCE and dynamic client registration. Clients that read /.well-known/oauth-protected-resource need no further configuration.

Transport is MCP streamable HTTP. A GET on the endpoint opens the SSE stream and requires Accept: text/event-stream.

How connecting works

  1. Add the connect URL to your client. Nothing else to configure.
  2. The first time it needs Morphic, your client opens app.morphic.io and you sign in as yourself.
  3. Morphic shows what the client is asking for. Choose which of your workspaces it may reach, pick a permission level, and approve.
  4. The client receives a token that lasts an hour and renews itself. Nothing long-lived is stored on your machine.

The connection is yours, not a workspace's. Only the workspaces you tick on the approval screen are reachable. If you approved exactly one, it is used automatically. If you approved several, every tool takes an optional workspace argument, so the assistant can switch between them mid-conversation — ask it to call list_workspaces first. To pin one workspace as the default for every call instead, put it on the URL:

https://mcp.morphic.io/v2/mcp?workspace=acme

Add a second server entry with a different ?workspace= to work in two at once without naming one each time. The tool list stays the same size either way.

No password is ever entered outside app.morphic.io. If any other page asks you for Morphic credentials, it is not us.

What a connection can do read this

An approved connection acts as you. Granted read-and-write or full access, it can do what you can do in the Morphic app — and the model driving the client decides when. Read the permission level on the approval screen before you accept it.

It writes and it deletes

create_entity, update_entity and set_entity_field change CRM records. delete_entity, bulk_delete_entities, bulk_delete_activities and bulk_delete_notes remove them, in bulk, in one call. Morphic does not stage these for review and does not ask you to confirm before one runs — the client is the only place a confirmation step can exist.

It sends real messages to real people

post_to_slack and post_to_telegram post into your workspace's connected channels, and agentmail_action sends actual email. To everyone who receives one, a message an agent sent is indistinguishable from one you sent. agentmail_action lives in the addons group, which is off by default — it becomes reachable only if you opt in with ?tools=…,addons.

Reduce the blast radius

  • Approve the lowest permission level the client actually needs. Read only cannot change or delete anything.
  • Approve only the workspaces that client needs to see, not all of them.
  • Give each client only the groups it needs: ?tools=schema,entities,activities. See Choosing a tool subset.

Revoke it

Morphic app → your workspace → Settings → Developers (/home/{account}/settings/developers) → Connected apps → revoke. Each connection is separate, so revoking the one you gave Cursor leaves the one you gave Claude working. Revocation takes effect within two minutes.

Verify it works

Once a client is connected you can call the ping tool directly to separate "not connected" from "bad client config". Substitute the access token your client obtained.

curl -sS https://mcp.morphic.io/v2/mcp \
  -H "Authorization: Bearer $MORPHIC_MCP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{}}}'

A live connection returns a server-sent event whose payload contains pong — morphic-mcp v0.4.0:

event: message
data: {"result":{"content":[{"type":"text","text":"pong — morphic-mcp v0.4.0"}]},"jsonrpc":"2.0","id":1}

Anything else:

  • 401 — not connected, or the connection expired or was revoked. Reconnect from your client.
  • 406 — you sent a GET. The command above is a POST; a GET opens the SSE stream and needs Accept: text/event-stream.
  • 429 — too many attempts from your IP. Wait 60 seconds.

Tools (270 total)

Rendered from the server's own tool registry, so this list is what the server actually serves. 35 groups plus ping, which is always registered on every profile.

The addons group is excluded by default (-addons,-clay) — those tools are billed separately and only work once installed for the workspace.

Context · 3 tools · context Start here for questions. Compacted briefs on the current state of any record, of any object type the workspace has defined, plus semantic recall over the workspace's indexed history. Cheaper and better-grounded than reading raw records; drill into Records, Activities or Memory only when this falls short.
  • ask_context
  • get_context
  • find_capability
Schema · 15 tools · schema Discover the workspace's record types and their field definitions — the starting point for any CRM read or write.
  • list_entity_types
  • get_entity_type_schema
  • list_object_types
  • create_object_type
  • update_object_type
  • delete_object_type
  • duplicate_object_type
  • create_attribute
  • update_attribute
  • delete_attribute
  • get_object_type_sharing
  • update_object_type_sharing
  • add_attribute_option
  • update_attribute_option
  • delete_attribute_option
Public Forms · 5 tools · public-forms Create and manage shareable public forms that create CRM records on submit.
  • list_public_forms
  • get_public_form
  • create_public_form
  • update_public_form
  • delete_public_form
Data Management · 6 tools · data-management CSV import/export job status (read-only) and shared pipeline view configuration.
  • list_import_jobs
  • get_import_job
  • get_import_template
  • list_export_jobs
  • get_crm_object_view
  • update_crm_object_view
Comments · 5 tools · comments Threaded comments on CRM entities and tasks, including read receipts.
  • list_comments
  • create_comment
  • update_comment
  • delete_comment
  • mark_task_comments_read
Mentions · 2 tools · mentions Search and resolve @-mention targets across records and workspace members.
  • search_mentions
  • resolve_mentions
Email · 9 tools · email Gmail-connected drafts, outbox, and connection status (not templates).
  • list_email_drafts
  • get_email_draft
  • create_email_draft
  • update_email_draft
  • delete_email_draft
  • send_email_draft
  • list_email_outbox
  • get_email_connection_status
  • get_email_counts
Reminders · 4 tools · reminders Field-level date reminders on CRM records — read, set, or clear policies.
  • list_reminders
  • get_record_reminder
  • set_record_reminder
  • clear_record_reminder
Favorites · 2 tools · favorites Starred CRM records and folders for the current user.
  • list_favorites_combined
  • toggle_favorite
Collections · 13 tools · collections Named, manually curated sets of records with an optional board — create collections, add or remove records, and move records between columns.
  • list_collections
  • get_collection
  • create_collection
  • update_collection
  • list_collection_members
  • add_records_to_collection
  • remove_records_from_collection
  • set_collection_stage
  • delete_collection
  • create_collection_field
  • update_collection_field
  • delete_collection_field
  • set_collection_entry_fields
Attachments · 2 tools · attachments Read file attachments linked to CRM entities, and create downloadable documents (pdf, csv, xlsx, docx) for the requester.
  • list_attachments
  • create_document
Platform · 5 tools · platform Read-only workspace platform metrics — ingestion, LLM catalog, and pricing.
  • get_ingestion_stats
  • get_ingestion_status
  • list_llm_models
  • list_model_pricing
  • get_ai_memory_stats
Records · 19 tools · entities Create, read, update, link, archive and bulk-edit CRM records of any type — companies, people, deals and custom objects.
  • present_crm_card
  • list_entities
  • get_entity
  • get_entity_with_relations
  • create_entity
  • update_entity
  • set_entity_field
  • resolve_entity_relation
  • link_entities
  • search_entities
  • pipeline_overview
  • archive_entity
  • delete_entity
  • bulk_update_entities
  • bulk_archive_entities
  • bulk_delete_entities
  • unlink_entities
  • bulk_link_entities
  • bulk_unlink_entities
Activities · 12 tools · activities Log and manage the timeline attached to records: calls, emails, meetings, tasks and custom activity types.
  • list_activities
  • get_activity
  • create_activity
  • update_activity
  • archive_activity
  • unarchive_activity
  • delete_activity
  • bulk_create_activities
  • bulk_update_activities
  • bulk_archive_activities
  • bulk_delete_activities
  • complete_task
Notes · 6 tools · notes Write and manage free-form notes attached to CRM records, individually or in bulk.
  • list_notes
  • create_note
  • update_note
  • bulk_create_notes
  • bulk_delete_notes
  • delete_note
Knowledge Base · 9 tools · kb Search, read and author knowledge-base documents, and pull the workspace's overall context summary.
  • list_kb_documents
  • search_kb_documents
  • get_kb_document
  • create_kb_document
  • update_kb_document
  • delete_kb_document
  • list_kb_bookmarks
  • toggle_kb_bookmark
  • get_workspace_context
Wiki · 5 tools · wiki Read and edit the agent-maintained wiki — durable, section-addressable pages the workspace's agents write to.
  • wiki_search
  • wiki_write
  • wiki_append
  • wiki_edit_section
  • wiki_list
Memory · 3 tools · memory Semantic recall over the workspace's stored knowledge and attachments, plus writing new memories back.
  • morphic_recall
  • morphic_attachment_recall
  • morphic_remember
Calendar · 6 tools · calendar Read and manage calendar events on the user's connected calendar, and check connection status.
  • list_calendar_events
  • get_calendar_event
  • get_calendar_connection_status
  • create_calendar_event
  • update_calendar_event
  • delete_calendar_event
Meetings · 7 tools · meetings Meeting recordings and recaps: transcripts, follow-ups, record linking, and dispatching the note-taking bot.
  • list_meetings
  • get_meeting
  • get_meeting_follow_ups
  • link_meeting_to_entity
  • unlink_meeting_from_entity
  • search_meeting_transcripts
  • force_join_meeting_bot
Automations · 13 tools · automations Author, publish, run and inspect workflow automations, including their triggers and run history.
  • list_workflows
  • get_workflow
  • list_workflow_triggers
  • list_workflow_versions
  • duplicate_workflow
  • create_workflow
  • author_workflow
  • publish_workflow
  • update_workflow
  • delete_workflow
  • enqueue_workflow_manual_run
  • list_workflow_runs
  • get_workflow_run
Revenue Intelligence · 26 tools · revenue-intelligence Run the LLM-backed GTM analyses: pre/post-meeting packs, deal-risk scans, pipeline narration, executive digests and CRM hygiene, plus scheduled custom routines and the cross-meeting trend reads.
  • run_crm_hygiene_scan
  • run_lead_score_route
  • run_pipeline_narration
  • run_executive_digest
  • list_deal_alerts
  • run_account_relationship_snapshot
  • run_prospecting_brief
  • run_pre_meeting_brief
  • run_post_meeting_pack
  • list_agent_feed_artifacts
  • get_agent_feed_artifact
  • accept_suggested_action
  • dismiss_suggested_action
  • update_suggested_action
  • get_revenue_intelligence_settings
  • update_revenue_intelligence_settings
  • post_to_slack
  • post_to_telegram
  • publish_routine_report
  • list_custom_routines
  • create_custom_routine
  • update_custom_routine
  • delete_custom_routine
  • test_run_custom_routine
  • get_meeting_insights_timeline
  • get_executive_trend
External CRM sync · 11 tools · connectors Push field changes on Morphic records out to a connected external CRM (e.g. HubSpot) and mirror the same change locally, and review records that changed on both sides at once.
  • sync_linked_record
  • sync_entity_to_provider
  • list_workspace_connectors
  • list_record_mismatches
  • resolve_record_mismatch
  • search_external_records
  • convert_provider_lead
  • discover_composio_tools
  • call_composio_read_tool
  • trigger_connector_sync
  • get_connector_sync_status
Connectors (generic) · 3 tools · providers One set of three tools for every direct-MCP connector (Amplemarket, Clay, TinyFish, Zoho): check whether the asking user is connected, list what their own account can actually run, and run one of those tools. Use when the per-connector tools above do not cover what is needed, or when working with a connector that has no dedicated tools. Per person, not per workspace — and each provider's own policy still applies, so a Zoho write must still go through write_zoho_tool.
  • get_provider_connection
  • list_provider_capabilities
  • call_provider_tool
Amplemarket · 4 tools · amplemarket Use the asking user's own Amplemarket seat — check their connection, discover which of the 9 tool categories their plan includes, and run one. Per person, not per workspace.
  • get_amplemarket_connection_status
  • list_amplemarket_capabilities
  • call_amplemarket_tool
  • write_amplemarket_tool
Zoho CRM · 7 tools · zoho Read and write a connected Zoho CRM over Zoho's own MCP server. Discover the org's ~1,309 tools and its custom modules, query records with COQL, and make changes the user confirms first. Per person: answers reflect what the connected Zoho user can see.
  • get_zoho_connection_status
  • list_zoho_capabilities
  • get_zoho_tool_schema
  • call_zoho_tool
  • write_zoho_tool
  • query_zoho_records
  • describe_zoho_module
TinyFish · 7 tools · tinyfish Search the web, read pages, and drive a real browser to complete website tasks, using the asking user's own TinyFish account. Search and page reads are free; browser automation is metered against that user's wallet. Per person, not per workspace.
  • get_tinyfish_connection_status
  • tinyfish_search
  • tinyfish_fetch_content
  • tinyfish_run_web_automation
  • tinyfish_get_run
  • list_tinyfish_capabilities
  • call_tinyfish_tool
Meeting notetakers · 7 tools · notetakers Search and read the asking user's meeting transcripts, summaries and action items across every notetaker they have connected (Granola, Fireflies, Fathom, Otter, Circleback, Read.ai, Sybill, Plaud, tl;dv, Gong). Read-only, and per person rather than per workspace — a connected teammate does not let this user read anything.
  • list_notetaker_connections
  • search_notetaker_meetings
  • list_recent_notetaker_meetings
  • get_notetaker_meeting
  • get_notetaker_action_items
  • list_notetaker_tools
  • call_notetaker_tool
Apollo · 9 tools · apollo Search Apollo's global prospect database, enrich people and companies, log calls and tasks that push into Apollo, and enroll contacts in an existing Apollo sequence. Workspace-wide, connected once for the whole team.
  • search_apollo_prospects
  • enrich_apollo_person
  • enrich_apollo_organization
  • search_apollo_sequences
  • list_apollo_email_accounts
  • add_apollo_contacts_to_sequence
  • update_apollo_contact_sequence_status
  • log_apollo_call
  • create_apollo_task
Clay · 8 tools · clay Search Clay's GTM database, run Clay routines and check their results, read Clay Tables data, and check the workspace's Clay credit balance. Workspace-wide, one API key for the whole team — connected directly to Clay's Developer API.
  • get_clay_connection_status
  • check_clay_credits
  • get_clay_search_reference
  • list_clay_routines
  • search_clay
  • run_clay_routine
  • get_clay_routine_run
  • run_clay_table_query
Clay (MCP) · 6 tools · clay_mcp Prospect and enrich companies and contacts via Clay's own hosted MCP server, using the asking user's own OAuth connection. Per person, not per workspace — unlike the Clay group above, which is one shared workspace API key.
  • get_clay_mcp_connection_status
  • check_clay_mcp_credits
  • get_clay_mcp_workspace
  • find_clay_mcp_company
  • find_clay_mcp_contacts_at_company
  • get_clay_mcp_task_context
Workspace · 19 tools · workspace Workspace identity, members, invites, billing read, profile updates, and task status configuration (no workspace delete).
  • get_current_user
  • list_workspaces
  • list_workspace_members
  • list_task_statuses
  • get_workspace_profile
  • update_workspace_profile
  • update_workspace_date_locale
  • list_workspace_invitations
  • create_workspace_invitations
  • update_workspace_invitation
  • get_workspace_billing_summary
  • get_workspace_credit_balance
  • get_workspace_credit_usage
  • get_workspace_usage_by_source
  • get_workspace_usage_by_user
  • list_workspace_credit_deposits
  • create_task_status
  • update_task_status
  • reorder_task_statuses
Task Suggestions · 8 tools · tasks Review and accept the agent-generated task suggestions queued for the workspace.
  • list_task_suggestions
  • accept_task_suggestion
  • dismiss_task_suggestion
  • update_task_suggestion
  • list_task_projects
  • create_task_project
  • update_task_project
  • delete_task_project
Web Search · 1 tools · search Search the public web and fetch page content for research that goes beyond workspace data.
  • web_search
Paid Add-ons · 2 tools · addons Marketplace add-ons billed separately and usable only once installed for the workspace: Parallel Search and AgentMail.
  • parallel_search
  • agentmail_action

Choosing a tool subset

Every client downloads the whole tool catalog on connect, before anyone has typed anything. All 270 tools are a large JSON schema. A CRM-only profile is about a third of that payload — and a third of the context those definitions occupy for the rest of the session.

Per connection: ?tools=

Append the parameter to the connect URL. It is resolved per request, so two clients can hold different profiles against the same server.

https://mcp.morphic.io/v2/mcp?tools=schema,entities,activities

Syntax

SpecResult
?tools= (empty)Every group, add-ons included
?tools=entities,activities,schemaAllowlist — exactly those groups
?tools=-addonsEverything except that group. This is the default.
?tools=entities,search,-searchAllowlist first, then subtract

Group ids are listed next to each group under Tools. Unknown ids are ignored rather than rejected, so a stale URL degrades to a working connection. ping is always present, however narrow the profile.

For AI agents

Suggested call order on a new connection: ping (confirm auth and read the server version) → get_current_user (who you are acting as, and in which workspace) → list_entity_types (this workspace's record types — schemas are per-workspace and custom object types are normal, so never assume "company"/"person"/"deal" exist) → get_entity_type_schema for the type you are about to touch → the domain tools.

Timing. The server request timeout is 180 seconds. Most tools return in well under a second, but the revenue-intelligence run_* tools are LLM-backed and commonly take around 110 seconds; author_workflow is similar. Do not race them with a shorter client-side timeout, and do not retry one that has not yet returned.

Before you write. Field slugs come from the schema, not from a guess — set_entity_field against an undeclared slug fails. Search before creating: search_entities avoids the duplicate records that are the most common damage an agent does here.

Bulk over loops. The bulk_* tools exist so that fifty updates are one round trip rather than fifty; the transport limit is 120 requests per minute per IP.

Limits & errors

StatusMeaningFix
401Not connected, or the connection expired or was revokedReconnect from your client; check the connection still exists under Settings → Developers → Connected apps. Not a permissions problem — no access change fixes it
403Request origin not in this deployment's allowlist, or you are not a member of the requested workspaceBrowser-based clients only — call from a server or an approved origin. For a workspace, check the ?workspace= value
428This connection reaches several workspaces and named noneCall list_workspaces, then retry with the workspace argument set. No reconnect needed
406GET without Accept: text/event-streamSend the SSE Accept header, or use POST for JSON-RPC
408Tool exceeded the 180s server request timeoutNarrow the request; long revenue-intelligence runs sit close to this ceiling
429Rate limited — 20/min per IP on the OAuth endpoints, 120/min per IP on the transportBack off for the Retry-After window (60s) and reduce concurrency

Reference

RoutePurpose
GET /This page — onboarding for humans and agents
POST /v2/mcpMCP streamable HTTP — the public connect URL (OAuth)
GET /v2/mcpMCP SSE stream (requires Accept: text/event-stream)
GET /mcpRelease & version catalog (HTML, or JSON with Accept: application/json)
GET /v2/mcp/.well-known/oauth-authorization-serverOAuth authorization-server metadata (also at /.well-known/*)
GET /.well-known/oauth-protected-resourceRFC 9728 protected-resource metadata
GET /v2/mcp/authorizeStarts sign-in — redirects to app.morphic.io for consent
POST /v2/mcp/registerDynamic client registration (RFC 7591)
POST /v2/mcp/tokenAuthorization-code and refresh-token exchange
POST /v2/mcp/revokeRevoke a connection (RFC 7009)
GET /healthLiveness + running release

Customer integrations use v2 OAuth only — no API key is entered or issued. An internal /v1/mcp transport still exists for Morphic's own agents; it is not published here and must not be used in connector configs.

Machine-readable version catalog: GET /mcp with Accept: application/json, or /mcp?format=json. Liveness and running release: /health.