← BSV MCPInstall
Social

bsocial_publish

Publish a signed Bitcoin Schema social action: post/reply, repost, like/unlike, follow/unfollow, friend/unfriend, message, or video. Posts/messages support context, tags and attachments. Content is public and permanent; recipient context does NOT encrypt a message. Friend records require your communication public key from an established key-agreement workflow. Requires the selected BAP identity wallet or explicit legacy identity key and funding. Use preview to inspect unsigned outputs without spending.

Read as Markdown

Result

Transaction ID, action type and output count; preview returns unsigned output scripts without spending.

Permissions

The selected identity wallet signs and funds through its existing permissions. Legacy wallets require a separate identity key plus a payment key. Broadcasting must be enabled unless preview is true.

Choose action.type. Replies are posts with replyTo. Tags and attachments have separately signed outputs. A message recipient is routing metadata, not encryption. Friend records advertise a supplied communication public key and do not establish a secure messaging protocol. unfriend and video are indexer extensions.

Definition 1

Full catalog · Legacy local wallet; Legacy local identity; Local Vault · broadcasting disabled; Local Vault · all roles; Local Vault + sponsor

FieldType / requiredDescription
actionobject
Required
See schema for details.
previewboolean
Optional
Return unsigned output scripts without signing, funding, or broadcasting.

default: false

action.type = "post"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "post"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.filenamestring
Optional
See schema for details.

maxLength: 255

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.tagsarray of string
Optional
See schema for details.

maxItems: 50

action.attachmentsarray of object
Optional
See schema for details.

maxItems: 8

action.attachments[].contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.attachments[].contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.attachments[].encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.attachments[].filenamestring
Optional
See schema for details.

maxLength: 255

action.replyTostring
Optional
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.type = "repost"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "repost"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.txidstring
Required
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.type = "like" | "unlike"
FieldType / requiredDescription
action.type"like" | "unlike"
Required
See schema for details.
action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.txidstring
Required
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.emojistring
Optional
See schema for details.

minLength: 1; maxLength: 32

action.type = "follow" | "unfollow" | "unfriend"
FieldType / requiredDescription
action.type"follow" | "unfollow" | "unfriend"
Required
See schema for details.
action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.bapIdstring
Required
See schema for details.

minLength: 1; maxLength: 128; pattern: "^[a-zA-Z0-9]+$"

action.type = "friend"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "friend"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.bapIdstring
Required
See schema for details.

minLength: 1; maxLength: 128; pattern: "^[a-zA-Z0-9]+$"

action.publicKeystring
Required
Your communication public key, from the existing wallet/key-agreement workflow. This record does not establish encryption by itself.

pattern: "^(02|03)[a-f0-9]{64}$"

action.type = "message"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "message"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.filenamestring
Optional
See schema for details.

maxLength: 255

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.tagsarray of string
Optional
See schema for details.

maxItems: 50

action.attachmentsarray of object
Optional
See schema for details.

maxItems: 8

action.attachments[].contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.attachments[].contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.attachments[].encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.attachments[].filenamestring
Optional
See schema for details.

maxLength: 255

action.type = "video"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "video"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.providerstring
Required
See schema for details.

minLength: 1; maxLength: 100

action.videoIDstring
Required
See schema for details.

minLength: 1; maxLength: 512

action.channelstring
Optional
See schema for details.

minLength: 1; maxLength: 256

action.durationnumber
Optional
See schema for details.

minimum: 0

action.startnumber
Optional
See schema for details.

minimum: 0

Nested fields are required only when their parent object or array item is supplied.

Full input schema
{
  "type": "object",
  "properties": {
    "action": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "post"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "maxLength": 400000
            },
            "contentType": {
              "default": "text/plain",
              "type": "string",
              "maxLength": 128,
              "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
            },
            "encoding": {
              "default": "utf8",
              "description": "Input encoding. Base64 is decoded to binary B content.",
              "type": "string",
              "enum": [
                "utf8",
                "base64"
              ]
            },
            "filename": {
              "type": "string",
              "maxLength": 255
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "tags": {
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              }
            },
            "attachments": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400000
                  },
                  "contentType": {
                    "default": "text/plain",
                    "type": "string",
                    "maxLength": 128,
                    "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
                  },
                  "encoding": {
                    "default": "utf8",
                    "description": "Input encoding. Base64 is decoded to binary B content.",
                    "type": "string",
                    "enum": [
                      "utf8",
                      "base64"
                    ]
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  }
                },
                "required": [
                  "content"
                ],
                "additionalProperties": false
              }
            },
            "replyTo": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "repost"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "txid": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "txid"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "like",
                "unlike"
              ]
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "txid": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "emoji": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            }
          },
          "required": [
            "type",
            "txid"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "follow",
                "unfollow",
                "unfriend"
              ]
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "bapId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[a-zA-Z0-9]+$"
            }
          },
          "required": [
            "type",
            "bapId"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "friend"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "bapId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[a-zA-Z0-9]+$"
            },
            "publicKey": {
              "type": "string",
              "pattern": "^(02|03)[a-f0-9]{64}$",
              "description": "Your communication public key, from the existing wallet/key-agreement workflow. This record does not establish encryption by itself."
            }
          },
          "required": [
            "type",
            "bapId",
            "publicKey"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "message"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "maxLength": 400000
            },
            "contentType": {
              "default": "text/plain",
              "type": "string",
              "maxLength": 128,
              "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
            },
            "encoding": {
              "default": "utf8",
              "description": "Input encoding. Base64 is decoded to binary B content.",
              "type": "string",
              "enum": [
                "utf8",
                "base64"
              ]
            },
            "filename": {
              "type": "string",
              "maxLength": 255
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "tags": {
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              }
            },
            "attachments": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400000
                  },
                  "contentType": {
                    "default": "text/plain",
                    "type": "string",
                    "maxLength": 128,
                    "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
                  },
                  "encoding": {
                    "default": "utf8",
                    "description": "Input encoding. Base64 is decoded to binary B content.",
                    "type": "string",
                    "enum": [
                      "utf8",
                      "base64"
                    ]
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  }
                },
                "required": [
                  "content"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "video"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "provider": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "videoID": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512
            },
            "channel": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "duration": {
              "type": "number",
              "minimum": 0
            },
            "start": {
              "type": "number",
              "minimum": 0
            }
          },
          "required": [
            "type",
            "provider",
            "videoID"
          ],
          "additionalProperties": false
        }
      ]
    },
    "preview": {
      "default": false,
      "description": "Return unsigned output scripts without signing, funding, or broadcasting.",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Definition 2

Compact catalog · Legacy local wallet; Legacy local identity; Local Vault · broadcasting disabled; Local Vault · all roles; Local Vault + sponsor

FieldType / requiredDescription
actionobject
Required
See schema for details.
previewboolean
Optional
Return unsigned output scripts without signing, funding, or broadcasting.

default: false

action.type = "post"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "post"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.filenamestring
Optional
See schema for details.

maxLength: 255

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.tagsarray of string
Optional
See schema for details.

maxItems: 50

action.attachmentsarray of object
Optional
See schema for details.

maxItems: 8

action.attachments[].contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.attachments[].contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.attachments[].encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.attachments[].filenamestring
Optional
See schema for details.

maxLength: 255

action.replyTostring
Optional
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.type = "repost"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "repost"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.txidstring
Required
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.type = "like" | "unlike"
FieldType / requiredDescription
action.type"like" | "unlike"
Required
See schema for details.
action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.txidstring
Required
See schema for details.

pattern: "^[a-f0-9]{64}$"

action.emojistring
Optional
See schema for details.

minLength: 1; maxLength: 32

action.type = "follow" | "unfollow" | "unfriend"
FieldType / requiredDescription
action.type"follow" | "unfollow" | "unfriend"
Required
See schema for details.
action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.bapIdstring
Required
See schema for details.

minLength: 1; maxLength: 128; pattern: "^[a-zA-Z0-9]+$"

action.type = "friend"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "friend"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.bapIdstring
Required
See schema for details.

minLength: 1; maxLength: 128; pattern: "^[a-zA-Z0-9]+$"

action.publicKeystring
Required
Your communication public key, from the existing wallet/key-agreement workflow. This record does not establish encryption by itself.

pattern: "^(02|03)[a-f0-9]{64}$"

action.type = "message"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "message"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.filenamestring
Optional
See schema for details.

maxLength: 255

action.contextobject
Optional
See schema for details.
action.context.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.context.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.subcontextobject
Optional
See schema for details.
action.subcontext.keystring
Required
See schema for details.

minLength: 1; maxLength: 64; pattern: "^[a-zA-Z][a-zA-Z0-9_.-]*$"

action.subcontext.valuestring
Required
See schema for details.

minLength: 1; maxLength: 2048

action.tagsarray of string
Optional
See schema for details.

maxItems: 50

action.attachmentsarray of object
Optional
See schema for details.

maxItems: 8

action.attachments[].contentstring
Required
See schema for details.

minLength: 1; maxLength: 400000

action.attachments[].contentTypestring
Optional
See schema for details.

default: "text/plain"; maxLength: 128; pattern: "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"

action.attachments[].encoding"utf8" | "base64"
Optional
Input encoding. Base64 is decoded to binary B content.

default: "utf8"

action.attachments[].filenamestring
Optional
See schema for details.

maxLength: 255

action.type = "video"
FieldType / requiredDescription
action.typestring
Required
See schema for details.

const: "video"

action.appstring
Optional
See schema for details.

default: "bsv-mcp"; minLength: 1; maxLength: 100

action.providerstring
Required
See schema for details.

minLength: 1; maxLength: 100

action.videoIDstring
Required
See schema for details.

minLength: 1; maxLength: 512

action.channelstring
Optional
See schema for details.

minLength: 1; maxLength: 256

action.durationnumber
Optional
See schema for details.

minimum: 0

action.startnumber
Optional
See schema for details.

minimum: 0

Nested fields are required only when their parent object or array item is supplied.

Full input schema
{
  "type": "object",
  "properties": {
    "action": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "post"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "maxLength": 400000
            },
            "contentType": {
              "default": "text/plain",
              "type": "string",
              "maxLength": 128,
              "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
            },
            "encoding": {
              "default": "utf8",
              "description": "Input encoding. Base64 is decoded to binary B content.",
              "type": "string",
              "enum": [
                "utf8",
                "base64"
              ]
            },
            "filename": {
              "type": "string",
              "maxLength": 255
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "tags": {
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              }
            },
            "attachments": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400000
                  },
                  "contentType": {
                    "default": "text/plain",
                    "type": "string",
                    "maxLength": 128,
                    "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
                  },
                  "encoding": {
                    "default": "utf8",
                    "description": "Input encoding. Base64 is decoded to binary B content.",
                    "type": "string",
                    "enum": [
                      "utf8",
                      "base64"
                    ]
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  }
                },
                "required": [
                  "content"
                ],
                "additionalProperties": false
              }
            },
            "replyTo": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "repost"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "txid": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "type",
            "txid"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "like",
                "unlike"
              ]
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "txid": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "emoji": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            }
          },
          "required": [
            "type",
            "txid"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "follow",
                "unfollow",
                "unfriend"
              ]
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "bapId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[a-zA-Z0-9]+$"
            }
          },
          "required": [
            "type",
            "bapId"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "friend"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "bapId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[a-zA-Z0-9]+$"
            },
            "publicKey": {
              "type": "string",
              "pattern": "^(02|03)[a-f0-9]{64}$",
              "description": "Your communication public key, from the existing wallet/key-agreement workflow. This record does not establish encryption by itself."
            }
          },
          "required": [
            "type",
            "bapId",
            "publicKey"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "message"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "maxLength": 400000
            },
            "contentType": {
              "default": "text/plain",
              "type": "string",
              "maxLength": 128,
              "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
            },
            "encoding": {
              "default": "utf8",
              "description": "Input encoding. Base64 is decoded to binary B content.",
              "type": "string",
              "enum": [
                "utf8",
                "base64"
              ]
            },
            "filename": {
              "type": "string",
              "maxLength": 255
            },
            "context": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "subcontext": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$"
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2048
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            },
            "tags": {
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              }
            },
            "attachments": {
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400000
                  },
                  "contentType": {
                    "default": "text/plain",
                    "type": "string",
                    "maxLength": 128,
                    "pattern": "^[\\w.+-]+\\/[\\w.+-]+(?:;[^\\r\\n]*)?$"
                  },
                  "encoding": {
                    "default": "utf8",
                    "description": "Input encoding. Base64 is decoded to binary B content.",
                    "type": "string",
                    "enum": [
                      "utf8",
                      "base64"
                    ]
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  }
                },
                "required": [
                  "content"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "type",
            "content"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "video"
            },
            "app": {
              "default": "bsv-mcp",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "provider": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "videoID": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512
            },
            "channel": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "duration": {
              "type": "number",
              "minimum": 0
            },
            "start": {
              "type": "number",
              "minimum": 0
            }
          },
          "required": [
            "type",
            "provider",
            "videoID"
          ],
          "additionalProperties": false
        }
      ]
    },
    "preview": {
      "default": false,
      "description": "Return unsigned output scripts without signing, funding, or broadcasting.",
      "type": "boolean"
    }
  },
  "required": [
    "action"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}