Blog2Social - Social Media Publishing

Connect AI agents to Blog2Social and automate social media content workflows via MCP.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
65%
Naming quality
50%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (8)

  • LOWTool 'networks.list' doesn't follow camelCase/snake_casein networks.list
  • LOWTool 'connections.list' doesn't follow camelCase/snake_casein connections.list
  • LOWTool 'networks.list_properties' doesn't follow camelCase/snake_casein networks.list_properties
  • LOWTool 'connections.remove' doesn't follow camelCase/snake_casein connections.remove
  • LOWTool 'connections.add' doesn't follow camelCase/snake_casein connections.add
  • LOWTool 'posts.create' doesn't follow camelCase/snake_casein posts.create
  • LOWTool 'videos.check' doesn't follow camelCase/snake_casein videos.check
  • LOWTool 'credits.balance' doesn't follow camelCase/snake_casein credits.balance

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,264Tokens (tool definitions)
~2.4 KBTypical response size
Moderate attention impact (1.77% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "blog2social-api-mcp": {
      "url": "https://api.blog2social.com/mcp"
    }
  }
}

Remote endpoints

https://api.blog2social.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢networks.list

Returns the social networks that can be connected to Blog2Social, including each network name, URL, network_id and whether profiles, pages or groups are supported. Use network_id and a supported network_type_id with connections.add to start connecting an account.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🟢connections.list

Returns the social accounts currently connected to the authenticated Blog2Social user, with details such as the network, account type and display name. Use an account client_user_network_id in posts.create to choose where to publish.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🟢networks.list_properties

Returns publishing capabilities and limits for each network and account type, such as supported media formats, video support and character limits. Check these requirements when preparing a post for a specific network and account type.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🔴connections.remove(client_user_network_id)

Removes a social account connection from the authenticated Blog2Social user. Call connections.list first to get the account's client_user_network_id. After removal, the account can no longer be used for publishing unless it is connected again.

Input Schema

{
  "type": "object",
  "properties": {
    "client_user_network_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Connected social media account ID returned by connections.list."
    }
  },
  "required": [
    "client_user_network_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "True when the connected social media account was removed successfully."
        }
      },
      "required": [
        "success"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🟢connections.add(network_id, network_type_id, language, service_conditions_id)

Starts authorization for a social network account. Get network_id and a supported account type from networks.list; network_type_id 0 means profile, 1 page and 2 group. The response contains an auth_link for the user to open and authorize Blog2Social. Pinterest is an exception: it requires a custom application (service_conditions_id) and does not return an auth_link.

Input Schema

{
  "type": "object",
  "properties": {
    "network_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Social media network ID returned by the networks.list tool."
    },
    "network_type_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2,
      "description": "Connection type: 0 = profile, 1 = page, 2 = group."
    },
    "language": {
      "type": "string",
      "minLength": 2,
      "description": "Optional language for the authorization flow, for example en or de."
    },
    "service_conditions_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Optional service conditions ID for using a custom application."
    }
  },
  "required": [
    "network_id",
    "network_type_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "auth_link": {
          "type": "string",
          "description": "Authorization URL that must be opened to connect the account."
        },
        "session_token": {
          "type": "string",
          "description": "Session token for the authorization process."
        },
        "expired_in": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of seconds until the authorization session expires."
        }
      },
      "required": [
        "auth_link",
        "session_token",
        "expired_in"
      ],
      "additionalProperties": true
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🟡posts.create(client_user_network_id, b2s_posts)

Publishes a post to the connected account identified by client_user_network_id. Use postFormat 0 for text or link posts (a link is optional), 1 for image posts, or 2 for video posts; image and video posts require mediaObjects. The response includes a publish_url for non-video posts. Video posts return a video_token to check with videos.check.

Input Schema

{
  "type": "object",
  "properties": {
    "client_user_network_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Connected social media account ID returned by connections.list. All posts in b2s_posts are published to this account."
    },
    "b2s_posts": {
      "type": "array",
      "minItems": 1,
      "description": "One or more posts to publish to the selected account. Use postFormat 0 for text or links, 1 for images, and 2 for videos; image and video posts require mediaObjects.",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "title": "Text or link post",
            "properties": {
              "message": {
                "type": "string",
                "minLength": 1,
                "description": "Text of the social media post."
              },
              "title": {
                "type": "string",
                "description": "Optional title for the post, when supported by the selected social network."
              },
              "postFormat": {
                "type": "integer",
                "const": 0,
                "description": "Text or link post."
              },
              "customUrl": {
                "type": "string",
                "minLength": 1,
                "description": "Optional public URL attached to the post."
              }
            },
            "required": [
              "message",
              "postFormat"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "Image post",
            "properties": {
              "message": {
                "type": "string",
                "minLength": 1,
                "description": "Text or caption to accompany the image post."
              },
              "title": {
                "type": "string",
                "description": "Optional title for the image post, when supported by the selected social network."
              },
              "postFormat": {
                "type": "integer",
                "const": 1,
                "description": "Image post."
              },
              "customUrl": {
                "type": "string",
                "minLength": 1,
                "description": "Optional public URL to attach to the image post, when supported by the selected social network."
              },
              "mediaObjects": {
                "type": "array",
                "minItems": 1,
                "description": "Image media items to include in the post. Each item must provide an IMAGE type and a public URL.",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "IMAGE",
                      "description": "Media type; must be IMAGE for this post."
                    },
                    "url": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Public HTTP or HTTPS image URL."
                    },
                    "alt": {
                      "type": "string",
                      "description": "Optional alternative text describing the image."
                    }
                  },
                  "required": [
                    "type",
                    "url"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "message",
              "postFormat",
              "mediaObjects"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "Video post",
            "properties": {
              "message": {
                "type": "string",
                "minLength": 1,
                "description": "Text or caption to accompany the video post."
              },
              "title": {
                "type": "string",
                "description": "Optional title for the video post, when supported by the selected social network."
              },
              "postFormat": {
                "type": "integer",
                "const": 2,
                "description": "Video post."
              },
              "customUrl": {
                "type": "string",
                "minLength": 1,
                "description": "Optional public URL to attach to the video post, when supported by the selected social network."
              },
              "mediaObjects": {
                "type": "array",
                "minItems": 1,
                "description": "Video media items to include in the post. Each item must provide a VIDEO type and a public URL.",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "VIDEO",
                      "description": "Media type; must be VIDEO for this post."
                    },
                    "url": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Public HTTP or HTTPS video URL."
                    },
                    "alt": {
                      "type": "string",
                      "description": "Optional alternative text or description for the video."
                    }
                  },
                  "required": [
                    "type",
                    "url"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "message",
              "postFormat",
              "mediaObjects"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "client_user_network_id",
    "b2s_posts"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "error": {
            "type": "integer"
          },
          "type": {
            "type": "integer"
          },
          "publish_url": {
            "type": "string"
          },
          "network_post_id": {
            "type": "string"
          },
          "b2s_error_code": {
            "type": "string"
          },
          "post_id": {
            "type": "integer"
          },
          "extra": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      }
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}
🟢videos.check(video_token)

Checks the publishing status of a video post using the video_token returned by posts.create. Returns the status for each target social account: pending, failed or successful. A publish_url is included when publishing succeeds; check again while the status is pending.

Input Schema

{
  "type": "object",
  "properties": {
    "video_token": {
      "type": "string",
      "minLength": 1,
      "description": "Video token returned when the video upload was created."
    }
  },
  "required": [
    "video_token"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢credits.balance

Returns the current credit balance of the authenticated Blog2Social API account. Publishing is not possible when the balance is 0, so check it if a post cannot be published.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "balance": {
          "type": "integer",
          "minimum": 0,
          "description": "Current number of available Blog2Social credits."
        }
      },
      "required": [
        "balance"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools