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
| Parameter | Type | Required | Notes |
|---|---|---|---|
connector_id | string | Required | The 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,streamingorfailed.label: the state in words, as the console shows it.run did not finishwhen 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 astatusofdone,current,failedorpendingand, when known,started_atandended_at.counts: the last run'snodesandedges. Both are0before the first run and after a failed one.run_status: the last run's own disposition,running,closed, ornullwhen there is no run or it cannot be read.last_om_ingest_at: when the last run recorded its result.in_progress:truewhile a run is going.error: present only when the last run failed: what went wrong, orthe last run failedwhen the run gave no reason.sync: the connector's last sync, as the console lists it:status,last_syncandactions, 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.