Bostwick

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_workspace

The whole schema in one call: every entity type with its field definitions, system fields, and the field-type reference. Start here.

list_entity_types

Entity types without field definitions.

describe_entity_type

One entity type with its fields and rules.

list_relationships

How 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_typeadmin

Create an object type; add fields separately.

update_entity_typeadmin

Patch metadata: name, description, titleField (supports paths through required references, e.g. person.full_name), acceptsDocuments.

delete_entity_typeadmin

Delete a type and all of its records. Refused while other entities reference it.

create_fieldadmin

Add a typed field. unique: true declares a single-field uniqueness constraint — the basis for sync_record identity.

update_fieldadmin

Patch a field definition; config is replaced wholesale. Types can't change in place.

delete_fieldadmin

Remove a field; rules referencing it are pruned.

set_constraintsadmin

Replace the entity's uniqueness constraints (composite and conditional supported).

set_match_rulesadmin

Replace cross-reference consistency rules (e.g. a deal's stage must belong to the deal's pipeline).

set_presence_rulesadmin

Replace at-least-one-of rules (e.g. a person needs some identity key).

create_relationshipadmin

Relate 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_records

List records, newest first, with equality filters and reference expansion.

get_record

Fetch one record by id, references expanded.

get_record_history

Field-level change history: every transition with old/new values and timestamps.

create_record

Create one record. Always creates — no fuzzy upsert. Reference fields accept an id or an inline { "$create": … } graph.

create_records

Create up to 100 records atomically — a failing item rolls back the whole batch.

create_record_with_children

Atomically create a record with its required related records.

sync_record

Idempotent update-or-create keyed on a declared identity field (e.g. apollo_org_id). The write path for external imports; safe under concurrency.

sync_records

Bulk sync, up to 100 items with per-item outcomes — one bad row doesn't sink the import; retry just the failures.

update_record

Patch a record; null clears a field.

delete_record

Delete one record; blocked while others reference it.

delete_records

Atomically 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_document

Store content linked to records. Idempotent when source.provider + source.externalId identify an already-ingested document.

list_documents

Documents linked to a record, as previews.

get_document

One document's full content and its linked records.

search_documents

Full-text search across all documents, ranked by relevance.