Skip to main content
Syntaxia exposes a read-only Model Context Protocol server so coding agents and chat clients can browse reconciled CRM accounts, contacts, reps, and opportunities from the org you authenticate as.
Endpointhttps://app.syntaxia.com/mcp
TransportHTTP (streamable, JSON-RPC)
Toolsread_profile, list_accounts, search_accounts, read_account

Authentication

Syntaxia supports two authentication paths:
  • OAuth 2.1 (recommended for Claude.ai web). The client registers itself, you approve consent in Syntaxia, and the access token is issued and stored automatically. Nothing to copy or paste.
  • Bearer token (Claude Desktop, Claude Code, Cursor, VS Code). You generate a token under Settings → Integrations and put it in the client’s config.
Both paths bind the resulting token to a user-and-org pair, so the token alone determines what data Claude sees. To connect Claude to a different organization, generate a new token (or re-authorize) for that workspace.

Sign in to Syntaxia

Generate a token at Settings → Integrations, or initiate an OAuth flow from the Claude.ai connector dialog.

Client setup

Tabs are organized from easiest to most-control. The endpoint is the same for all clients: https://app.syntaxia.com/mcp.
Claude.ai uses OAuth 2.1 with Dynamic Client Registration. You don’t need to generate or paste a token.
1

Open the connector dialog

In Claude.ai, go to Settings → Connectors and click Add custom connector.
2

Enter the endpoint

Name the connector (eg. Syntaxia) and paste the URL:
https://app.syntaxia.com/mcp
Leave OAuth Client ID and OAuth Client Secret empty under Advanced settings. Claude will register itself automatically.
3

Approve consent

Click Add. Claude opens a Syntaxia sign-in popup. After you sign in, the consent screen asks which organization to authorize. Pick one and click Allow.
4

Connected

The connector status flips to Connected and the four MCP tools (read_profile, list_accounts, search_accounts, read_account) become available to Claude.
To switch organizations, click Revoke on the connector card in Claude.ai, then re-add it and pick the other organization on the consent screen.

Tools

Always call search_accounts before read_account unless you already have a unified_account_id in context.

read_profile

Returns the authenticated user’s identity, organization, and role. No arguments.
Example response
{
  "identity_email": "user@acme.com",
  "name": "Jane Doe",
  "organization": { "slug": "0000001", "name": "Acme" },
  "role": "owner"
}

list_accounts

Lists active unified accounts in the authenticated organization, paginated.
limit
integer
default:"20"
Page size (max 100).
offset
integer
default:"0"
Row offset for pagination.
source_system_id
uuid
Optional. Restrict to clusters with a member contributed by this source.
Example response
{
  "accounts": [
    {
      "unified_account_id": "8f3c...",
      "canonical_name": "Acme Corp",
      "canonical_domain": "acme.com",
      "member_count": 2,
      "contact_count": 14,
      "opportunity_total_amount": "120000.00",
      "updated_at": "2026-05-13T10:21:00Z"
    }
  ],
  "pagination": { "limit": 20, "offset": 0, "total": 187 }
}

search_accounts

Fuzzy-searches unified accounts by name (pg_trgm similarity).
query
string
required
Search query (1 to 100 characters).
limit
integer
default:"10"
Page size (max 50).
Example response
{
  "matches": [
    {
      "unified_account_id": "8f3c...",
      "canonical_name": "Acme Corp",
      "canonical_domain": "acme.com",
      "similarity": 0.9123
    }
  ],
  "query": "acme"
}

read_account

Returns the full reconciled payload for one unified account.
unified_account_id
uuid
required
Unified account UUID, typically obtained from search_accounts or list_accounts.
Example response
{
  "account": { "id": "8f3c...", "name": "Acme Corp", "domain": "acme.com", "...": "..." },
  "contacts": [ { "...": "..." } ],
  "reps": [ { "...": "..." } ],
  "opportunities": [ { "...": "..." } ],
  "relationships": { "...": "..." }
}