Skip to content

Agent Builder

The Agent Builder is the primary interface for creating and configuring agents in Manifest Platform. It provides a visual workspace where you assemble an agent from components -- model, prompt, tools, schemas -- and configure execution parameters.


Creating an Agent

Navigate to Solution Builder > Agents and click New Agent. You will be prompted for:

Field Description Example
Name Human-readable agent name Customer Support Agent
Slug URL-safe identifier (auto-generated from name) customer-support-agent
Description What this agent does Handles tier-1 support tickets using Jira and knowledge base
Framework Agent runtime framework pydantic_ai (default)
Version Semantic version 1.0.0
enable_conversations Persist message history across turns (bool, default false) false
persona_constraints Behavioral guardrails applied at runtime (list of strings) ["never share PII", "escalate legal questions"]
tags Labels for search and filtering ["support", "tier-1"]
certification_status Lifecycle stage: draft, certified, or deprecated draft (default)
visibility Who can see and use the agent workspace (default), private, organization, marketplace
marketplace_publisher Publisher name when visibility is marketplace (optional) Acme Corp

Frameworks

Manifest Platform supports multiple agent frameworks: pydantic_ai, langchain, google_adk, and strands. Pydantic AI is the default and recommended framework for most use cases.


Configuring the Model

Every agent requires a model component that defines which language model to use. Select an existing model from your workspace or create a new one.

A model component specifies:

  • Provider and model string -- e.g., anthropic/claude-sonnet-4-20250514, openai/gpt-4o
  • Temperature -- Controls response randomness (0.0 = deterministic, 2.0 = highly creative)
  • Max tokens -- Upper limit on response length
  • Top-p -- Nucleus sampling parameter
  • Timeout -- Maximum seconds to wait for a model response
  • Fallback chain -- Backup models if the primary is unavailable
{
  "name": "Claude Sonnet",
  "slug": "claude-sonnet",
  "model": "anthropic/claude-sonnet-4-20250514",
  "provider": "anthropic",
  "temperature": 0.3,
  "max_tokens": 4096,
  "use_proxy": true,
  "fallback_to_direct": true
}

AI Gateway routing

When use_proxy is enabled, all model calls route through the platform's AI Gateway (powered by LiteLLM). The gateway handles API key management, rate limiting, cost tracking, and automatic fallback -- your agent configuration never contains raw provider API keys.


Writing the System Prompt

The system prompt defines your agent's behavior, personality, and constraints. You can configure it in two ways:

Inline Prompt

Write the system message directly in the agent configuration. Good for simple agents.

Prompt Component

Reference a versioned prompt component for reuse across agents. Prompt components support:

  • Static templates with variable interpolation ({customer_name}, {company})
  • Dynamic function refs that generate prompt content at runtime
  • Role assignment (system, user, assistant)
You are a customer support agent for Acme Corp. You help customers
with billing questions, account issues, and product inquiries.

Rules:
- Always be polite and professional
- Never share internal pricing or discount structures
- Escalate refund requests over $500 to a human agent
- Use the knowledge base tool before saying "I don't know"
name: Support Agent Prompt
slug: support-agent-prompt
system_message: |
  You are a customer support agent for {company_name}.
  You help customers with billing, account, and product questions.

  Rules:
  - Always be polite and professional
  - Escalate refund requests over ${refund_threshold} to a human
  - Use the knowledge base tool before saying "I don't know"
static_templates:
  - content: "Customer context: {customer_context}"
    role: system
    variables: ["customer_context"]

Attaching Tools

Tools give your agent the ability to take actions beyond text generation. In the Agent Builder, you add tools by selecting from available tool components in your workspace.

Tool Types

Implementation Type Description Example
codeblock Runs a Python code block Data transformation, calculations
function Calls a Python function path Internal service calls
api_endpoint Calls an external HTTP endpoint Third-party API integrations
agent Delegates to another agent Specialized sub-tasks
dataset Queries a dataset catalog entry Knowledge retrieval, lookup tables
mcp_server Routes calls through an MCP server Platform-managed connector tools

Connector-Based Tools

Connectors with MCP enabled automatically generate tools that agents can use. When you attach a connector instance to an agent, its operations become callable tools. See MCP Configuration for details.

Tool Configuration

Each tool component defines:

{
  "name": "Search Knowledge Base",
  "slug": "search-knowledge-base",
  "implementation_type": "codeblock",
  "implementation_ref": "a1b2c3d4-...",
  "parameters": [
    {
      "name": "query",
      "type": "string",
      "description": "Search query text",
      "required": true
    },
    {
      "name": "max_results",
      "type": "integer",
      "description": "Maximum results to return",
      "required": false,
      "default": 10
    }
  ],
  "timeout_seconds": 30,
  "retry_max_attempts": 2
}

Tool count considerations

While there is no hard limit on tools per agent, each tool adds to the model's context window. Most agents work best with 5-15 focused tools. If you need more, consider splitting into specialized sub-agents.


Structured Output

Attach a schema component to constrain the agent's response to a specific structure. This is useful when agent output feeds into downstream systems.

{
  "schema_type": "json_schema",
  "fields": [
    {"name": "sentiment", "type": "string", "description": "positive, negative, or neutral"},
    {"name": "confidence", "type": "number", "description": "0.0 to 1.0"},
    {"name": "topics", "type": "array", "description": "List of detected topics"},
    {"name": "summary", "type": "string", "description": "One-sentence summary"}
  ],
  "strict_validation": true
}

When structured output is configured, the platform validates the agent's response against the schema before returning it to the caller. Invalid responses are retried automatically.


Conversation Persistence

Enable enable_conversations to give the agent memory across turns. With conversations enabled:

  • Message history is stored and loaded automatically per conversation ID
  • The agent sees all prior turns when processing a new message
  • Conversations can be listed, retrieved, and deleted via the API

This is essential for chatbot-style agents but adds token cost for long conversations.


Visibility and Access

Control who can see and use the agent:

Visibility Who Can Access
private Only the creator
workspace Anyone in the workspace
organization Anyone in the organization
marketplace Published to the component marketplace

Validation

Before saving, the Agent Builder validates your configuration:

  • Model reference exists and is accessible in your workspace
  • All tool references resolve to valid tool components
  • Prompt reference (if used) exists
  • Schema references are valid
  • No circular dependencies (agent tools referencing the same agent)

Validation issues are categorized as errors (must fix), warnings (should fix), and info (suggestions).


SDK Example

You can also create agents programmatically using the SDK:

Coming Soon

The Python SDK for local development is not yet publicly available.

from flow_sdk.cli_client import CLIClient

client = CLIClient(config)

agent = client.agents.create({
    "name": "Data Analyst",
    "slug": "data-analyst",
    "description": "Analyzes datasets and generates insights",
    "model_ref": "uuid-of-model-component",
    "tool_refs": [
        "uuid-of-query-tool",
        "uuid-of-chart-tool",
    ],
    "prompt_ref": "uuid-of-analyst-prompt",
    # schema_refs is a dict[str, UUID] — multiple named schemas can be attached
    "schema_refs": {
        "output": "uuid-of-output-schema",
        "context": "uuid-of-context-schema",
    },
    "tags": ["analytics", "reporting"],
    "certification_status": "draft",
    "visibility": "workspace",
})

print(f"Created agent: {agent['id']}")

Or use the Agent Builder UI: navigate to Components > Agents > New, fill in the configuration, and click Create.


Next Steps

Once your agent is configured, head to the Playground to test it interactively before deploying.