Agent-facing flow
- Load the Veryfront skill:
load_skill({ "skillId": "veryfront" }). - Treat this page as the source of truth for the create-agent task. Do not call
load_skill({ "skillId": "create-agent" }). - The bare Studio starter is for a tool or integration agent by default. If the request is too broad to act on, ask one short
form_inputwith one requiredbrieffield for the service/tool and job to automate, then continue from the submitted brief. - Inspect only what the brief needs: existing agents, relevant project files, and the integration catalog.
- Search integrations before choosing third-party tools. When the brief names or implies a service, call
list_integrationswithsearch: "<service>", then callget_integrationwhen tool IDs are needed. - Use the MCP/tool catalog as the live source for tool IDs.
- Before creating a new Studio project agent, call
create_agent_avatarwithassign: false, then pass the returnedavatar_urlintocreate_agent. - Create or update the project agent, re-read or list the agent when a read/list tool is available, then summarize briefly and stop. Report the agent name, id, source path when available, selected integration, and chat action in the final response.
Guardrails
- Do not load a removed
create-agentsub-skill. Always loadveryfront, then this docs page. - Do not call
load_skill({ "skillId": "create-agent" }). - Do not invent integration IDs, tool IDs, provider tool IDs, files, routes, agents, or capabilities.
- Do not create app, page, route, or chat UI files just to expose an agent. Studio exposes agents directly.
Tool selection
- Search integrations with
list_integrations, then fetch details withget_integrationwhen tool IDs are needed. - Use only tool IDs returned by the catalog or the current project. Do not invent IDs.
- Put project and integration tools in
tool_ids. - Put provider-native tools in
provider_tool_ids. - Choose the smallest useful tool set for the brief.
- Do not create a role-only helper unless the user explicitly asks for a no-tool or no-integration agent.
- Do not create app, page, route, or chat UI files just to expose an agent; Studio exposes agents directly.
Agent shape
A useful project agent usually has:- a concise name and description
- a short system prompt with scope, capabilities, guardrails, and response style
- a model and step limit appropriate for the task
- a few practical suggestions
- only the tools required by the brief
- an
avatar_urlfromcreate_agent_avatarfor new Studio project agents
HITL, human input, and security
Do not treatsecurity_enabled as HITL approval. security_enabled is a guardrail/security setting for the project-agent document; it is not a per-tool approval gate and does not pause tool execution for human sign-off.
Use form_input when an agent needs structured input from a user during a run. A confirm field can collect an approval-shaped response, but form_input itself is a human-input primitive, not a global tool-approval policy.
Use Studio Require approval for hosted project-agent tool approval when the agent should ask before using tools. For workflow-level approval in Veryfront Code, use waitForApproval. For Claude-code workflow tool approval, use ToolApprovalConfig.
Example pattern
For a Gmail request, search the catalog forgmail, read the returned integration details, select only the mail actions needed by the brief, and pass those catalog-returned IDs to create_agent.
For a different service, follow the same pattern with that service name. The catalog is authoritative.
Use the framework source tab for file-based Veryfront Code. Use the MCP tool call tab for the Studio or Cloud control-plane action.
system maps to system_prompt in the MCP tool input. The tools object maps to verified tool_ids or provider_tool_ids. Suggestions stay practical, short, and user-facing. The agent must still use live catalog results before choosing tool IDs.
Output shape
Return the created or updated agent name, agent ID, source path when available, attached tool IDs, selected integration, chat action, and 2-3 starter suggestions. Keep the final answer brief and do not say the agent was not created after a successfulcreate_agent or update_agent result.