# Register actions

For Neuro to be able to interact with the game, you need to register actions to Neuro.

When registering actions to Neuro, send this packet:

```ts
{
    "command": "actions/register",
    "game": string,
    "data": {
        "actions": [
            {
                "name": string,
                "description": string,
                "schema": {
                    [key: string]: any
                }
            } // Add more as necessary
        ]
    }
}
```

## `data` Parameters

- `actions` - An array of actions that Neuro can use after receiving the packet. See the section below.

### `actions` Array Object Parameters

- `name` - The action name. This should be unique between every action you have in your game. It should be all lowercase with words separated by underscores (`_`).
- `description` - A plaintext description of the action for Neuro to understand how to use it.
- `schema` - A valid JSON schema for Neuro to fill out when she executes the action. If a schema is not needed, you can omit this field or set it to `{}`.
**Danger:** If you are using a schema for your action(s), it **must** be `type: object`.
**Caution:** The following schema keywords are considered "probably not supported":

- `$anchor`
- `$comment`
- `$defs`
- `$dynamicAnchor`
- `$dynamicRef`
- `$id`
- `$ref`
- `$schema`
- `$vocabulary`
- `additionalProperties`
- `allOf`
- `anyOf`
- `contentEncoding`
- `contentMediaType`
- `contentSchema`
- `dependentRequired`
- `dependentSchemas`
- `deprecated`
- `description`
- `else`
- `if`
- `maxProperties`
- `minProperties`
- `multipleOf`
- `not`
- `oneOf`
- `patternProperties`
- `readOnly`
- `then`
- `title`
- `unevaluatedItems`
- `unevaluatedProperties`
- `uniqueItems`
- `writeOnly`

Neuro *may or may not* understand these keys. If you use them, you should also do your own schema checks as well.
**Tip:** Attempting to register an action that is already registered will be ignored by Neuro.

If you want to change an action's description or schema, first [unregister](/neuro-sdk-docs/base/actions/unregister) the action, then register a new action.

This is proposed to be fixed in Neuro API v2.

## Techniques with this packet

- [Disposable actions](/neuro-sdk-docs/base/techniques/disposable_actions)