Skip to content

Author agents

You can create a Fontana agent outside Flow, as a folder, and upload it on AI → Agent packages (/ai/agents). The folder holds AGENT.md (YAML frontmatter plus a Markdown system prompt). Optional files are schedules.json and an image under avatars/.

The directory name is the agent slug (lowercase, hyphenated). AGENT.md sits directly inside it.

nav-analyst/
├── AGENT.md # Required
├── schedules.json # Optional
└── avatars/
└── avatar.png # Optional; frontmatter icon points here

Upload folder on a namespace you created. Fontana keeps the tree and registers the agent. The id is <namespace>/<folder>, for example finance/nav-analyst when you upload this folder into finance.

Fontana’s own agents live in system. Upload your packages into a namespace you created. When a default namespace is still present, leave that one alone as well.

The folder path is the identity. Frontmatter omits id and name.

  1. Open AI → Agent packages (/ai/agents).
  2. Select a namespace you created.
  3. Choose Upload folder and select the package directory (the one that contains AGENT.md).
  4. Open the imported package and confirm the title, abilities, and prompt.

Saving AGENT.md in the explorer registers the same way. Open Agent schedules when the package includes schedules.json.

AGENT.md starts with YAML frontmatter and continues with the system prompt. The body is the operating manual the agent follows.

Key Required What you set
title Yes Display name in chat
description Yes Short catalog summary
vectorSource Yes Keywords for routing: role, domain nouns, deliverable names
role No Short job title
model No An approved model id, or "" for the deployment default
scopes No Where you can pick the agent. Omitted means chat
skills No Abilities and skills you enable, with their settings
permissions No Allow-list. Omitted means every catalog permission (["*"])
isActive No true so the agent can be picked
reasoningEffort No none, minimal, low, medium, high, or xhigh
callSettings No temperature, maxOutputTokens, topP, topK, presencePenalty, frequencyPenalty, stopSequences, seed
icon No Path under avatars/, for example avatars/avatar.png
accentColor No One palette name: orange, amber, yellow, lime, green, teal, cyan, sky, blue, indigo, violet, purple, pink, rose, slate

scopes values are chat, workflow (AI node), kg-extract, eval, icon, and internal. A new agent starts in chat. An explicit list contains at least one of those values.

skills maps a catalog id to that ability’s settings. Listing the id turns it on.

skills:
system/knowledge-graph: {}
system/agents:
agents:
- system/fontana-agent

system/knowledge-graph loads on the first turn. Add autoLoad: true on another entry only when that package must be present from the first message.

Catalog id Settings
system/knowledge-graph namespaces, autoSearchKg, kbInjectionScoreThreshold
system/agents agents (ids, or *)
system/workflows autoSearchWorkflows (Projects)
system/email allowReceive, allowSend, receiveWhitelist, sendWhitelist
system/messaging Slack: messagingWhitelist, slackInstallationId, toolSubset
system/teams channelWhitelist, freeResponseChannels, requireMentionInThread, allowBots
system/coding, system/fontana-browser toolSubset
system/files, system/data, system/agent-memory, system/workflow-documents, system/system-one none ({})
system/mcp-<slug> {} or toolSubset, for an MCP connection already in the workspace
<namespace>/<your-skill> Settings that skill declares. See Skills

Include system/fontana-agent under system/agents when the persona should hand Fontana product questions back to Fontana agent. Canvas editing stays on the canvas agent; hand that work off through system/agents.

These older keys fail ingest. Put the same choices on the abilities above: tools, subagents, handoffAgents, knowledgeGraphNamespaces, autoSearchKg, autoSearchWorkflows, kbInjectionScoreThreshold, emailSendWhitelist, messagingWhitelist. The image key is icon.

permissions: ["*"] matches the allow-list a new agent starts with. Invocation still uses the overlap of that list and the person’s role. See Roles and RBAC.

Listing an ability grants the calls below. A chat agent already has the first table, so those calls are not skills entries. An MCP call id is mcp_<connection-slug>_<tool-name>. The same list is what an external AI tool follows in the agent authoring skill.

Call What it does
system_renderUrl Show a link the person can open. It does not browse the page.
system_updateThreadTitle Set the chat thread title.
system_createTaskTree Start a task list for this turn.
system_addSubtasksUnderActiveTask Add subtasks under the task that is active now.
system_addSubtasksUnderParent Add subtasks under a named open task.
system_closeTask Close one task. Closing a parent cancels unfinished child tasks.
system_compactThreadContext Fold older thread history into a summary.
system_evictContext Drop stale tool results from later turns.
system_wait Pause, then continue, when a page or a browser session is not ready yet. One call can wait up to seven days.
icon_generateIcon Draw a minimal SVG icon from a text prompt. The package image is a file under avatars/.
skills_listSkillsCatalog List skills this agent may activate.
skills_activateSkill Turn a skill on for this turn.
skills_closeSkill Turn that skill off.
skills_readSkillFile Read a file inside an active skill.
hitl_askHuman Ask the person a structured question in chat.
agents_createSubAgentThread Open a side thread with an agent on the system/agents allow-list.
agents_continueSubAgentThread Continue that side thread.
agents_handoffThread Hand this thread to an agent on that allow-list.
agents_delegateExternalAgent Ask a peer agent connected through Agent Interop.

Delegation still needs system/agents with the target ids in agents.

system/knowledge-graph searches the namespaces you set. The four knowledge_ calls write the graph. Use them only for extraction or curation you asked for.

Call What it does
mcp_knowledge-graph_kg_search Hybrid search. Returns capped chunk packages.
mcp_knowledge-graph_kg_open Open one chunk, section, entity, or file.
mcp_knowledge-graph_kg_hop Step to a neighbouring chunk, entity, or outline section.
mcp_knowledge-graph_kg_outline A file’s section index.
mcp_knowledge-graph_kg_ontology Published entity types and relation types.
mcp_knowledge-graph_kg_entity_search Find an entity by name.
mcp_knowledge-graph_kg_file_entities Entities mentioned in one file.
mcp_knowledge-graph_kg_file_triples Typed relations stated inside one file.
mcp_knowledge-graph_kg_namespaces Namespaces the caller may search.
mcp_knowledge-graph_kg_collections Collections in a namespace and their folders.
mcp_knowledge-graph_kg_files Find files by folder, path glob, or content pattern.
mcp_knowledge-graph_kg_file Read one file: metadata, a text window, a table query, or a JSON query.
mcp_knowledge-graph_kg_cypher One read-only query for an exact word, a figure, or a known path. At most 50 rows. Cite the file path and the chunk text.
knowledge_upsertKgInstanceTriples Write instance triples.
knowledge_setKgEntityTypeMembership Set an entity’s type.
knowledge_applyKgOntologyProposals Apply proposed type changes.
knowledge_mergeKgEntities Merge two entities.

system/files reads and writes workspace files and Fontana Files.

Call What it does
vfs_grep Find a workspace file by its contents.
vfs_file_info Size and type before a read.
vfs_read Read a text range.
vfs_update Write a new version of a text file.
mcp_ffs_ffs_list_collections List Fontana Files collections you can read.
mcp_ffs_ffs_create_collection Create a collection.
mcp_ffs_ffs_delete_collection Delete a collection.
mcp_ffs_ffs_read_file Read a text file in a collection.
mcp_ffs_ffs_write_file Write or replace a file.
mcp_ffs_ffs_list_files List files and folders.
mcp_ffs_ffs_delete_file Delete a file or an empty folder.
mcp_ffs_ffs_history_log History for a path or a collection.
mcp_ffs_ffs_history_show Show one commit.
mcp_ffs_ffs_history_revert_path Restore a path to an earlier commit.
mcp_ffs_ffs_history_revert_collection Restore a whole collection.

system/data: data_listResources lists what a workflow run produced, data_queryData queries those rows, and data_queryWorkflow reads one part of the workflow configuration. Each call needs the workflow id from the conversation, not a placeholder.

system/workflows: workflow_listUserWorkflows resolves a workflow you own, workflow_searchWorkflows finds templates, and workflow_startWorkflowRun starts a run you asked for.

system/workflow-documents: create, read, update, rename, and delete the markdown tabs on a workflow (workflow_createWorkflowDocument, workflow_readWorkflowDocument, workflow_updateWorkflowDocumentContent, workflow_renameWorkflowDocument, workflow_deleteWorkflowDocument).

system/agents adds package and schedule admin: list and edit agent files, namespaces, and schedules (agents_listAgents, agents_readAgentFileContent, agents_upsertAgentFileText, agents_listAgentSchedules, agents_activateAgentSchedule, agents_triggerAgentSchedule, and the matching list, move, and delete calls). The agents setting is who this agent may hand work to.

system/email: email_listInbox, email_search, and email_read obey the receive whitelist. email_draft holds a message for you to review. email_send sends only to addresses on the send whitelist.

system/messaging is Slack.

Call What it does
mcp_slack-channels_list_installations List Slack installations.
mcp_slack-channels_list_conversations List channels the bot can see.
mcp_slack-channels_get_conversation_history Read recent messages.
mcp_slack-channels_post_message Post or reply as the Fontana bot.
mcp_slack-channels_list_users List people in the workspace.
mcp_slack-channels_get_user Read one Slack profile.
hitl_slackBlocks Ask for an Approve or Reject decision in Slack.
voice_generateSpeech Speak a short answer aloud.

system/teams: mcp_teams-channels_list_installations lists this agent’s Teams bot, and mcp_teams-channels_post_message posts into a channel where that app is already installed.

system/coding runs code in an isolated sandbox. mcp_session_open starts one, mcp_session_exec runs a command, and mcp_session_close deletes it. Each command has 120 seconds and 1 MiB of stdout plus 1 MiB of stderr. A session that sits idle for 30 minutes ends, and none last more than 4 hours. The sandbox does not see your Fontana data unless the agent passes that data in.

system/fontana-browser reads and drives live pages. Read-only calls are mcp_fontana-browser_steel_scrape, mcp_fontana-browser_steel_screenshot, and mcp_fontana-browser_steel_pdf. A session uses mcp_fontana-browser_steel_session_create, mcp_fontana-browser_steel_navigate, mcp_fontana-browser_steel_snapshot, mcp_fontana-browser_steel_act, and mcp_fontana-browser_steel_session_release. The agent authoring skill lists the rest of the session calls. The steel connection exposes the same tools with the prefix mcp_steel_.

system/agent-memory: knowledge_addMemory remembers a durable fact for this agent, and knowledge_forgetMemory removes one.

system/system-one: systemone_ask asks TypeSafe System One one question and returns a decision with a confidence.

The abilities above already cover the connections Fontana ships: knowledge-graph, ffs, slack-channels, teams-channels, session, steel, and fontana-browser.

Any other connection on AI → Tools is system/mcp-<slug>, using that connection’s slug. An empty settings object loads every tool the connection has discovered. toolSubset limits Slack, Coding, Fontana Browser, and these extra connections to the mcp_<slug>_<tool> ids you name.

Page abilities, including system/mcp-admin and system/skills-admin, stay on Fontana agent. Leave them off a specialist package.

After the frontmatter, write the brief the agent follows: role, who it serves, responsibilities, how it separates fact from recommendation, the steps it takes, the markdown it returns, and when it hands off to system/fontana-agent. Keep the brief about the job. Fontana adds runtime context when the abilities are on.

---
title: NAV Analyst
role: NAV analyst
description: Reviews NAV packs and explains breaks in plain language for the fund accounting team.
vectorSource: NAV analyst net asset value breaks reconciliation
model: ""
scopes:
- chat
skills:
system/knowledge-graph: {}
system/agents:
agents:
- system/fontana-agent
isActive: true
permissions:
- "*"
reasoningEffort: high
callSettings:
temperature: 0
---
## Role
You are a NAV analyst for the fund accounting team. You explain breaks in plain language.
## Handoff
Hand Fontana product and navigation questions to `system/fontana-agent`.

schedules.json is optional. It holds shared definitions the operator activates later. Cron triggers use expr for the UTC expression. See Agent schedules for event and manual shapes.

{
"schedules": [
{
"id": "daily-digest",
"name": "Daily digest",
"prompt": "Summarise overnight activity.",
"schedule": { "kind": "cron", "expr": "0 8 * * *" }
}
]
}