MCP tools
The complete tool surface an agent sees when connected. Each connection is scoped to the signed-in member's workspace; tools marked admin require the admin workspace role. The server also publishes usage guidance to connected agents via MCP instructions, and every tool's full input schema is self-describing over the protocol.
Schema — introspection
Every workspace has its own schema: entity types with typed fields, uniqueness constraints, cross-reference match rules, and at-least-one-of presence rules. All rules are returned with plain-language explanations.
describe_workspaceThe whole schema in one call: every entity type with its field definitions, system fields, and the field-type reference. Start here.
list_entity_typesEntity types without field definitions.
describe_entity_typeOne entity type with its fields and rules.
list_relationshipsHow an entity relates to others, derived from the physical schema: cardinality both ways, reference vs association, and what implements it.
Schema — editing
Schema changes require the admin workspace role. Changes never rewrite stored records — new required fields, tightened options, and new rules bind future writes only. Deletes are refused while they would dangle.
create_entity_typeadminCreate an object type; add fields separately.
update_entity_typeadminPatch metadata: name, description, titleField (supports paths through required references, e.g. person.full_name), acceptsDocuments.
delete_entity_typeadminDelete a type and all of its records. Refused while other entities reference it.
create_fieldadminAdd a typed field. unique: true declares a single-field uniqueness constraint — the basis for sync_record identity.
update_fieldadminPatch a field definition; config is replaced wholesale. Types can't change in place.
delete_fieldadminRemove a field; rules referencing it are pruned.
set_constraintsadminReplace the entity's uniqueness constraints (composite and conditional supported).
set_match_rulesadminReplace cross-reference consistency rules (e.g. a deal's stage must belong to the deal's pipeline).
set_presence_rulesadminReplace at-least-one-of rules (e.g. a person needs some identity key).
create_relationshipadminRelate two entities by declaring per-side cardinality; the server compiles the right structure — reference field or association object — with constraints handled.
Records
Writes are validated strictly and rejections are corrective: the error names unrecognized keys and the valid key set, missing required fields with expected types, allowed select values, and the violated rule. Write optimistically and fix from the error. Reads expand required references one level automatically.
query_recordsList records, newest first, with equality filters and reference expansion.
get_recordFetch one record by id, references expanded.
get_record_historyField-level change history: every transition with old/new values and timestamps.
create_recordCreate one record. Always creates — no fuzzy upsert. Reference fields accept an id or an inline { "$create": … } graph.
create_recordsCreate up to 100 records atomically — a failing item rolls back the whole batch.
create_record_with_childrenAtomically create a record with its required related records.
sync_recordIdempotent update-or-create keyed on a declared identity field (e.g. apollo_org_id). The write path for external imports; safe under concurrency.
sync_recordsBulk sync, up to 100 items with per-item outcomes — one bad row doesn't sink the import; retry just the failures.
update_recordPatch a record; null clears a field.
delete_recordDelete one record; blocked while others reference it.
delete_recordsAtomically delete several records with referential integrity checked across the set.
Documents
Unstructured context — call transcripts, meeting notes, emails — stored full-text-searchable and linked to records. The intended flow: read documents for conclusions, then persist conclusions as structured fields so they're validated and audited.
attach_documentStore content linked to records. Idempotent when source.provider + source.externalId identify an already-ingested document.
list_documentsDocuments linked to a record, as previews.
get_documentOne document's full content and its linked records.
search_documentsFull-text search across all documents, ranked by relevance.