Open Connector
Connectors & Tools

Connectors

How Runtime Catalog toolkits, execution definitions, and connected accounts fit together.

Open Connector has one connectable catalog identity: a toolkit. A toolkit owns its authentication methods, endpoint configuration, metadata, and the tools an agent can call. There is no separate runtime provider or auth-provider layer.

Runtime Catalog model

Catalog objectOwnsRuntime representation
Toolkit definitionName, discovery metadata, authMethods, optional connection fields, and trusted API endpoints.One row in runtime_toolkit_catalog.
Tool definitionAgent-facing input/output schemas, scopes, tags, and lifecycle.One row in tool_catalog.
ExecutionDefinitionDeclarative HTTP or GraphQL request mapping, or a named custom executor.JSONB on the tool row; loaded only when the tool executes.
Trigger typeEvent schema plus a lazy transport key.One row in trigger_type_catalog.
ConnectionA user's encrypted credentials for a selected toolkit authentication method and project scope.Stored independently from the catalog.

Compiled catalog artifacts are source controlled under packages/tool-registry/artifacts/<toolkit>/catalog.json or catalog.json.gz when the per-Toolkit release manifest marks compression: "gzip". The release manifest records the complete, verified set and artifact digest. The server reads only the PostgreSQL Runtime Catalog; it never falls back to static tool modules.

Authentication methods

Each toolkit contains an authMethods array. An entry has a namespaced id such as github.oauth2 and is either available or explicitly unavailable with a reason.

KindWhat the user suppliesWhat Open Connector does
oauth2Browser consent, or client credentials when configured.Builds the authorization URL, exchanges and refreshes tokens, then stores them encrypted.
api_keyA long-lived key or token.Encrypts the supplied fields and injects them using the selected method's request template.
basicUsername/password or equivalent key/secret pair.Encrypts both values and injects the configured request fields.

Endpoint defaults never contain credentials. Credential injection belongs to the selected authentication method, so an execution definition remains portable and can be published without secrets.

Artifact example

This abbreviated artifact defines a toolkit and one declarative HTTP tool. The same shape is used for OpenAPI and GraphQL declarations after compilation.

{
  "version": "v1",
  "toolkit": {
    "slug": "my-crm",
    "name": "My CRM",
    "authMethods": [{ "id": "my-crm.oauth2", "kind": "oauth2", "status": "available" }],
    "endpoints": {
      "api": { "baseUrl": "https://api.mycrm.com/v2", "allowedBaseUrls": [], "defaultHeaders": {} }
    }
  },
  "tools": [{
    "definition": { "slug": "MY_CRM_CONTACTS_LIST", "toolkit_slug": "my-crm", "name": "List contacts" },
    "executionDefinition": { "version": "v1", "kind": "http", "endpointKey": "api", "method": "GET", "path": "/contacts" }
  }],
  "triggerTypes": []
}

Publishing and using the deployed catalog

After changing a Toolkit's declarations, compile that Toolkit, assemble the catalog release, and publish it explicitly to the database used by the server:

pnpm tools:compile -- --toolkit my-crm
pnpm catalog:build
DATABASE_URL='postgres://…' pnpm tools:publish-catalog

Publication validates artifact digests and atomically projects the release into PostgreSQL. It is separate from server startup and from database migrations, so a running service never silently changes its executable catalog.

For an agent or integration, the normal sequence is:

  1. Discover a toolkit and its supported authentication methods.
  2. Create or choose an auth configuration for that toolkit and method.
  3. Create a connection for the user and project scope.
  4. Invoke a tool through that connection.

See API reference for the exact discovery and execution routes, and Connected accounts for the credential lifecycle.

On this page