MCP Tool Surface — the single intent-tool contract¶
Every MCP server built on agent-utilities serves one tool contract. No mode switch exists. graph-os and every fleet connector list a small set of intent tools. Each intent tool takes the same condensed input.
| Field | Meaning |
|---|---|
action |
The operation id: "<tool>.<op>", "<tool>" for a single-operation tool, or "describe". |
params |
The operation's arguments as one JSON object. |
intent |
Optional natural language. With no action, the server routes the intent. |
action="describe" lists the operations of an intent tool.
params={"action": "<operation id>"} returns the full argument schema of one
operation. Per-operation schemas are served on demand, not in tools/list.
The authoritative code is agent_utilities/mcp/intent_contract.py.
graph-os¶
graph-os lists six intent verbs: ask, find, write, act, manage and
why. It also lists the two MCP Apps launchers that the MCP Apps extension
requires. The granular graph_* and engine_* tools register on a private
backing server. They dispatch through _execute_tool, and no client sees them
in tools/list. Fleet access runs through find, act(action="fleet.call")
and manage(action="fleet.load" | "fleet.unload"). Every mutation carries a
preview and a plan_ref. Approval-required operations need a session approval
through manage(action="approve").
See agent_utilities/mcp/graphos_surface.py.
Fleet connectors¶
The shared builder register_tool_surface (in
agent_utilities/mcp/verbose_tools.py) serves three intent tools on every
connector:
findranks, lists or describes operations.askruns a read-only operation.actruns any operation, including mutations.
Operation ids reuse the names the connector tools always had. A former call
servicenow_cmdb(action="get_instance", …) becomes
act(action="servicenow_cmdb.get_instance", params={…}). Each backing tool
keeps its own destructive-operation confirmation.
See agent_utilities/mcp/connector_surface.py.
Backing tools and the typed tier¶
register_verbose_tools introspects the API client class and registers one
backing operation per client method. A normalized operation manifest gives a
method a typed signature. Without a manifest entry, the method takes one
params_json argument. Source the manifest from an OpenAPI spec first, then a
crawled documentation site, then a PDF spec. The api-client-builder and
agent-package-builder skills own acquisition and code generation.
Surface gates¶
The tests enforce a small listing. A server lists at most 10 tools. The whole
tools/list stays within 4000 tokens, and each tool within 500 tokens. Every
manifest operation stays reachable through the router.
CONCEPT:AU-ECO.mcp.intent-surface-condensed-collapse — one MCP tool contract. CONCEPT:AU-ECO.mcp.tool-mode-standardization — the backing-tool generator (verbose 1:1 operations).