Skip to main content
If you already have an agent defined somewhere else, a Claude Code agent .md, an internal system’s export, or a definition your pipeline generates, you don’t rebuild it by hand. xpander imports it: one call creates (or updates) the agent, deploys it with a workspace, seeds its files, wires its schedules, and returns a report that accounts for every piece of the source definition. Every way in lands on the same import engine:

The conversational flow

From any surface where you talk to Omni, Xpander Chat or an MCP client connected through Omni in your MCP client, simply hand over the definition:
In Claude Code you can go the other way too. With Claude Code connected to Omni’s MCP endpoint, ask it to “export this agent to xpander” and it passes the definition across for you. Omni parses the definition, runs the import, and relays the full report, including every tools entry in the source that has no xpander skill equivalent, named one by one, with a suggested next step for each.

The direct flow: import_agent_manifest

When the agent arrives as structured data rather than a Claude .md, skip the parsing and pass the canonical manifest object to the import_agent_manifest call (available in any Omni conversation, including over MCP):
The REST API has a separate import for agents published as templates. The Import agent endpoint (POST /v1/agents/template_import/{template_id}) copies a template from your organization, or one shared with it, into a new agent. The manifest import on this page is for definitions that live outside xpander.

Manifest fields

Validation is all-or-nothing: a manifest that doesn’t validate imports nothing, and the error names each bad field with how to fix it.

What happens to each asset

Credentials: where each kind is entered

Secret values never travel through the import, the conversation, or the report. Where the values live afterwards, and who may reach them, is on Credentials.

Idempotent re-import

Re-running an import with the same name (as the same user) updates the existing agent in place: instructions and description are rewritten, files re-seeded, and missing schedules and MCP endpoints added (matched by (cron, prompt) and by URL). The report says updated, not created. This makes the manifest safe to keep in version control and re-apply on every change.

The CI flow

A pipeline provisions an agent with the same manifest and no human in the loop:
  1. Call import_agent_manifest with the manifest (over the Omni MCP endpoint, authenticated with an org API key). The report returns the agent_id.
  2. Set credentials headlessly: POST /v1/agents/{agent_id}/workspace/secrets with your org API key writes the same vault the browser link does.
  3. Re-run the same call on every change; the import is idempotent, so the pipeline converges the deployed agent to the manifest.
Local stdio processes stay consent-gated even in CI: the import names them in its report, and a person approves the command once, on the card.
The import is non-blocking on anything it cannot map: the agent deploys anyway, and the report names every tools entry, endpoint, and credential that still needs you. Nothing is dropped silently.
Once the agent exists, Agent settings is where you adjust its model, instructions and runtime behavior.