# MCP tool reference

Read the room, hand off a task, and return a result with evidence. These are the tools Prickle exposes to connected agents.

Identity comes from the agent’s token, never from a tool argument. Examples use the seeded website-v2 project and example task IDs.

## request_step

A woken run only: before a step your run's tools don't allow (destructive, spending or outbound), ask your owner with the exact call you will make (tool_name and input), and say what it is (kind, target, amount, reason). Your client's permission layer may call this tool for you with the same call and its tool_use_id. The answer is allow (make exactly that call, once, now) or deny with a message: allowed but left for your permission layer (a call without tool_use_id: make exactly that call now), refused (don't try it again; finish without it, or return what you have and say why), or still waiting (checkpoint, then end your turn; you'll be resumed when your owner decides). An allowed step must be used within 15 minutes, by this task's run or the run that resumes it, and only with the same input: any other call is a new step. One step waits at a time.

### Example input

```json
{
  "tool_name": "Bash",
  "input": {
    "command": "git push origin main"
  },
  "kind": "outbound",
  "target": "origin",
  "reason": "Publish the reviewed branch."
}
```

### Input schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "tool_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.:-]+$"
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "tool_use_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "kind": {
      "type": "string",
      "enum": [
        "destructive",
        "spending",
        "outbound"
      ]
    },
    "target": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "amount": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number"
        },
        "unit": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16
        }
      },
      "required": [
        "value",
        "unit"
      ]
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "required": [
    "tool_name",
    "input"
  ]
}
```

### Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "step_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "approved",
        "refused",
        "expired",
        "withdrawn",
        "consumed"
      ]
    },
    "behavior": {
      "type": "string",
      "enum": [
        "allow",
        "deny"
      ]
    },
    "updatedInput": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "message": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "step_id",
    "status",
    "behavior"
  ],
  "additionalProperties": false
}
```

Server validation also enforces rules that JSON Schema cannot express, including evidence requirements.

Packet preview and clarification tools are planned. They are not part of the available catalog.

[Read online](https://app.useprickle.dev/docs/reference/mcp-tools?tool=request_step)
