MagicBell MCP by usefulapi
Read MagicBell broadcasts, users, events, workflows and channels; create and update user records.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"magicbell": {
"url": "https://magicbell.usefulapi.io/mcp"
}
}
}Remote endpoints
https://magicbell.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (13)
🟢magicbell_list_broadcasts(limit, starting_after, ending_before)
List broadcasts (notification-send batches) with cursor pagination. Read-only observability. Project API: GET /broadcasts.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_get_broadcast(broadcast_id)
Fetch a single broadcast by id. Project API: GET /broadcasts/{broadcast_id}.
Input Schema
{
"type": "object",
"properties": {
"broadcast_id": {
"type": "string",
"description": "Broadcast id."
}
},
"required": [
"broadcast_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_users(limit, starting_after, ending_before)
List users (notification recipients) with cursor pagination. Project API: GET /users.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_get_user(user_id)
Fetch a single user by MagicBell user id or external id. Project API: GET /users/{user_id}.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "MagicBell user id or external id."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_events(limit, starting_after, ending_before)
List notification delivery events with cursor pagination. Read-only observability. Project API: GET /events.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_get_event(event_id)
Fetch a single delivery event by id. Project API: GET /events/{event_id}.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": "string",
"description": "Event id."
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_workflows(limit, starting_after, ending_before)
List notification workflows with cursor pagination. Project API: GET /workflows.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_workflow_runs(limit, starting_after, ending_before)
List workflow runs (execution history) with cursor pagination. Project API: GET /workflows/runs.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_get_workflow_run(run_id)
Fetch a single workflow run by id. Project API: GET /workflows/runs/{run_id}.
Input Schema
{
"type": "object",
"properties": {
"run_id": {
"type": "string",
"description": "Workflow run id."
}
},
"required": [
"run_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_channels(limit, starting_after, ending_before)
List delivery channels (in-app, email, push, SMS, etc.) with cursor pagination. Project API: GET /channels.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max items per page (cursor pagination).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"starting_after": {
"description": "Cursor: return items after this id (next page).",
"type": "string"
},
"ending_before": {
"description": "Cursor: return items before this id (previous page).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢magicbell_list_integrations
List configured provider integrations (e.g. Sendgrid, APNs, FCM). Project API: GET /integrations.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴magicbell_create_user(external_id, email, first_name, last_name, timezone, ...)
Creates a user (notification recipient) record in MagicBell. Additive — sends no notification. Provide at least one identifier (external_id or email). Project API: POST /users.
Input Schema
{
"type": "object",
"properties": {
"external_id": {
"description": "Your own stable id for this user (recommended identifier).",
"type": "string"
},
"email": {
"description": "User email address.",
"type": "string"
},
"first_name": {
"description": "User first name.",
"type": "string"
},
"last_name": {
"description": "User last name.",
"type": "string"
},
"timezone": {
"description": "IANA timezone, e.g. America/New_York.",
"type": "string"
},
"custom_attributes": {
"description": "Arbitrary key/value metadata for the user.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"phone_numbers": {
"description": "Array of phone numbers (E.164).",
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴magicbell_update_user(user_id, external_id, email, first_name, last_name, ...)
Updates a user record (reversible; sends no notification). Project API: PUT /users/{user_id}.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "MagicBell user id or external id to update."
},
"external_id": {
"description": "Your own stable id for this user (recommended identifier).",
"type": "string"
},
"email": {
"description": "User email address.",
"type": "string"
},
"first_name": {
"description": "User first name.",
"type": "string"
},
"last_name": {
"description": "User last name.",
"type": "string"
},
"timezone": {
"description": "IANA timezone, e.g. America/New_York.",
"type": "string"
},
"custom_attributes": {
"description": "Arbitrary key/value metadata for the user.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"phone_numbers": {
"description": "Array of phone numbers (E.164).",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence