Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.meetdoris.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Doris MCP server exposes the ontology as tools that AI assistants can call directly. Ask questions about deals, commitments, and stakeholders in natural language — the AI translates your question into the right ontology queries automatically. Endpoint: https://mcp.meetdoris.com/mcp Transport: Streamable HTTP Auth: OAuth 2.1 via your Doris login (Auth0). On first connection, a browser popup handles authentication.

Setup

Claude Code

claude mcp add --transport http doris https://mcp.meetdoris.com/mcp

Claude Desktop

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
  "mcpServers": {
    "doris": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.meetdoris.com/mcp"]
    }
  }
}

Cursor

Settings > Features > MCP > Add Server > Streamable HTTP > https://mcp.meetdoris.com/mcp

ChatGPT

Developer Mode > Add Connector > https://mcp.meetdoris.com/mcp

Windsurf

Add to your MCP configuration:
{
  "mcpServers": {
    "doris": {
      "serverUrl": "https://mcp.meetdoris.com/mcp"
    }
  }
}

Available Tools

The MCP server exposes 6 tools that mirror the REST API:

ontology_types

List all entity types or get the schema for a specific type.
ParameterTypeRequiredDescription
type_namestringNoSpecific type to get schema for. Omit to list all types.
Example prompt: “What entity types are available in Doris?“

ontology_resolve

Resolve a single entity by type and ID, with optional expand keys for related data.
ParameterTypeRequiredDescription
type_namestringYesEntity type (e.g., deal, meeting, commitment)
object_idstringYesEntity ID
expandstring[]NoRelated data to include (e.g., stakeholders, commitments)
Available expand keys for deals: stakeholders, commitments, objections, competitors, meetings, strategy, emails, agent_summary, activity, insights, assessments, brief, artifacts, pipeline_stages Example prompt: “Show me the Acme deal with its stakeholders and open commitments”

ontology_list

List entities of a specific type with filtering, sorting, and expand support.
ParameterTypeRequiredDescription
object_typestringYesType to list (e.g., deal, commitment)
filtersobjectNoFilter criteria (e.g., {"stage": "Discovery"})
sortstringNoSort field and direction (e.g., created_at:desc)
expandstring[]NoRelated data to include
limitnumberNoMax results (default 25, max 100)
offsetnumberNoPagination offset
Example prompt: “List all deals in the Negotiation stage with their commitments” Full-text search across all entity types.
ParameterTypeRequiredDescription
querystringNoFree-text search query
typesstring[]NoRestrict search to specific types
filtersobjectNoFilter criteria
sortstringNoSort field and direction
limitnumberNoMax results (default 25, max 100)
offsetnumberNoPagination offset
Example prompt: “Search for anything mentioning ‘pricing comparison’ across commitments”

ontology_batch

Resolve up to 50 entities in a single call.
ParameterTypeRequiredDescription
refsobject[]YesList of {"type": "...", "id": "..."} references
Example prompt: “Get details on deals deal_1, deal_2, and deal_3”

ontology_traverse

Follow relationships from one entity to discover connected entities.
ParameterTypeRequiredDescription
source_typestringYesType of the source entity
source_idstringYesID of the source entity
link_typestringNoFilter by relationship type
target_typestringNoFilter by target entity type
limitnumberNoMax results (default 50, max 200)
Example prompt: “What entities are linked to this deal?”

Example Conversations

Once connected, you interact naturally:
You: “What commitments are overdue on the Acme deal?” The AI calls ontology_resolve with type_name="deal", finds the Acme deal, then expands commitments and filters for overdue status.
You: “Prep me for my 2pm with Globex” The AI calls ontology_search to find the Globex deal, then ontology_resolve with expand=["stakeholders", "commitments", "strategy", "meetings"] to assemble a full prep brief.
You: “Which deals have been in Discovery for more than 30 days?” The AI calls ontology_list with object_type="deal" and filters={"stage": "Discovery"}, then checks days_in_current_stage on each result.

Privacy

The MCP server automatically masks personally identifiable information before data reaches your AI tool. This means contact emails, phone numbers, and LinkedIn URLs are never exposed to external LLM providers.
MCP connections always use masked mode. This is enforced server-side and cannot be changed per-request. For full or anonymous access, use the REST API with the ?privacy= query parameter.
LevelNamesEmailsPhonesLinkedIn
fullAdam Crossadam.cross@minesoft.com+44 7700 900123Included
masked (MCP default)Adam C.a***@minesoft.com+44 *** *** 0123Omitted
anonymousEvaluator #1OmittedOmittedOmitted

How masking works

  • No setup required — Masking is on by default for all MCP consumers.
  • Deal owners preserved — Your team’s names and emails on deals remain visible in masked mode, so you always know who owns a deal.
  • Expand keys respected — Stakeholder and email expansions are masked. Non-PII data (commitments, objections, competitors, strategy) passes through unchanged.
  • Anonymous mode — Stakeholders are replaced with role-based identifiers (e.g., “Champion #1”, “Evaluator #2”) and the email expansion is omitted entirely. Only available via the REST API.

Which fields are masked

FieldMaskedAnonymous
full_nameFirst name + initials (Adam C.)Omitted — replaced by role ID
emailFirst char + domain (a***@minesoft.com)Omitted
phoneLast 4 digits visible (+44 *** *** 0123)Omitted
linkedin_urlOmittedOmitted
owner_namePreserved (your team)Omitted
owner_emailPreserved (your team)Omitted
sender / sender_emailInitialed / maskedOmitted

When to use each level

LevelBest forAvailable via
fullInternal dashboards, your own analysisREST API only
maskedAI assistants, external LLM toolsMCP (automatic), REST API
anonymousCustomer-facing exports, shared reportsREST API only

Rate Limits

MCP shares the same rate limits as the REST API:
  • 10,000 requests/day per tenant
  • 300 req/min for resolve, list, and type operations
  • 120 req/min for search
  • 60 req/min for batch

Local Development

For local testing with MCP_DEV_MODE=true:
# Start the backend with dev mode
MCP_DEV_MODE=true make web

# Connect Claude Code to local server
claude mcp add --transport http doris-local http://localhost:5000/mcp
Dev mode accepts dev-token as a Bearer token without OAuth.