Fibric. Docs fibric.io →
v1.0.0 · stable
Reference

Connectors API

A connector plugs Fibric into a system you already run, software or hardware, and advertises its capabilities by intent over MCP. This page documents installing a connector from the marketplace, listing and inspecting installed connectors, running a connection test, and uninstalling. What a connector is conceptually is covered in Connectors.

Shared conventions, including authentication, pagination, the Idempotency-Key header, and the error envelope, are defined in the API overview. Error codes are catalogued in Errors.

The connector object

An installed connector is an instance of a marketplace listing, bound to your tenant with its own credentials. The instance id (prefix cn_) is distinct from the listing id, which names the marketplace entry it was installed from, for example cn-magento.

idstring

Unique identifier of this installed instance, prefixed cn_.

objectstring

Always connector.

listingstring

The marketplace listing this instance was installed from, for example cn-magento, cn-kustomer, or cn-amazon-connect. Browse listings in the marketplace.

namestring

Instance label within the tenant, for example magento-us-store. Defaults to the listing id when omitted at install.

kindstring

saas or hardware. Set by the listing.

transportstring

Always mcp. Every connector is an MCP server; the kernel hardcodes no vendor.

capabilitiesstring[]

Capabilities this instance fulfills, in noun.verb form. Operators bind to these names, never to the connector directly.

toolsobject[]

The tools the connector exposes over MCP: name and side_effect. Side-effecting tools are the ones the executor gates behind the trust policy and idempotency keys.

authobject

Auth summary: type (api_key, oauth2, or basic) and a masked hint. Secrets are write-only; they are never returned by any read.

statusstring

connected, pending_auth, or error. A connector in error keeps its configuration; fix credentials and re-test.

created_atstring

RFC 3339 timestamp of installation.

last_synced_atstring or null

Last successful sense from the source system. null before the first sync.

json · the connector object
{
  "id": "cn_7d2f4a",
  "object": "connector",
  "listing": "cn-magento",
  "name": "magento-us-store",
  "kind": "saas",
  "transport": "mcp",
  "capabilities": ["order.read", "order.hold", "order.notify"],
  "tools": [
    { "name": "order.read",   "side_effect": false },
    { "name": "order.hold",   "side_effect": true },
    { "name": "order.notify", "side_effect": true }
  ],
  "auth": { "type": "api_key", "hint": "mg_****41" },
  "status": "connected",
  "created_at": "2026-06-18T10:02:00Z",
  "last_synced_at": "2026-07-02T14:59:40Z"
}
GET

List installed connectors

GET/v1/connectorsscope connectors:read

Returns the tenant's installed connector instances, newest first, cursor-paginated. This lists what you have installed, not the marketplace catalog.

capabilitystring · query

Only connectors that fulfill this capability, for example order.hold.

kindstring · query

Filter by saas or hardware.

statusstring · query

Filter by connected, pending_auth, or error.

limitinteger · query

Page size, 1–100. Defaults to 20.

cursorstring · query

Pagination cursor from a previous response's next_cursor.

curl
curl "https://api.fibric.io/v1/connectors?capability=order.hold" \
  -H "Authorization: Bearer $FIBRIC_KEY"
200 OK Response
json
{
  "object": "list",
  "data": [
    {
      "id": "cn_7d2f4a",
      "object": "connector",
      "listing": "cn-magento",
      "name": "magento-us-store",
      "kind": "saas",
      "capabilities": ["order.read", "order.hold", "order.notify"],
      "status": "connected"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
POST

Install a connector

POST/v1/connectorsscope connectors:write

Installs a marketplace listing into the tenant with its auth configuration. Listings marked live in the marketplace, currently cn-kustomer, cn-magento, and cn-amazon-connect, install immediately. Early-access listings return 422 listing_early_access; they are provisioned with your team during onboarding rather than self-served.

For api_key and basic auth the connector connects on install. For oauth2 the response is pending_auth with an authorize_url; the connector becomes connected after the authorization dance completes.

listingrequiredstring · body

The marketplace listing id, for example cn-magento. An id that is not in the catalog fails with 404 not_found.

authrequiredobject · body

Credentials for the source system. Shape depends on the listing's auth type: {"type":"api_key","key":"…"}, {"type":"basic","username":"…","password":"…"}, or {"type":"oauth2"} to begin the authorization flow. Stored in the tenant vault, write-only.

namestring · body

Instance label, unique within the tenant. Required if you install the same listing twice, for example two Magento stores.

configobject · body

Listing-specific settings, for example a store base URL or an Amazon Connect instance id. The listing's marketplace page documents its keys.

curl
curl -X POST https://api.fibric.io/v1/connectors \
  -H "Authorization: Bearer $FIBRIC_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: install-magento-us-store" \
  -d '{
    "listing": "cn-magento",
    "name": "magento-us-store",
    "auth": { "type": "api_key", "key": "mg_live_9f4c2e8b1a41" },
    "config": { "base_url": "https://store.acme.com" }
  }'
201 Created Response
json
{
  "id": "cn_7d2f4a",
  "object": "connector",
  "listing": "cn-magento",
  "name": "magento-us-store",
  "kind": "saas",
  "transport": "mcp",
  "capabilities": ["order.read", "order.hold", "order.notify"],
  "auth": { "type": "api_key", "hint": "mg_****41" },
  "status": "connected",
  "created_at": "2026-07-02T15:20:00Z",
  "last_synced_at": null
}

Error cases:

StatusCodeWhen
400missing_parameterlisting or auth is absent.
400invalid_parameterauth.type does not match the listing's declared auth, or a required config key is missing.
404not_foundNo marketplace listing with this id.
409state_conflictAn instance with this name already exists in the tenant.
422listing_early_accessThe listing is early access and not yet self-serve. Request access and it is provisioned during onboarding.
422auth_failedThe source system rejected the supplied credentials. Nothing was installed.
i
Premium listings and billing

The platform is free during early access. Premium connectors are priced from $29 per source per month and operator packs from $49 per operator per month; installing a priced listing states the price in the marketplace and on the install response. Nothing is charged silently.

GET

Retrieve a connector

GET/v1/connectors/{connector_id}scope connectors:read

Returns the full connector object, including its tools and health. Secrets are never included.

connector_idrequiredstring · path

The installed instance id, for example cn_7d2f4a.

curl
curl https://api.fibric.io/v1/connectors/cn_7d2f4a \
  -H "Authorization: Bearer $FIBRIC_KEY"
200 OK Response

Returns the connector object. A cross-tenant id reads as 404 not_found.

POST

Test a connector

POST/v1/connectors/{connector_id}/testscope connectors:write

Runs a connection test against the real source. Read tools execute for real; side-effecting tools dry-run only, validating auth and reachability without writing anything. This mirrors fibric connector test in the CLI. A failing test moves the connector to error and reports which tool failed and why.

connector_idrequiredstring · path

The installed instance to test.

toolsstring[] · body

Optional subset of tool names to test. Omit to test every tool the connector exposes.

curl
curl -X POST https://api.fibric.io/v1/connectors/cn_7d2f4a/test \
  -H "Authorization: Bearer $FIBRIC_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "tools": ["order.read", "order.hold"] }'
200 OK Response
json
{
  "object": "connector_test",
  "connector_id": "cn_7d2f4a",
  "status": "passed",
  "results": [
    { "tool": "order.read", "mode": "live",    "ok": true, "latency_ms": 184 },
    { "tool": "order.hold", "mode": "dry_run", "ok": true, "latency_ms": 211 }
  ],
  "tested_at": "2026-07-02T15:22:31Z"
}

Error cases:

StatusCodeWhen
400invalid_parameterA name in tools is not a tool this connector exposes.
404not_foundNo connector with this id exists for the tenant.
409state_conflictThe connector is pending_auth; complete authorization first.
502connector_upstream_errorThe source system was unreachable. The connector moves to error; the body carries the upstream detail.
DELETE

Uninstall a connector

DELETE/v1/connectors/{connector_id}scope connectors:write

Removes the instance and purges its credentials from the vault. Events it already ingested and receipts that reference it are kept; the audit trail is never thinned by an uninstall. If any active operator depends on a capability only this connector fulfills, the request fails with 409 connector_in_use and the body lists the dependent operators; pause them or bind the capability to another connector first.

connector_idrequiredstring · path

The installed instance to remove.

curl
curl -X DELETE https://api.fibric.io/v1/connectors/cn_7d2f4a \
  -H "Authorization: Bearer $FIBRIC_KEY"
200 OK Response
json
{
  "id": "cn_7d2f4a",
  "object": "connector",
  "deleted": true
}
409 Conflict When operators depend on it
json
{
  "error": {
    "type": "conflict_error",
    "code": "connector_in_use",
    "message": "order.hold is fulfilled only by cn_7d2f4a; operators op_8f2a1c depend on it.",
    "doc_url": "https://fibric.io/docs/errors#connector_in_use",
    "request_id": "req_2c8d90f1"
  }
}
!
Swapping vendors is configuration, not a rewrite

Because operators bind to capabilities and not to connectors, replacing one source with another is: install the new connector, confirm it fulfills the same capabilities, uninstall the old one. No operator changes. See Capabilities.