arcade evals for tool selection. Tools are written in Python with the open-source arcade-mcp framework. Arcade does not run agents: the agent itself lives in a framework such as LangChain, OpenAI Agents, the Vercel AI SDK, or Mastra, or in your own loop, and calls Arcade through arcadepy, @arcadeai/arcadejs, or an MCP Gateway.
A move to Guild therefore has two halves. The agent becomes a Guild agent with a runtime, triggers, sessions, and a Hub listing. The tools become Guild integrations, or stay on Arcade behind a custom integration.
Who this is for
Teams whose agent code calls Arcade tools and who want the agent itself hosted, triggered, versioned, and shared, with tool credentials brokered by the same platform.Concept map
Before you start
Inventory
Collect from the repository, by name only:- The agent framework and its entry point (such as LangChain, OpenAI Agents, Vercel AI SDK, Mastra, Google ADK, CrewAI, or a custom loop).
- Every Arcade tool name the code calls, such as
Gmail.ListEmails. Arcade renamed tools across most toolkits in October 2026, so use the names in the code. - Every custom
MCPApptool, itsrequires_authprovider and scopes, and itsrequires_secretsnames. - How
user_idis chosen: a teammate, or an end user of your own product. - Any MCP Gateway URLs (
api.arcade.dev/mcp/<slug>) and the auth mode they use (Arcade Auth, User Source, or Arcade Headers). - Contextual Access hooks and what they allow, deny, modify, or redact.
eval_*.pysuites.
Steps
- Replace Arcade
- Keep Arcade as the tool layer
1
Pick the agent type and scaffold
A tool-calling loop with text in and out becomes a Native agent. Typed input or deterministic steps become TypeScript.
--category and --owner stop the CLI from prompting, which a script or coding agent can’t answer. List categories with guild agent categories.2
Move the agent's instructions
PROMPT.md
3
Map each Arcade toolkit to a Guild integration
guild.yaml
4
Port custom MCPApp tools
A custom tool usually wraps an API that already has a Guild integration. For example, a
requires_auth=GitHub() tool that comments on issues becomes github_issues_create_comment from guildai~github. For an API with no integration, create one from its OpenAPI spec:5
Test
guild agent test uploads only the files git tracks, so git add -A stages new files such as logic.ts first. Without it, the cloud build fails with “Cannot find module ’./logic.ts’”.6
Publish and add triggers
Arcade has no triggers. Guild agents can run on a schedule, on an event, or from an API call.You can also publish with the Publish Agent to Guild GitHub Action instead of
The first
guild agent save --wait --publish after guild agent init fails with “No saved state… use —force” because of the .gitignore the scaffold writes. Add --force to that first save for now.guild agent save --publish. The Action needs an account API key with the agents:write scope:Credentials and policies
requires_authproviders become integration credentials. Use member-scoped credentials when each teammate connects their own account, and identity mapping so Slack- or GitHub-started runs act as the right person.requires_secretsvalues become credentials or workspace variables. Never copy secret values; recreate them in Guild.- Arcade Contextual Access rules that allow or deny become credential policies on operations and resources.
- Who can call it. Add a credential policy rule scoped to the agent and workspace that allows or denies the operation. DENY wins over ALLOW.
- Sign-off on each call. Add the
ui_promptbuilt-in and have the agent confirm with the user before it calls the tool. The run pauses until someone answers.
What doesn’t map 1:1
Per-end-user OAuth for your own customers
Per-end-user OAuth for your own customers
Arcade authorizes any
user_id your app passes, so a SaaS product can connect thousands of its own customers’ accounts. Guild credentials belong to Guild members, workspaces, or agents. For that pattern, keep Arcade as the tool layer.Modify and redact hooks
Modify and redact hooks
Arcade pre- and post-execution hooks can rewrite or redact tool inputs and outputs. Guild credential policies only allow or deny, so move that logic into the agent.
Hosting MCP servers
Hosting MCP servers
arcade deploy hosts your own MCP servers. Guild hosts agents and brokers integrations; publish the API behind the server as a custom integration instead.Self-hosted and air-gapped deployments
Self-hosted and air-gapped deployments
Arcade can run in your own cloud: from a cloud marketplace, self-hosted with Helm, or in your VPC or air-gapped on its Enterprise plan. Guild is hosted only.
Tool evals
Tool evals
arcade evals suites test tool selection and arguments. Rebuild them as Guild Evaluations with hasToolCall and toolCallContains checks.Three ways to migrate
guild-migrate skill
Ask your coding agent: “Migrate this Arcade agent to Guild.” It maps each Arcade tool to an integration and ports the agent with its framework’s reference.
Publish Agent to Guild Action
Commit the port to your repository, then publish it from GitHub Actions with an account API key.
Migration agent
Point Migrate to Guild at the repository and it opens a draft pull request with the Guild agent and
MIGRATION.md. The guild-migrate skill ships in the same package.MCPApp server with a GitHub tool and an agent script using arcadepy, then the Guild agent) lives in examples/migrations/arcade/ in the guild-migrate repository.
Related pages
Integrations
The catalog, and how to add an API that is not in it.
Credentials
Scopes, resolution order, and the credential proxy.