• Product Introduction
  • Quick Start
    • Agent Development
    • Importing a Git Repository
    • Starting From a Template
    • Direct Upload
    • Start with AI
  • Framework Guide
    • Agent
    • Frontends
      • Vite
      • React
      • Vue
      • Hugo
      • Other Frameworks
    • Backends
    • Full-stack
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
      • TanStack Start
      • Vike
    • Custom 404 Page
  • Project Guide
    • Project Management
    • edgeone.json
    • Configuring Cache
    • Building Output Configuration
    • Error Codes
  • Build Guide
  • Deployment Guide
    • Overview
    • Create Deploys
    • Manage Deploys
    • Deploy Button
    • Using Github Actions
    • Using Gitlab CI/CD
    • Using CNB Plugin
    • Using IDE PlugIn
    • Using CodeBuddy IDE
  • Domain Management
    • Overview
    • Custom Domain
    • HTTPS Configuration
      • Overview
      • Apply for Free Certificate
      • Using Managed SSL Certificate
    • Configure DNS CNAME Record
  • Observability
    • Overview
    • Metric Analysis
    • Log Analysis
  • Functions
    • Overview
    • Edge Functions
    • Cloud Functions
      • Overview
      • Node.js
      • Python
      • Go
  • Agents
    • Overview
    • Quick Start
    • Conversation Storage
    • Observability
    • Sandbox Tool
      • Overview
      • Using the Agent Framework
      • Sandbox Atomic API
      • Network Search Tool
    • Agent Authentication
  • Models
    • Overview
    • Models and Vendors
      • Overview
      • Using Vendor Keys
        • OpenAI
        • Anthropic
        • Google AI Studio
        • DeepSeek
        • MiniMax
        • Hunyuan
        • Zhipu
        • MoonShot AI
    • FAQs
  • Storage
    • Overview
    • KV
    • Blob
  • Middleware
  • AI Tools
    • MCP
    • Skills
    • Plugin
  • Copilot
    • Overview
    • Quick Start
  • API Token
  • EdgeOne CLI
  • Message Notification
  • Integration Guide
    • AI
      • Dialogue Large Models Integration
      • Large Models for Images Integration
    • Database
      • Supabase Integration
      • Pages KV Integration
    • Ecommerce
      • Shopify Integration
      • WooCommerce Integration
    • Payment
      • Stripe Integration
      • Integrating Paddle
    • CMS
      • WordPress Integration
      • Contentful Integration
      • Sanity Integration
      • Payload Integration
    • Authentication
      • Supabase Integration
      • Clerk Integration
  • Best Practices
    • AI Dialogue Deployment: Deploy Project with One Sentence Using Skill
    • Using General Large Model to Quickly Build AI Application
    • Use the DeepSeek model to quickly build a conversational AI site
    • Building an Ecommerce Platform with Shopify
    • Building a SaaS Site Using Supabase and Stripe
    • Building a Company Brand Site Quickly
    • How to Quickly Build a Blog Site
  • Migration Guides
    • Migrating from Vercel to EdgeOne Pages
    • Migrating from Cloudflare Pages to EdgeOne Pages
    • Migrating from Netlify to EdgeOne Pages
  • Troubleshooting
  • FAQs
  • Limits
  • Pricing
  • Contact Us
  • Release Notes

Using the Agent Framework

context.tools provides a tool inventory view for LLMs. It has been adapted for the framework, so business code does not require additional format conversion.

List of Built-in Platform Tools

Tools are atomized by capability, with each tool mapped one-to-one to an underlying sandbox method. The LLM selects tools through semantic matching of tool names + descriptions, and the business logic can also configure the allowed invocation scope at a fine-grained level based on tool names.
Tool Name
Input Parameter
Description
commands
cmd, cwd?, env?, timeout?
Execute one-time shell commands.
files_read
path
Reading files.
files_write
path, content
Writing files (creates if not exist, overwrites if exist).
files_list
path
Lists directory contents, with entries containing only name / type / path.
files_exists
path
Checks whether a file or directory exists.
files_remove
path
Deleting files or directories.
files_make_dir
path
Creating directories
browser_fetch
url
Navigates to a page using a real Chromium browser and obtains the page metadata and HTML.
browser_screenshot
url?, fullPage?
Takes a screenshot and returns { base64Image }.
browser_click
selector
Clicks an element on the current page.
browser_type
selector, text
Enters text into an element on the current page.
browser_evaluate
script
Executes JavaScript in the context of the current page.
code_interpreter
language, code, timeout?
Executing code
web_search
query, maxResults?, site?
Performs lightweight web searches and returns title / href / snippet/ snite/ date.

Quick Method for Tool Selection

context.tools provides the following selection methods. Their return values are tool object arrays or a single tool object adapted for the current framework:
Methodology
Return Value
Scenarios
all()
All built-in tools
Allows the model to use full sandbox capabilities.
get(name)
A single tool with a specified name
Precisely sign up for or manually call a specific atomic tool
files()
files_read,files_write,files_list,files_exists,files_remove,files_make_dir
Quickly sign up for file capabilities
browser()
browser_fetch,browser_screenshot,browser_click,browser_type,browser_evaluate
Quickly sign up for browser capabilities
Example: Grant only file and browser capabilities to the Agent, without exposing shell commands or the code interpreter:
const safeTools = [
...context.tools.files(),
...context.tools.browser(),
]
To further disable write or delete capabilities, you can continue filtering on the grouped results:
const readonlyFileTools = context.tools.files()
.filter((tool) => !['files_write', 'files_remove', 'files_make_dir'].includes(tool.name))

Supported Frameworks

The output format of context.tools.* is determined by the framework and configured in edgeone.json:
{
"agents": { "framework": "claude-agent-sdk" } // claude-agent-sdk / openai-agents-sdk / langgraph / crewai / deepagents
}
framework
Output Format
claude-agent-sdk
{ name, description, input_schema, execute } (includes the toClaudeMcpServer() helper)
openai-agents-sdk
Node: lightweight function-tool compatible object; Python: agents.FunctionTool
langgraph
Node:lightweight wrapper;Python:LangChain StructuredTool
deepagents
Node:lightweight LangChain-like wrapper;Python:LangChain StructuredTool
crewai
Node:lightweight wrapper;Python:CrewAI BaseTool
The platform does not install langchain-core / @langchain/core/tools by default. When you need a real framework tool object, prefer using the helper method below to inject the framework class / factory.

Framework helper Methods

These helpers can be called directly on the context.tools injected by the Makers Agent Runtime.
Framework
Node
Python
Description
LangGraph / DeepAgents / LangChain
context.tools.toLangChainTools(toolFactory, names?)
ctx.tools.to_langchain_tools(StructuredTool, names=None)
Returns LangChain-compatible tools. The names parameter can be passed a tool name or an array of tool names.
OpenAI Agents SDK
-
-
No helper method required.
CrewAI
context.tools.toCrewAITools(baseToolOrFactory, names?)
ctx.tools.to_crewai_tools(BaseTool, names=None)
Returns CrewAI-compatible tools. Supports passing a BaseTool class or a compatible factory.
Claude Agent SDK
context.tools.toClaudeMcpServer(name?, options?)
ctx.tools.to_claude_mcp_server(name=None, options=None)
Returns an MCP bundle. The name / tools / allowedTools parameters are supported.

Claude Agent SDK-toClaudeMcpServer

Convert the sandbox built-in tools into an MCP server bundle for the Claude Agent SDK. Then, pass the business code to createSdkMcpServer / create_sdk_mcp_server to complete the registration.
Parameter
Parameter
Description
name
The MCP server name is synchronized as the mcp__<name>__<tool> prefix.
options.alwaysLoad / options.always_load
By default, anthropic/alwaysLoad is marked. If { alwaysLoad: false } is passed, anthropic/alwaysLoad metadata is not written.
Return Value
Returns an MCP bundle object.
TS Example
import { createSdkMcpServer } from '@anthropic-ai/claude-agent-sdk'
export async function onRequest(context: any) {
const edgeoneMcp = context.tools.toClaudeMcpServer()
// Custom server name
const customMcp = context.tools.toClaudeMcpServer('sandbox')
const mcpServers = [
createSdkMcpServer({
name: edgeoneMcp.name,
tools: edgeoneMcp.tools,
}),
]
const allowedTools = edgeoneMcp.allowedTools
// Pass mcpServers / allowedTools to the Claude Agent SDK
}
Python Example
from claude_agent_sdk import create_sdk_mcp_server
async def handler(ctx):
edgeone_mcp = ctx.tools.to_claude_mcp_server()
# Custom server name
# custom_mcp = ctx.tools.to_claude_mcp_server('sandbox')
mcp_servers = [
create_sdk_mcp_server(
name=edgeone_mcp.name,
tools=edgeone_mcp.tools,
)
]
allowed_tools = edgeone_mcp.allowed_tools
# Pass mcp_servers / allowed_tools to the Claude Agent SDK

OpenAI Agents SDK

No helper is needed. Simply pass context.tools.all() to the OpenAI Agents SDK. To expose only a subset of tools, assemble them using context.tools.files() / context.tools.browser() / context.tools.get(name). The output format remains consistent.
TS Example
import { Agent } from '@openai/agents'
const agent = new Agent({
name: 'Assistant',
instructions: 'Use sandbox tools.',
tools: context.tools.all(),
model,
})
Python Example
from agents import Agent, Runner
agent = Agent(
name="Assistant",
instructions="Use sandbox tools.",
tools=context.tools.all(),
)

LangGraph-toLangChainTools

toLangChainTools / to_langchain_tools accepts the framework's own tool factory and returns a real LangChain tool object.
Parameter
Parameter
Description
toolFactory / StructuredTool
LangChain tool function (Node) or StructuredTool class (Python) imported by the template itself
names
Tool Name
Return Value
A LangChain-compatible tool array (in Python, it's a StructuredTool instance; in Node, it's the result of a tool(...) factory call).
TS Example
import { tool } from '@langchain/core/tools'
import { createReactAgent } from '@langchain/langgraph/prebuilt'
const allTools = context.tools.toLangChainTools(tool)
const agent = createReactAgent({ llm: model, tools: allTools })
Python Example
# requirements.txt: pages-agent-toolkit, langchain-core, langgraph
from langchain_core.tools import StructuredTool
from langgraph.prebuilt import create_react_agent

all_tools = ctx.tools.to_langchain_tools(StructuredTool)
agent = create_react_agent(model, tools=all_tools)

DeepAgents-toLangChainTools

DeepAgents is built on LangGraph. Its tool format is the same as LangChain's, so you can simply reuse toLangChainTools / to_langchain_tools. The helper parameters and return values are consistent with those in LangGraph. The only difference is the agent construction entry point.
Parameter
Same as LangGraph: Pass in a LangChain tool factory (Node) or a StructuredTool class (Python). Optionally, you can also pass names.
Return Value
A LangChain-compatible tool array can be directly passed as an input parameter to create_deep_agent(tools=...) / createDeepAgent({ tools, ... }).
TS Example
import { createDeepAgent } from 'deepagents'
import { tool } from '@langchain/core/tools'
const tools = context.tools.toLangChainTools(tool, ['web_search'])
const agent = await createDeepAgent({
model,
tools,
systemPrompt: 'Use web_search for public web discovery.',
})
Python Example
from deepagents import create_deep_agent
from langchain_core.tools import StructuredTool
tools = ctx.tools.to_langchain_tools(StructuredTool, names=['web_search'])
agent = create_deep_agent(
tools=tools,
system_prompt='Use web_search for public web discovery.',
)

CrewAI-toCrewAITools

toCrewAITools / to_crewai_tools accepts the framework's BaseTool class (or a compatible factory) and wraps the sandbox's built-in tools into CrewAI tool instances.
Parameter
Parameter
Description
baseToolOrFactory / BaseTool
A CrewAI BaseTool class or a factory that returns a BaseTool instance.
names
Tool Name
Return Value
A CrewAI-compatible tool array (in Python, it's an instance of a BaseTool subclass; in Node, it's a compatible object).
TS Example
const allTools = context.tools.toCrewAITools(CrewBaseToolOrFactory)
const researcher = new Agent({
role: 'Researcher',
goal: 'Use sandbox tools to gather information.',
tools: allTools,
})
Python Example
from crewai import Agent
from crewai.tools import BaseTool
all_tools = ctx.tools.to_crewai_tools(BaseTool)
researcher = Agent(
role='Researcher',
goal='Use sandbox tools to gather information.',
tools=all_tools,
)

Local Debug Logs

Debug logs are disabled by default. When enabled, they output sandbox instance acquisition success events and sandbox tool execution logs to the local CLI's stderr.
To enable it: Add MAKERS_AGENT_TOOLKIT_DEBUG=1 to the runtime environment variables.
MAKERS_AGENT_TOOLKIT_DEBUG=1
Logs mask sensitive fields (token / auth / password / secret / key). Screenshot results do not print the full base64Image; only a summary is printed:
[pages-agent-toolkit] tool.execute.start {"tool":"browser_screenshot","operation":"browser_screenshot","args":{"fullPage":true}}
[pages-agent-toolkit] tool.execute.success {"tool":"browser_screenshot","operation":"browser_screenshot","durationMs":123,"result":{"base64ImageLength":193882,"savedToFile":false}}

ai-agent
You can ask me like
What types of applications can I deploy?