Skip to content

Tool Surface

A tool_surface is the set of tools visible in a context. It is not the global catalog.

Surfaces can be scoped to turn, task, session, tenant, skill, peer_agent, workspace, role, or model_request.

Fields

FieldMeaning
surface_idStable id for the surfaced set.
scopeContext in which the surface applies.
tool_refsTools that can be considered.
loaded_toolsTools whose schemas are visible now.
deferred_toolsDiscoverable but not fully loaded tools.
blocked_toolsTools hidden with machine-readable reasons.
excluded_toolsTools removed by role, recursion, feature, model, or policy filters.
selection_policyHow the model or runtime may select tools.
default_tool_choiceauto, none, required, or tool-specific hint.
role_constraintsAgent type, coordinator mode, background worker, or human role constraints.
model_capabilitiesProvider support for strict schemas, parallel calls, deferred refs, media, etc.
policy_refsAdjacent policy decisions or constraints.
runtime_refsRuntime, session, task, or sandbox refs.

A surface should be regenerated when policy, credentials, workspace, active skill, peer agent, model capability, feature gates, or runtime mode changes.

Filtering

Surface filters SHOULD record reasons. Examples:

  • recursive agent tool blocked inside subagents.
  • human-interaction tool blocked in non-interactive mode.
  • write tool blocked by permission mode.
  • MCP tool deferred until discovered.
  • browser tool excluded because no browser session exists.
  • shell tool excluded by sandbox or platform policy.

Draft standard for portable agent tool declarations, runtime interfaces, invocations, progress, results, permissions, scheduling, and audit refs.