Docs

MCP tool reference

These tools operate on entities in your authenticated workspace. entityType identifies the kind of entity — for example a customer, sales order, or quotation — and entityId identifies one saved entity. Copyable requests are valid JSON. Replace placeholders such as YOUR_SALES_ORDER_ENTITY_ID with values returned by a prior call.

Access: the caller must be authenticated to the workspace. The provider and model saved in Settings → Models & voice power Qora and classification, including structured writes and document uploads. The model must support tool calls and images. Match retrieval, relationship computation, graph exploration, and history do not use that key for classification. Answer-mode search uses a model to compose a response and requires explicit mode: "answer". Tools do not grant access to business services you have not authorized.

Find or ask Neural Fabric. When mode is omitted, search defaults to match, which retrieves stored entities and returns ranked matches. Answer generation requires explicit mode: "answer". Answer mode uses a model to compose a response, with confidence and supporting evidence.

InputRequiredNotes
queryYesQuestion or search text
modeNomatch or answer; when omitted, defaults to match. Answer generation requires mode: "answer"
limitNoMax matches; default 20 for text search
detailNoInclude full properties on match results
entityTypeNoFilter match results
sinceNoISO date lower bound for match results
beforeNoISO date upper bound for match results
threadIdNoRestrict FabricNote matches to a thread
agentIdNoRestrict FabricNote matches to an author label
assignedToNoRestrict FabricNote matches to an assignment label
tenantIdNoDefaults to the authenticated workspace; supplying a value does not expand the caller’s authorized scope
layerNoRestricts the operation to a named layer within the authenticated workspace; omit for the workspace-wide view
Request
{
  "query": "SO-03242607",
  "entityType": "SalesOrder",
  "detail": true,
  "limit": 5
}
Illustrative response · match mode
{
  "query": "EXAMPLE_ORDER_ID",
  "results": [
    {
      "id": "EXAMPLE_ENTITY_ID",
      "type": "SalesOrder",
      "name": "EXAMPLE_ORDER_ID",
      "score": 12.5,
      "snippet": "Illustrative matching entity text."
    }
  ],
  "layer": "global",
  "candidatesNarrowed": 8,
  "totalEntities": 25,
  "timingMs": 14
}
Illustrative response · answer mode
{
  "answer": "Illustrative item A, Illustrative item B",
  "confidence": 1,
  "mode": "list-synthesis",
  "layer": "global",
  "evidenceCount": 0,
  "refusal": null,
  "topEvidence": []
}

Response fields

Match responses contain query, results, layer, candidate and entity counts, and timing. With detail: true, each match can also contain properties, timestamp, relationshipCount, and domain. Answer responses contain answer, confidence, mode, layer, evidenceCount, refusal, and topEvidence.

Errors: omitting query fails schema validation. An empty results array means no matches were returned for this query and its filters.

fabric_list

Inventory of saved entities. Filter by type, paginate, or request a full entity with entityId and detail: true. Use graph when the question is about connections.

InputRequiredNotes
(none)—No required inputs
entityTypeNoType filter
entityIdNoWith detail:true, full entity
limitNoMaximum inventory results; default 20
offsetNoPagination offset; default 0
detailNoFull entity when entityId is set
includeDeletedNoInventory filter; hard-deleted entities are removed
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
layerNoNamed layer within the authenticated workspace; omit for the workspace-wide inventory
Request · full entity
{
  "entityId": "YOUR_SALES_ORDER_ENTITY_ID",
  "detail": true
}
Illustrative response · inventory
{
  "entities": [
    {
      "id": "EXAMPLE_ENTITY_ID",
      "type": "SalesOrder",
      "name": "EXAMPLE_ORDER_ID",
      "propertyCount": 6,
      "deleted": false
    }
  ],
  "total": 1,
  "showing": 1,
  "nextOffset": null,
  "layer": "global",
  "entityType": "SalesOrder"
}
Illustrative response · full entity
{
  "entity": {
    "id": "EXAMPLE_ENTITY_ID",
    "type": "SalesOrder",
    "name": "EXAMPLE_ORDER_ID",
    "properties": {
      "orderNumber": "EXAMPLE_ORDER_ID",
      "status": "open"
    },
    "frequencyMetadata": null,
    "deleted": false
  }
}

Response fields

Inventory responses include entities, total, showing, nextOffset, layer, and entityType. Entity properties and frequency metadata are included only when detail is requested. A full-entity response wraps the entity in entity.

fabric_read_source

Read extracted text from a source document attached to an entity. Use offset and maxChars to page through the extracted text. Text files decode directly; text from PDF, DOCX, and XLSX files is extracted on demand. The response contains text, not the original file bytes.

InputRequiredNotes
entityIdYesEntity that owns the source
sourceDocumentIndexNoDefault 0
offsetNoCharacter offset, default 0
maxCharsNoDefault 100000, max 200000
includeMetadataNoDefault true
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
Request
{
  "entityId": "YOUR_SALES_ORDER_ENTITY_ID",
  "sourceDocumentIndex": 0
}

Errors: missing entityId fails validation. An entity with no attached source cannot return file text.

fabric_add

Save an entity. The provider configured on Connect is used to classify structured properties and document uploads. Relationships are discovered from shared property values, not created as a separate write. Structured properties and an attached sourceDocument are different inputs; see Attach a source file.

InputRequiredNotes
entityTypeYesFor example SalesOrder or Customer
propertiesYesStructured business properties
entityIdNoIf omitted, a deterministic ID is generated; use the returned ID
nameNoDefaults from name-like properties
textContentNoShort searchable annotation, not a document body
sourceDocumentNoAttached file with base64Content, filename, and mimeType
processPdfOverMcpNoRequired true to process PDF over MCP; prefer Qora Add files for PDFs
modeNoupsert (default), create, or update
idempotencyKeyNoCaller-supplied idempotency label recorded with the entity properties
actorNoCaller-supplied provenance label for the human or agent making the change; it is not verified identity
layerNoWrites to a named layer within the authenticated workspace; omit for an unannotated write
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
Request · sample
{
  "entityType": "SalesOrder",
  "name": "SO-03242607",
  "properties": {
    "orderNumber": "SO-03242607",
    "customerName": "Clearview Commercial Lighting",
    "quoteReference": "QT-03242607",
    "customerPo": "CCL-2026-R117",
    "orderDate": "2026-04-02",
    "amount": 510105,
    "status": "open"
  },
  "actor": "docs-sample"
}

Errors: missing entityType or properties fails validation. PDF without processPdfOverMcp: true returns guidance to use the in-app upload path or retry with the flag. Prefer Qora’s plus control → Add files for PDFs. Extra unknown fields are rejected (additionalProperties: false). Keep 60 or fewer top-level keys and strings under 3,500 characters.

fabric_edit

Edit one existing entity. Records field-level provenance, tracks source divergence, updates search visibility, and queues connection refresh. Max 25 edits.

InputRequiredNotes
entityIdYes
editsYes1–25 operations
edits[].opYesset, remove, rename, setName, setSemanticRole, removeSemanticRole
reasonNoReason recorded with provenance; required with allowIdentityEdit for an identity-impacting write
actorNoCaller-supplied provenance label; it is not verified identity
dryRunNoDefault false; previews the edit without writing when true
allowIdentityEditNoDefault false; identity-impacting writes also require a non-empty reason
expectedUpdatedAtNoRejects the edit if the entity’s updated timestamp has changed
semanticModeNopreserve (default), classifyChanged, or explicitOnly; classifyChanged uses configured model-assisted classification
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
layerNoNamed layer within the authenticated workspace; omit for an unannotated write

set requires path and value. remove requires path. rename requires from and path. setName requires value. setSemanticRole requires property and role; role must be identity, reference, or descriptive. removeSemanticRole requires property.

Request
{
  "entityId": "YOUR_SALES_ORDER_ENTITY_ID",
  "edits": [
    {
      "op": "set",
      "path": "/properties/status",
      "value": "released"
    }
  ],
  "reason": "Release sample sales order",
  "actor": "docs-sample"
}

Errors: missing entityId or edits, more than 25 edits, or an unknown field fails validation. Confirm the change with fabric_list detail or fabric_provenance.

fabric_graph

Read-only view of how entities connect. Relationships are discovered when entities are saved, not created through this tool.

InputRequiredNotes
(none)—Defaults to tenant mode without a root
rootEntityIdNoCenters the graph; implies mode root
modeNoroot, tenant, resonance
planeNotruth, resonance, full (default), provenance
queryNoNatural-language seed selection for resonance mode
seedEntityIdNoKnown entity used as the resonance-mode seed
depthNoConnection traversal depth, default 2, max 5
includeExplanationsNoShared-property explanations on harmonic edges
includeRejectedNoInclude rejected connections for diagnostics
includeSpectralNoInclude cached Frequency Group metadata when available
clusterMethodNolouvain, spectral, or both; tenant overview defaults to louvain
maxNodesNoOptional client-requested node cap
formatNojson (default) or html
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
layerNoNamed layer within the authenticated workspace; omit for the workspace-wide graph
Request
{
  "mode": "root",
  "rootEntityId": "YOUR_SALES_ORDER_ENTITY_ID",
  "includeExplanations": true,
  "depth": 2
}

Representative response

Includes mode, plane, availablePlanes, rootEntityId, nodes, and edges. Response fields on harmonic edges can include source, target, weight, type: "harmonic", and explanation.sharedProperties with explanation.score when explanations are requested.

fabric_provenance

History for an entity or relation. The trail is append-only. Provide entityId or relationId.

InputRequiredNotes
entityIdOne ofEntity history
relationIdOne ofRelation history
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
Request
{
  "entityId": "YOUR_SALES_ORDER_ENTITY_ID"
}

Representative response

Includes targetId, totalEntries, entries[] with actor, timestamp, operation, and verification with status and verifiedCount. actor is the caller-supplied provenance label from the write; it is not verified identity. verification reports trail integrity. Response operations can include entity_create, entity_update, entity_edit, and entity_delete. An entity_edit entry can include editDetails.fieldDiffs with path, before, and after.

The schema does not mark either ID required in JSON Schema, but the tool description requires one of them. Calls with neither are not useful.

fabric_delete

fabric_delete permanently removes an entity and its attached source documents after writing delete provenance.

InputRequiredNotes
entityIdYes
reasonNoReason recorded with delete provenance
actorNoCaller-supplied provenance label; it is not verified identity
tenantIdNoDefaults to the authenticated workspace; does not authorize access to another workspace
layerNoNamed layer within the authenticated workspace; omit for the unannotated scope
Request
{
  "entityId": "YOUR_SALES_ORDER_ENTITY_ID",
  "reason": "Remove sample data",
  "actor": "docs-sample"
}

Errors: missing entityId fails validation. After success, fabric_provenance with the same entityId still returns the recorded history, including the entity_delete entry. includeDeleted remains an inventory filter; it does not restore or return a hard-deleted entity.