Environment: prod
Model Context Protocol server for SuperOffice CRM. Connects an MCP-aware AI client to SuperOffice search, contact, and identity tools.
https://mcp.superoffice.com/mcp
Clients authenticate via SuperOffice OpenID Connect. The server proxies OIDC to SuperOffice and requires a valid access token on every request.
Download the bundle and open it in any MCPB-compatible MCP client for one-click installation and automatic OAuth login.
Download SuperOffice MCP bundle (.mcpb)Add this to your MCP client configuration (for example, Claude Desktop's mcpServers block):
{
"mcpServers": {
"superoffice": {
"url": "https://mcp.superoffice.com/mcp"
}
}
}
Step-by-step guides for connecting your AI client:
get_appointment — Returns the full appointment record plus href (direct CRM web UI link).
Prefer this over search_appointments when the appointment_id is already known.
Cross-reference IDs (contact_id, person_id, project_id, sale_id) are included
for navigating to linked entities.get_company — Returns the full company record plus `href` (direct CRM web UI link).
Prefer this over search_companies when the company_id is already known.get_person — Returns the full person record plus `href` (direct CRM web UI link).
Prefer this over search_persons when the person_id is already known.get_project — Returns the full project record plus href (direct CRM web UI link).
Only use this over search_projects when the project_id is already known.
Use list_project_activities to fetch activities linked to the project.get_sale — Returns the full sale record plus `href` (direct CRM web UI link).get_sale_guide — Returns the sales guide for a sale: current pipeline stage, next stage, and all stages in order.
Use this after ``get_sale`` when ``HasGuide`` is true to understand where the sale
is in its pipeline and what stage comes next.
Do not use this tool when ``HasGuide`` is false.get_ticket — Returns the full ticket (service request) record plus href (direct CRM web UI link).
Prefer this over search_tickets when the ticket_id is already known.
Cross-reference IDs (contact_id, sale_id, project_id) are included
for navigating to linked entities.list_contact_activities — Returns activities (appointments, documents, chats, mailings, form submissions) for a company.
Use get_company or search_companies to find the contact_id first.
Results are sorted newest first.list_person_activities — Returns activities (appointments, documents, chats, mailings, form submissions) for a person.
Use get_person or search_persons to find the person_id first.
Results are sorted newest first.list_project_activities — Returns activities (appointments, documents, mailings) for a project.
Use search_projects or get_project to find the project_id first.
Results are sorted newest first.list_sale_activities — Returns activities (appointments, documents) for a sale.
Use get_sale or search_sales to find the sale_id first.
Results are sorted newest first.list_user_activities — Returns activity-archive items (follow-ups, tasks, documents) for a user.
Do NOT use for "diary", "calendar", "schedule", or "appointments" queries — use search_appointments instead.
Call whoami() first to get the associate_id for the current user.
Results are sorted newest first.search_appointments — Search for appointments (meetings, calls, follow-ups) in the CRM database.
Use this for any query about a user's diary, calendar, schedule, or appointments —
this is the authoritative source for what is booked in a user's diary.
Returns up to `limit` matching results.
"my" / "our" queries — call whoami() first:
- "my appointments" / "appointments I own" / "my calendar"
-> pass associate_id from whoami() as our_contact_id.
- "appointments at my company" -> pass company_id from whoami().search_companies — Search for companies in the CRM database.
Returns up to `limit` matching results; use `get_company` with the returned `company_id` for the full record.
"my" / "our" queries — call whoami() first, then choose the right parameter:
- "my company" (the company the user belongs to) -> pass company_id from whoami().
- "my companies" / "companies I manage" (companies assigned to the user)
-> pass associate_id from whoami() as our_contact_id.search_persons — Search for persons/contacts in the CRM database.
Returns up to `limit` matching results; use `get_person` with the returned `person_id` for the full record.
"my" / "our" queries — call whoami() first:
- "people at my company" / "my colleagues" -> pass company_id from whoami().search_projects — Search for projects by name and/or owner.
At least one of name, our_contact_id, or project_owner_full_name must be provided.
Returns matching projects with ID, name, type, status, dates, and owner.
Use get_project with the returned project_id for the full record.
Results are sorted by name.search_sales — Search for sales in the CRM database.
Returns up to `limit` matching results; use `get_sale` with the returned `sale_id`
for the full record including description, earnings, and guide status.
Lookup patterns — call the named tool first to get the required ID:
- "sales for company X" -> call search_companies(name="X"), then pass contactId as company_id.
- "my sales" / "sales I own" -> call whoami(), then pass associate_id as our_contact_id.search_tickets — Search for tickets (service requests) in the CRM database.
Returns up to `limit` matching results; use get_ticket with the
returned ticket_id for the full record including all fields.
Lookup patterns — call the named tool first to get the required ID:
- "tickets for company X" -> call search_companies(name="X"), then pass contact_id as company_id.
- "my tickets" / "tickets I own" -> call whoami(), then pass associate_id as our_contact_id.
- "open tickets" / "closed tickets" -> pass status="open" or status="closed".search_tickets_freetext — Search for tickets using ranked free text matching across multiple fields.
Unlike search_tickets (structured field filters), this tool scores and ranks
results by relevance: the user's own tickets, recently modified tickets, and
word-boundary matches score higher.
Matching scope: all query words must match fields within the same ticket
(title, sender, author, linked company/person/project). Cross-ticket matching
is not supported — "Jostein WebTools" only matches if both words appear on
the same ticket.
Prefer search_tickets when you already know specific IDs or structured criteria.
Otherwise, prefer search_tickets_freetext as it returns more comprehensive results.
Note: matching is locale-sensitive; queries in the tenant's language work best.
Returns up to `limit` ranked results; use get_ticket with the returned
ticket_id for the full record.server_info — Get information about the MCP server.
Returns:
A dictionary containing server information.whoami — Returns the authenticated user's identity. Call this first before any "my" or "our" query.
Use the returned values to drive other tools:
- company_id -> "my company" (search_companies), "people at my company" (search_persons),
"appointments at my company" (search_appointments)
- associate_id -> pass as our_contact_id for "my companies" (search_companies),
"my appointments" (search_appointments)
- person_id -> identifies the user as a CRM person
Also returns associate_name, email, role, group_id, ej_user_id, context_identifier.