npx claudepluginhub alation/alation-plugins --plugin alationThis skill uses the workspace's default tool permissions.
Create and manage agents, tools, LLMs, and data source connections.
Guides designing AI agent tools with principles for workflows, context optimization, naming, input/output schemas, error handling, and evaluation.
Browse, list, filter, show details, suggest, and run saved Octave AI agents for email sequences, content generation, call prep, enrichment, and qualification.
Builds AI agents with Pydantic AI: tools, capabilities, structured output, streaming, YAML-defined agents, testing, multi-agent patterns. For pydantic_ai imports or agent requests.
Share bugs, ideas, or general feedback.
Create and manage agents, tools, LLMs, and data source connections.
| User Intent | CLI Command | When to Use |
|---|---|---|
| Manage AI agents | python -m cli agent | Create, clone, update, delete, publish agents |
| Manage tools | python -m cli tool | Create HTTP/SMTP tools, update, delete |
| Manage LLMs | python -m cli llm | BYOM setup, credentials, LLM configs |
| Manage data sources | python -m cli datasource | Create, update, delete data source connections |
automateaskcurateexploreKey distinction: configure creates and manages the infrastructure (agents, tools, LLMs, connections). automate uses that infrastructure in workflows. "Create an SMTP tool" is configure. "Set up a daily email report" is automate.
Define the agent's purpose. What should it do? Be specific — "answer sales questions against the superstore dataset" is better than "answer questions."
Identify the data and context it needs. What data products, data sources, or domain knowledge will the agent work with? Some of this becomes fixed tool bindings (step 5), some goes into the agent prompt (step 6).
Select tools. Browse available tools with python -m cli tool list and see references/default-tools.md for the selection matrix. Pick the combination needed for the agent's purpose. If a required tool doesn't exist (e.g., an HTTP or SMTP integration), create it first — see Tool Configuration below.
Create the agent config with the selected tools:
python -m cli agent create < config.json
Tip: if a default agent is close to what you need, clone it as a starting point:
python -m cli agent clone ID
Configure tool parameter bindings. Bindings control how tool parameters get their values at runtime, constraining what the agent can do for reliability and consistency. For each tool parameter, choose a binding source:
fixed: The value is always the same. Use this to lock a tool to a specific resource like a data_product_id. The agent can't change it.user: The caller provides the value when invoking the agent. Use for things like a recipient email or a data_product_id when the agent supports multiple products.agent: The LLM decides the value based on the conversation. This is the default for most parameters — the agent interprets the user's message and figures out what to pass to the tool. For example, data_product_id can be agent-determined if the agent has a search tool and is expected to find the right product itself.Some parameters are hidden from the model (x-hidden-from-model: true) and must be fixed or user since the LLM can't see them to decide.
See references/bindings.md for JSON structure, validation rules, and detailed patterns.
Configure the agent prompt. Describe the agent's high-level goal, its domain context, and when to use each of its tools. This is the agent's system prompt — it guides the LLM's behavior.
Choose the LLM. Pick a model powerful enough for the task. See references/default-llms.md for recommendations by use case.
Test the agent. Use the ask skill to send it a message and verify it works:
echo '{"message": "..."}' | python -m cli chat send <agent_uuid>
python -m cli agent publish ID makes an agent callable by other agents.
See references/http-tools.md for full guide. Key constraints:
See references/smtp-tools.md for provider-specific configs (SendGrid, AWS SES, Gmail, M365).
Important: Before creating a new tool, always list existing tools first with python -m cli tool list. An SMTP or HTTP tool may already be configured.
python -m cli llm creds-create < creds.json
See references/credentials.md for provider-specific formats (API_KEY, AWS, AZURE, GCP).python -m cli llm creds-validate ID --provider PROVIDER --model MODELpython -m cli llm create < config.json referencing the credential ID. See references/providers.md for provider model details.python -m cli datasource list / python -m cli datasource get ID / python -m cli datasource create / python -m cli datasource update ID / python -m cli datasource delete IDMistake: Copying a data product's full spec into the agent prompt to "teach" it about the data.
Why it seems reasonable: the agent needs to know what data is available.
Instead: Set data_product_id as a fixed parameter binding on the agent's tools. The tools will fetch the product context at runtime. See references/bindings.md pattern 1.
Mistake: Creating a new SMTP tool when one already exists.
Why it seems reasonable: the user asked to send email.
Instead: Run python -m cli tool list first. Look for existing tools with tool_type: "SMTP".
Mistake: Asking the user for an API token or credentials during agent/tool creation.
Why it seems reasonable: auth might seem like a per-operation concern.
Instead: Authentication is handled automatically by credentials.local. If auth fails, direct the user to the setup skill.
After finishing configuration, suggest next steps to the user — but don't proceed without their go-ahead unless their original request already implies it.
url from the CLI response so the user can view it in the Alation UI.