Skip to content

Tools & Resources

The complete reference for what an agent can call over the MCP server. Every tool declares the scope it requires; a token without that scope gets a gateway 403 returned as a tool error.

Tools

tools/list returns 13 tools.

Introspection

whoami

Scope: none — always available. Returns this token's identity, role, and the exact scopes it holds. Call it first: each tool below names the scope it needs, so whoami tells an agent which ones it can actually use. No arguments.

Inventory

list_hosts

Scope: inventory:read. Lists the hosts SeyalRun can broker sessions to. No arguments.

get_host

Scope: inventory:read. One host by id.

ArgumentType
host_idstringrequired

list_zones

Scope: inventory:read. Network zones — the gateway / ProxyJump topology. See Zones & gateways. No arguments.

create_host

Scope: inventory:write. Registers a new host.

ArgumentType
namestringrequired
ipstringrequired
group_idsstring[]required — at least one asset group
portintegerdefault 22
zone_idstringoptional

Registering a host does not grant access to it. Whether anyone — human or agent — may open a session still depends on an authorization and a credential.

Automation

list_automation_templates

Scope: automation:read. The job templates (Ansible playbooks / bash scripts) available to run. No arguments.

list_job_runs

Scope: automation:read. Recent job runs and their status. No arguments.

run_automation

Scope: automation:run. Runs an allowlisted job template against hosts.

ArgumentType
template_idstringrequired
host_idsstring[]optional — defaults to the template's own targets
extra_varsobjectoptional

This is the agent's safe "change something on a host" primitive. Only templates an admin authored are runnable, parameters are filtered server-side, and the run appears in Recent Runs with full output like any other.

Observability

query_audit

Scope: audit:read. Queries the tamper-evident audit log.

ArgumentType
limitintegerdefault 50

get_metrics

Scope: metrics:read. The platform metrics dashboard — sessions, jobs, host health. No arguments.

list_sessions

Scope: sessions:read. Lists recorded SSH sessions. No arguments.

list_notifications

Scope: notifications:read. Lists notifications / alerts.

ArgumentType
limitintegerdefault 50

ack_notification

Scope: notifications:ack. Acknowledges a notification.

ArgumentType
notification_idstringrequired

Resources

resources/list returns read-only context an agent can pull by URI. Each is backed by the same scope check as the equivalent tool — a resource the token can't read comes back as a JSON-RPC error, not silently empty.

URIScopeContents
seyalrun://inventory/hostsinventory:readAll hosts
seyalrun://inventory/zonesinventory:readZones and gateway topology
seyalrun://automation/templatesautomation:readAvailable job templates
seyalrun://audit/recentaudit:readMost recent audit entries
seyalrun://metrics/dashboardmetrics:readPlatform metrics

All resources are application/json.

Tools and resources overlap on purpose: resources are for an agent that wants standing context attached to its conversation, tools for one that wants to ask a question at a specific moment.

What is deliberately absent

There is no tool that executes an arbitrary command on a host. Interactive SSH stays a human surface, where a live operator is attached to supervision, recording and command filtering. The agent path to changing a host is run_automation against a template an admin approved.

If an agent needs a new capability, the answer is to author a job template for it — which is reviewable, diffable, and revocable — rather than to hand the agent a shell.

Secure. Controlled. Automated. — Released under the Apache License 2.0.