# wallet_createAction

Creates a new Bitcoin transaction. Handles funding, signing, and broadcasting based on options.

## Result

The BRC-100 createAction result as JSON text. Depending on options, this includes a transaction or a pending signable transaction.

## Permissions

Forwarded to the selected BRC-100 wallet. Its spending permissions apply.

Fields ending in JSON contain JSON-encoded strings, not nested objects. When inputs are supplied, include their BEEF proof data. In a role-routed wallet, walletRole can choose the signing wallet explicitly.

## Definition 1 (full)

Registered in: Legacy local wallet; Legacy local identity; External BRC-100 wallet.

Creates a new Bitcoin transaction. Handles funding, signing, and broadcasting based on options.

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| description | string | Yes | 5-50 char description of the action |  |
| inputBEEFJSON | string | No | JSON array of BEEF bytes proving the inputs. Required whenever inputs are supplied — createAction rejects inputs without their proof chain. |  |
| inputsJSON | string | No | JSON array of transaction inputs |  |
| outputsJSON | string | No | JSON array of transaction outputs [{lockingScript, satoshis, outputDescription, basket, tags, customInstructions}] |  |
| labelsJSON | string | No | JSON array of label strings |  |
| lockTime | number | No |  |  |
| version | number | No |  |  |
| optionsJSON | string | No | JSON CreateActionOptions: {noSend, sendWith, acceptDelayedBroadcast, signAndProcess, randomizeOutputs, noSendChange, knownTxids, trustSelf} |  |

Nested requirements apply when their parent is supplied.

### Input schema

```json
{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "description": "5-50 char description of the action"
    },
    "inputBEEFJSON": {
      "description": "JSON array of BEEF bytes proving the inputs. Required whenever inputs are supplied — createAction rejects inputs without their proof chain.",
      "type": "string"
    },
    "inputsJSON": {
      "description": "JSON array of transaction inputs",
      "type": "string"
    },
    "outputsJSON": {
      "description": "JSON array of transaction outputs [{lockingScript, satoshis, outputDescription, basket, tags, customInstructions}]",
      "type": "string"
    },
    "labelsJSON": {
      "description": "JSON array of label strings",
      "type": "string"
    },
    "lockTime": {
      "type": "number"
    },
    "version": {
      "type": "number"
    },
    "optionsJSON": {
      "description": "JSON CreateActionOptions: {noSend, sendWith, acceptDelayedBroadcast, signAndProcess, randomizeOutputs, noSendChange, knownTxids, trustSelf}",
      "type": "string"
    }
  },
  "required": [
    "description"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
```

## Definition 2 (full)

Registered in: Local Vault · broadcasting disabled; Local Vault · all roles; Local Vault · payment role only; Local Vault + sponsor.

Creates a new Bitcoin transaction. Handles funding, signing, and broadcasting based on options.

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| description | string | Yes | 5-50 char description of the action |  |
| inputBEEFJSON | string | No | JSON array of BEEF bytes proving the inputs. Required whenever inputs are supplied — createAction rejects inputs without their proof chain. |  |
| inputsJSON | string | No | JSON array of transaction inputs |  |
| outputsJSON | string | No | JSON array of transaction outputs [{lockingScript, satoshis, outputDescription, basket, tags, customInstructions}] |  |
| labelsJSON | string | No | JSON array of label strings |  |
| lockTime | number | No |  |  |
| version | number | No |  |  |
| optionsJSON | string | No | JSON CreateActionOptions: {noSend, sendWith, acceptDelayedBroadcast, signAndProcess, randomizeOutputs, noSendChange, knownTxids, trustSelf} |  |
| walletRole | "payments" \| "identity" \| "ordinals" \| "encryption" | No | Select the configured root key for this BRC-100 call. Defaults to the role for the method; action continuations retain their original role. |  |

Nested requirements apply when their parent is supplied.

### Input schema

```json
{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "description": "5-50 char description of the action"
    },
    "inputBEEFJSON": {
      "description": "JSON array of BEEF bytes proving the inputs. Required whenever inputs are supplied — createAction rejects inputs without their proof chain.",
      "type": "string"
    },
    "inputsJSON": {
      "description": "JSON array of transaction inputs",
      "type": "string"
    },
    "outputsJSON": {
      "description": "JSON array of transaction outputs [{lockingScript, satoshis, outputDescription, basket, tags, customInstructions}]",
      "type": "string"
    },
    "labelsJSON": {
      "description": "JSON array of label strings",
      "type": "string"
    },
    "lockTime": {
      "type": "number"
    },
    "version": {
      "type": "number"
    },
    "optionsJSON": {
      "description": "JSON CreateActionOptions: {noSend, sendWith, acceptDelayedBroadcast, signAndProcess, randomizeOutputs, noSendChange, knownTxids, trustSelf}",
      "type": "string"
    },
    "walletRole": {
      "description": "Select the configured root key for this BRC-100 call. Defaults to the role for the method; action continuations retain their original role.",
      "type": "string",
      "enum": [
        "payments",
        "identity",
        "ordinals",
        "encryption"
      ]
    }
  },
  "required": [
    "description"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
```

[All tools](https://bsvmcp.com/docs/tools)