On this page

Connectors

get-connector-ingestion

Read a connector's ingestion, as the console's connector page shows it: the pipeline's stages, its state, the last run's counts and error, and the connector's last sync. It never starts a run, so it is safe to poll. Needs the fabric:orchestrate.read grant.

curl -sS -X POST https://fabric.wexa.ai/mcp/$FABRIC_PROJECT_ID \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H "content-type: application/json" -H "accept: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get-connector-ingestion","arguments":{"connector_id":"6b1a3d5e7f9c0b2a4d6e8f01"}}}'
{
  "content": [
    {
      "type": "text",
      "text": "{\"lifecycle_id\":\"qlc_000020\",\"result\":{\"connector_id\":\"6b1a3d5e7f9c0b2a4d6e8f01\",\"state\":\"ingested\",\"label\":\"ingested\",\"counts\":{\"nodes\":1240,\"edges\":3310},\"in_progress\":false,\"sync\":{\"status\":\"synced\",\"last_sync\":\"2026-10-10T09:00:00Z\",\"actions\":7}}}"
    }
  ],
  "isError": false
}

Parameters

ParameterTypeRequiredNotes
connector_idstringRequiredThe connector, from list-connectors. It must have been provisioned in this project. Non-empty string. One you cannot read (unknown, in another organization, provisioned in another project, or outside your access scope) is refused (403).
Show full response
  • connector_id: the connector you asked about.
  • state: draft (not configured), registered (configured, not ingested yet), ingesting, ingested, streaming or failed.
  • label: the state in words, as the console shows it. run did not finish when the last run ended without recording a result.
  • stages: the pipeline's stages in order: connected, schema_extracted, ontology_derived, queued, ingesting, ingested. Each has a status of done, current, failed or pending and, when known, started_at and ended_at.
  • counts: the last run's nodes and edges. Both are 0 before the first run and after a failed one.
  • run_status: the last run's own disposition, running, closed, or null when there is no run or it cannot be read.
  • last_om_ingest_at: when the last run recorded its result.
  • in_progress: true while a run is going.
  • error: present only when the last run failed: what went wrong, or the last run failed when the run gave no reason.
  • sync: the connector's last sync, as the console lists it: status, last_sync and actions, the number of actions. Absent when there is no sync record.

An example response, for a connector whose last run finished.

{
  "content": [
    {
      "type": "text",
      "text": "{\"lifecycle_id\":\"qlc_000020\",\"result\":{\"connector_id\":\"6b1a3d5e7f9c0b2a4d6e8f01\",\"state\":\"ingested\",\"label\":\"ingested\",\"stages\":[{\"stage\":\"connected\",\"status\":\"done\"},{\"stage\":\"schema_extracted\",\"status\":\"done\"},{\"stage\":\"ontology_derived\",\"status\":\"done\",\"started_at\":\"2026-10-10 09:00:31+00:00\",\"ended_at\":null},{\"stage\":\"queued\",\"status\":\"done\"},{\"stage\":\"ingesting\",\"status\":\"done\",\"started_at\":\"2026-10-10 09:00:31+00:00\",\"ended_at\":\"2026-10-10 09:04:12+00:00\"},{\"stage\":\"ingested\",\"status\":\"done\"}],\"counts\":{\"nodes\":1240,\"edges\":3310},\"run_status\":\"closed\",\"last_om_ingest_at\":\"2026-10-10T09:04:12Z\",\"in_progress\":false,\"sync\":{\"status\":\"synced\",\"last_sync\":\"2026-10-10T09:00:00Z\",\"actions\":7}}}"
    }
  ],
  "isError": false
}

For a run that failed, state is failed, the ingesting stage is failed, and error says what went wrong.

For a run that failed, state is failed, the ingesting stage is failed, and error says what went wrong.

More details

get-connector-sync follows one sync that sync-connector started. This call is the connector's standing picture, whatever started the last run, so it needs no sync_id.

A connector that has never been ingested is not an error. It comes back with its state, every later stage pending, and zero counts.

The connector id in the example is illustrative: swap it for one list-connectors returned to you. The error codes are S8:connector-not-usable and S4:validate-input. Reading the ingestion needs only fabric:orchestrate.read, so a key that watches a connector does not need the power to sync it. Not marked consequential. See ingestion.

Every tool call works the same way: How every tool call works.