Skip to main content
POST
Register Tool

Register Tool

POST /v1/tools Registers a new tool in the tenant’s MAIP tool registry. Tools represent external capabilities (APIs, functions, services) that machine agents can invoke. Each tool is associated with a required scope, risk level, and optional approval gate. The platform automatically elevates the risk level to "high" if the tool name or required scope contains dangerous action verbs (write, delete, send, execute, deploy, destroy, drop, truncate).
Tool names must be unique per tenant. Attempting to register a tool with a name that already exists returns 409 Conflict.

Authentication

Requires X-API-Key header or Bearer JWT token. The workspace is derived from the authenticated credential; do not send X-Tenant-ID.

Response

string
UUID of the newly registered tool.
string
UUID of the owning tenant.
string
Machine-readable tool name.
string
Human-readable tool name.
string
Tool description.
string
Required scope for invocation.
string
Effective risk classification (may be auto-elevated).
boolean
Whether human approval is required.
integer
Per-agent rate limit.
string
Tool category.
string
Tool status. Always "active" on creation.
object
Tool metadata.
string
ISO 8601 creation timestamp.
string
ISO 8601 last-updated timestamp.

Example


Risk Level Auto-Elevation

The platform scans tool names and scope requirements for dangerous action verbs. If detected, the risk level is automatically elevated: Tools with "critical" risk level always require human approval regardless of the requires_approval setting.

Authorizations

X-API-Key
string
header
required

API key for machine-to-machine authentication

Body

application/json
display_name
string
required
name
string
required

Unique tool name

scope_required
string
required
category
string
description
string

Human-readable tool description

metadata
any
rate_limit_per_minute
integer
requires_approval
boolean
risk_level
string

Response

Tool registered

tool_id
string<uuid>
name
string
description
string
schema
object
agent_id
string<uuid>
created_at
string<date-time>