MagicBell MCP by usefulapi

Read MagicBell broadcasts, users, events, workflows and channels; create and update user records.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
89%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,795Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (1.40% 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": {
    "magicbell": {
      "url": "https://magicbell.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://magicbell.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools
verifiedversion not recorded13 tools
verifiedversion not recorded13 tools
failed observationversion not recorded—
failed observationversion not recorded—