.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: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 samename (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:- Call
import_agent_manifestwith the manifest (over the Omni MCP endpoint, authenticated with an org API key). The report returns theagent_id. - Set credentials headlessly:
POST /v1/agents/{agent_id}/workspace/secretswith your org API key writes the same vault the browser link does. - Re-run the same call on every change; the import is idempotent, so the pipeline converges the deployed agent to the manifest.
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.
