> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hellofriday.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Agents

> Built-in and custom agents that execute operations in your agentic workflows.

Agents are what do the actual work in your Friday jobs. There are three types you can declare in `workspace.yml`: `atlas` (built-in), `llm` (inline), and `user` (custom Python).

## atlas — built-in agents

Built-in agents are the fastest path. Friday ships with a growing library of them for common integrations. Reference them by ID in your space:

```yaml workspace.yml theme={null}
agents:
  gh:
    type: atlas
    agent: gh
    description: "Runs GitHub CLI operations — clone, review, post comments."
    prompt: "Execute GitHub CLI operation."
    env:
      GH_TOKEN: from_environment
```

The `prompt` field is per-invocation task context layered on the agent's built-in behavior — describe what you want, not how to do it. The `env` block passes credentials; use `from_environment` to pull from the daemon's environment.

**Built-in agents are black-box.** They have their own internal tool surface and ignore the `tools` array. If you need to call specific MCP tools, use `type: llm` instead.

Some available built-in agents:

Agents that call an LLM use `ANTHROPIC_API_KEY` by default — `OPENAI_API_KEY`, `GEMINI_API_KEY`, and `GROQ_API_KEY` are also supported experimentally. The table lists only the **additional** credentials each agent needs beyond the LLM key.

| Agent ID           | What it does                                                                 | Additional credentials                                                               |
| ------------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `web`              | Web research, browser automation, JS-rendered pages                          | Optional `PARALLEL_API_KEY` for search                                               |
| `slack`            | Post messages to Slack channels and DMs                                      | `SLACK_MCP_XOXP_TOKEN`                                                               |
| `get-summary`      | Condense long-form content into formatted summaries                          | None                                                                                 |
| `claude-code`      | Code generation, debugging, and codebase analysis in a sandboxed environment | Optional `GH_TOKEN`                                                                  |
| `gh`               | GitHub CLI operations — clone repos, view PRs, fetch diffs, post reviews     | `GH_TOKEN`                                                                           |
| `bb`               | Bitbucket Cloud — clone repos, review PRs, post comments                     | `BITBUCKET_EMAIL` + `BITBUCKET_TOKEN`                                                |
| `jira`             | Jira Cloud — read, create, update issues and transitions                     | `JIRA_EMAIL` + `JIRA_API_TOKEN` + `JIRA_SITE`                                        |
| `transcribe`       | Transcribe audio files to text using Whisper                                 | `GROQ_API_KEY`                                                                       |
| `hubspot`          | HubSpot CRM — search, read, create, update contacts/deals/companies          | `HUBSPOT_ACCESS_TOKEN`                                                               |
| `image-generation` | Generate new images and edit existing image artifacts                        | `GEMINI_API_KEY`                                                                     |
| `knowledge-hybrid` | Hybrid RAG knowledge base search (BM25 + vector + reranker)                  | `KNOWLEDGE_CORPUS_PATH` + `FIREWORKS_API_KEY`, optional `GROQ_API_KEY` for reranking |

This is a selection of available built-in agents — more are being added all the time. To browse the full list, open the [Agent Tester](/guides/agent-tester) in the Studio.

## llm — inline LLM agents

Define an LLM agent directly in `workspace.yml` when no built-in agent covers your domain. Specify provider, model, system prompt, and the MCP tools it can call:

```yaml workspace.yml theme={null}
agents:
  email-triage:
    type: llm
    description: "Classifies inbound email as urgent, tracking, or ignore."
    config:
      provider: anthropic
      model: claude-sonnet-4-6
      prompt: |
        You triage inbound email. Classify each message as one of:
        urgent, tracking, ignore. Return JSON: { category, reason }.
      tools:
        - google-gmail/search_gmail_messages
        - google-gmail/get_gmail_message_content
      max_steps: 6
```

Tool names use `serverId/toolName` format — the server ID comes from `tools.mcp.servers` in your space. Built-in platform tools (`memory_save`, `memory_read`) need no prefix. Use the [Agent Tester](/guides/agent-tester) to browse available tools.

Supported providers: `anthropic`, `openai`, `google`, `groq`. Additional `llm` config fields: `temperature` (default `0.3`), `max_tokens`, `max_retries`, `timeout`, `tool_choice`, and `provider_options` for pass-through provider configuration.

## user — custom agents

Build your own agent with the [Agent SDK](/sdk/overview) when you need to wrap internal APIs or business logic. Python is supported today; more languages are coming soon. Register the agent with the daemon, then reference it by ID:

```yaml workspace.yml theme={null}
agents:
  my-agent:
    type: user
    description: "Wraps our internal data API."
    env:
      API_KEY: from_environment
```

Register with the daemon (no restart required):

```bash theme={null}
friday agent register /abs/path/to/my-agent
```

See the [Agent SDK documentation](/sdk/overview) for how to write agents. Use the [Agent Tester](/guides/agent-tester) to test any agent in isolation before wiring it into a workflow.

## MCP tools

Agents can call external tool servers via <Tooltip tip="Model Context Protocol">MCP</Tooltip>. Declare servers at the space level — they're available to any `llm` or `user` agent in the space. See [MCP Tools](/core-concepts/mcp).

## Declaration order

Declare agents **before** jobs in `workspace.yml`. Jobs reference agents by ID in FSM `entry` actions — the validator raises `unknown_agent_id` if the agent isn't declared first.

<Note>
  **Let Friday write your agent.** Describe what you need in the Studio chat — Friday will scaffold a working agent, register it with the daemon, and wire it into your space. You can also install the [`writing-friday-python-agents`](https://github.com/friday-platform/agent-sdk/tree/main/packages/python/skills/writing-friday-python-agents) skill in Claude Code to author agents locally.
</Note>
