google/sam
Use when local tools cannot provide a needed capability and connected sam-node MCP tools are available to reach a SAM (Sovereign Agent Mesh) network: inspect mesh state, discover reachable services/tools, describe namespaced remote MCP tools, and call them with JSON-object arguments. Not for AWS SAM / Serverless Application Model tasks.
npx skills add https://github.com/google/sam --skill sam
Use this skill when local tools cannot satisfy the task and sam-node MCP tools
are already callable. Prefer local tools first. Reach into the SAM mesh only for
the capability needed to complete the task.
Start by understanding the local node and mesh state:
get_mesh_info with {} to inspect connected_peers, dht_size, andhub_peer_id.
list_local_services with {} to see services registered on the localnode.
Use service discovery when you need to inventory reachable service providers:
discover_remote_services with {"type":"mcp"},{"type":"inference"}, or {"type":"a2a"}. Add name only when narrowing
by service name.
discover_remote_services as service inventory. Non-MCP service typesare not callable with call_remote_tool.
Use tool discovery when you need remote MCP tools:
find_remote_tools to discover reachable aggregated MCP tools advertisedby remote SAM services.
find_remote_tools with service_name or peer_id when you alreadyknow the target.
return an empty array when no reachable aggregated tools are found. Discovery
failures or explicit peer_id lookup failures are returned as errors.
All tools returned by find_remote_tools are namespaced. Always call
describe_remote_tool before calling them with call_remote_tool.
Remote MCP tools returned by find_remote_tools are namespaced as:
<service_name>.<tool_name>
Use the input schema from describe_remote_tool to build the call arguments.
Do not guess arguments if a tool cannot be described.
After describe_remote_tool, inspect the tool name, description, and schema
for side effects and required data. Only call read-only, low-risk tools
autonomously. Ask the user before calls that may mutate state, execute code,
access files, contact external services, spend money, or transmit sensitive or
private data. Pass only task-required data, and never include secrets unless
explicitly authorized.
Use call_remote_tool with:
peer_id: the peer hosting the tooltool_name: the discovered namespaced tool name, such as service.toolarguments: a JSON object whose keys match the described input schemaarguments must be a JSON object, not a string containing JSON.
get_mesh_info with {}.relevant, call list_local_services with {}.
find_remote_tools with service_name or peer_id when known. Use{} only when the user asked to inventory the mesh or no narrower target
exists.
describe_remote_tool with{"peer_id":"...","tool_name":"service.tool"}.
call_remote_tool only when the described tool is read-only andlow-risk, or after the user approves the exact peer_id, tool_name, side
effects, and task-required data being sent:
{"peer_id":"...","tool_name":"service.tool","arguments":{...}}.
approves the data and destination.
Take google/sam from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.