Overview
Remote skills provide a declarative way to expose skills hosted in the AgentKit Skills Sandbox as individual tools on an agent. You describe each remote skill — its name, description, and input schema — in a JSON manifest, and VeADK generates a corresponding tool function for each one. When the agent calls a tool, the framework forwards the request to the remote sandbox throughinvoke_skill and poll_skill; the actual skill code runs only on the remote side and is never loaded or executed locally.
Remote skills are useful when you want to:
- Expose remote skills as standalone tools so the agent can invoke them by name with structured arguments;
- Control the timeout for each skill individually;
- Manage the skill list through a declarative manifest instead of writing tool functions one by one in code.
Remote skills reuse the sandbox infrastructure and credential configuration of
execute_skills. Environment variables, Tool IDs, and other prerequisites are the same as those described on the Code sandboxes page.Prerequisites
Complete skills sandbox setup, ensure the target Skill Space contains executable skills, and save the JSON in Manifest format asremote-skills.json in the current directory. A manifest only describes capabilities; it does not upload or deploy a skill. Names and inputs must match deployed remote skills.
Loading definitions and building tools do not contact the cloud. Calling the default executor requires a valid tool context, model, and sandbox configuration.
Usage
Import path:- Write a JSON manifest describing the remote skills to expose;
- Call
load_remote_skill_definitionsto load the manifest into a list ofRemoteSkillDefinition; - Call
build_remote_skill_toolsto convert the definitions into tool functions; - Pass the tool functions to the
Agenttoolsparameter.
remote_skills_agent.py
Manifest format
The manifest is a JSON object containing aremote_skills array. Each element describes one remote skill:
remote-skills.json
Skill fields
Generated tool function
build_remote_skill_tools generates one tool function per RemoteSkillDefinition. The function name is taken from the skill’s name, and the docstring contains the description and input schema. The generated tool function signature is:
When the tool runs, the framework assembles
skill_name, query, arguments, and an auto-generated request_id into a query input, sends it to the remote sandbox through invoke_skill and poll_skill, and enforces the timeout configured on the skill definition.
tool_context is marked optional in the signature but is required at call time; omitting it raises an error. VeADK injects it automatically during agent execution — you do not need to pass it manually.API
RemoteSkillDefinition
RemoteSkillDefinition is the runtime definition of a skill, holding its name, description, input schema, and timeout configuration.
load_remote_skill_definitions
Returns a list of
RemoteSkillDefinition. When the value starts with {, it is parsed as a JSON string; otherwise it is read as a file path.
build_remote_skill_tools
Returns a list of tool functions that can be passed directly to the
Agent tools parameter.
Input validation and custom executors
input_schema is included in the tool description for the model; the current proxy does not automatically perform full JSON Schema validation before execution. Enforce required fields, enums, and business constraints in the application or remote skill. The manifest loader checks names, descriptions, object structure, and duplicate names. Direct construction of RemoteSkillDefinition does not imply those loader checks ran.
The default execute_remote_skill executor calls invoke_skill, then polls with poll_skill, returning text only after completion. Input-required or authentication-required states end the current wait with an error. A timeout does not guarantee the remote task was canceled.
A custom executor accepts workflow text plus tool_context and timeout keyword arguments, and returns a string. This example prepares an executor that inspects serialized input without executing a remote skill:
functions using Agent(tools=functions) to use the custom executor in an agent; the runtime injects context. The example builds tools and directly checks the custom executor input and output, without calling a model or sandbox.