← BSV MCPInstall
Social

bsocial_publish

Publish a post, reply, reaction or message with your BAP identity.

Read as Markdown

Example

{
  "action": {
    "type": "post",
    "content": "Hello Bitcoin",
    "contentType": "text/plain"
  },
  "preview": true
}

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.

Inputs and availability

full and compact catalog · Legacy local wallet; Legacy local identity; Local Vault · broadcasting disabled; Local Vault · all roles; Local Vault + sponsor

Full tool description

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.

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
}