Skip to main content

Signature

Required Parameters

The build API validates that all three are present. Missing any returns HTTP 400 with "phase": "validate".

id

  • Type: str
  • Description: Unique identifier for the agent. Use kebab-case.
  • Constraints: Must be unique within your space.
  • Example: "text-analyzer", "github-helper", "jira-operations"

version

  • Type: str
  • Description: Semantic version of the agent.
  • Example: "1.0.0", "2.1.0-alpha.1"
  • Behaviour: Multiple versions coexist on disk; Friday resolves the ID to the highest semver version.

description

  • Type: str
  • Description: What the agent does. Used by the planner for delegation decisions.
  • Guidance: Be specific about capabilities and use cases. 50-200 characters.
  • Required: Build fails without this field.

Optional Parameters

display_name

  • Type: str | None
  • Description: Human-readable name for the UI. Falls back to id if not provided.

summary

  • Type: str | None
  • Description: One-line summary for agent listings.

constraints

  • Type: str | None
  • Description: Limitations, requirements, or conditions for using the agent.
  • Example: "Requires GitHub token. Cannot access space database tables."

examples

  • Type: list[str] | None
  • Description: Example prompts that trigger this agent. Helps the planner learn delegation patterns.

input_schema

  • Type: type | None
  • Description: Dataclass type for structured input parsing. Currently informational; used for documentation generation.

output_schema

  • Type: type | None
  • Description: Dataclass type for structured output. Passed to agent via ctx.output_schema.

use_workspace_skills

  • Type: bool
  • Default: False
  • Description: Whether the agent loads space skills before execution.

Environment Configuration

environment

  • Type: dict[str, Any] | None
  • Description: Environment variable requirements.
Access in agent code via ctx.env["API_KEY"].

MCP Configuration

mcp

  • Type: dict[str, Any] | None
  • Description: MCP servers to launch alongside the agent.

LLM Configuration

llm

  • Type: dict[str, Any] | None
  • Description: Default LLM provider and model for the agent.
Used when ctx.llm.generate() is called without explicit model. See How to Call LLMs for resolution order.

Handler Function Signature

The decorated function receives:

Parameters

  • prompt - The enriched prompt string from Friday (includes task, context, temporal facts)
  • ctx - AgentContext with capabilities and metadata

Return Types

Return either:
  • ok(data) - Success with structured data
  • ok(data, extras=AgentExtras(...)) - Success with metadata
  • err(message) - Failure with error message

Example

Registration Validation

When you register an agent, the daemon validates metadata. Errors return:

Version Semantics

Agent versions follow Semantic Versioning:
  • MAJOR - Breaking changes to agent behavior
  • MINOR - New capabilities, backwards compatible
  • PATCH - Bug fixes, backwards compatible
Friday resolves agent references to the latest semver version:
Both versions remain on disk; rollback is possible by adjusting the space reference or rebuilding with a downgraded version.

See Also

AgentContext

Execution context and capabilities

Result Types

ok() and err() constructors

How to Use MCP Tools

Task-oriented guide for MCP tool integration