# io.zzstoatzz.phi.getAbilities

> Published by [phi.zzstoatzz.io](https://lexicon.garden/identity/did:plc:65sucjiel52gefhcdcypynsr)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.getAbilities)
- [Documentation](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.getAbilities/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:65sucjiel52gefhcdcypynsr/io.zzstoatzz.phi.getAbilities/examples)

## Definitions

### `io.zzstoatzz.phi.getAbilities`

**Type**: `query`

Phi's currently-registered function tools, computed live from the running code rather than hand-maintained, so it cannot drift from what she can actually do. Every tool carries a risk declaration: a tool without one is not a valid tool, and the test suite refuses it. Served at /xrpc/io.zzstoatzz.phi.getAbilities; /api/abilities is kept as an alias.

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `abilities` | `array` | Yes |  |

### `io.zzstoatzz.phi.getAbilities#risk`

**Type**: `object`

What this tool can cost if it goes wrong. Required on every tool — the declaration is what makes a tool valid. Magnitude is ordered by reach and reversibility, not by how often the tool is used.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `reason` | `string` | Yes | One sentence saying what specifically could go wrong. Written to be read by a person in the cockpit and by the policy judge when it evaluates a proposed call, so it names the concrete failure rather than restating the magnitude. |
| `magnitude` | `string` | Yes | none: reads only, changes nothing. low: changes phi's own private state, reversible. moderate: publicly visible under her name, reversible by her. high: reaches other people's attention, spends real money, or cannot be undone with the tools she has. |

### `io.zzstoatzz.phi.getAbilities#ability`

**Type**: `object`

One registered function tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The tool name the model calls. |
| `risk` | `ref` → `#risk` | Yes |  |
| `description` | `string` | Yes | The tool's docstring — what the model is shown. |
| `operator_only` | `boolean` | Yes | Whether the tool is gated to the operator via the like-as-approval mechanism. |

## Raw Schema

```json
{
  "id": "io.zzstoatzz.phi.getAbilities",
  "defs": {
    "main": {
      "type": "query",
      "output": {
        "schema": {
          "type": "object",
          "required": [
            "abilities"
          ],
          "properties": {
            "abilities": {
              "type": "array",
              "items": {
                "ref": "#ability",
                "type": "ref"
              }
            }
          }
        },
        "encoding": "application/json"
      },
      "description": "Phi's currently-registered function tools, computed live from the running code rather than hand-maintained, so it cannot drift from what she can actually do. Every tool carries a risk declaration: a tool without one is not a valid tool, and the test suite refuses it. Served at /xrpc/io.zzstoatzz.phi.getAbilities; /api/abilities is kept as an alias."
    },
    "risk": {
      "type": "object",
      "required": [
        "magnitude",
        "reason"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "maxLength": 400,
          "description": "One sentence saying what specifically could go wrong. Written to be read by a person in the cockpit and by the policy judge when it evaluates a proposed call, so it names the concrete failure rather than restating the magnitude."
        },
        "magnitude": {
          "type": "string",
          "description": "none: reads only, changes nothing. low: changes phi's own private state, reversible. moderate: publicly visible under her name, reversible by her. high: reaches other people's attention, spends real money, or cannot be undone with the tools she has.",
          "knownValues": [
            "none",
            "low",
            "moderate",
            "high"
          ]
        }
      },
      "description": "What this tool can cost if it goes wrong. Required on every tool — the declaration is what makes a tool valid. Magnitude is ordered by reach and reversibility, not by how often the tool is used."
    },
    "ability": {
      "type": "object",
      "required": [
        "name",
        "description",
        "operator_only",
        "risk"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The tool name the model calls."
        },
        "risk": {
          "ref": "#risk",
          "type": "ref"
        },
        "description": {
          "type": "string",
          "description": "The tool's docstring — what the model is shown."
        },
        "operator_only": {
          "type": "boolean",
          "description": "Whether the tool is gated to the operator via the like-as-approval mechanism."
        }
      },
      "description": "One registered function tool."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
