MCP Server
Let AI agents send Push Notifications, show real-time progress with Live Activities, update Lock Screen Widgets, and request approval on your iPhone or iPad.
Server URL#
https://mcp.activitysmith.com/mcpWhat Agents Can Do#
Push Notifications
Send Push Notifications to your paired devices.
Live Activities
Show real-time business metrics, operational state, or ongoing work on your Lock Screen.
Lock Screen Widgets
Update values shown in Lock Screen widgets.
Remote Approvals
Send remote approvals that you can accept or reject from your iPhone.
App Icon Badge Count
Set or clear the App Icon Badge Count on paired devices.
History
Review Push Notification and Live Activity history.
Setup Instructions#
The server URL is the same in every client. Approve the OAuth screen in your browser to make the ActivitySmith tools available in new sessions.
Claude Code#
claude mcp add --transport http activitysmith https://mcp.activitysmith.com/mcpThen run /mcp inside a Claude Code session to go through the authentication flow.
Cursor#
Install in Cursor with one click.
If you prefer manual setup, add the server to ~/.cursor/mcp.json:
{ "mcpServers": { "activitysmith": { "url": "https://mcp.activitysmith.com/mcp" } }}Cursor prompts you to log in the first time the server is used.
Codex#
codex mcp add activitysmith --url https://mcp.activitysmith.com/mcpThen authenticate:
codex mcp login activitysmithOther MCP Clients#
For any client that asks for a remote MCP server URL, use:
https://mcp.activitysmith.com/mcpThe authorization flow happens in ActivitySmith. After approval, tools run against the account you authorized.
OAuth#
ActivitySmith MCP uses OAuth. You do not need to create or paste an ActivitySmith API key into an agent prompt.
During authorization, ActivitySmith shows the access requested by the client. Most clients request read and write access so the agent can inspect current state and then take action when you ask it to.
Example Prompts#
Notify me on my iPhone when this is done.Show me the progress visible on my Lock Screen with a Live Activity.Send me a Push Notification if this task gets blocked.Send a remote approval before deploying to production.Tools#
The server exposes the following MCP tools, grouped by resource. Keep tool confirmation enabled in your client when possible, especially when you connect multiple MCP servers to the same agent session.
API key administration remains in the ActivitySmith web app and is not exposed to MCP clients.
| Resource | Tool | Description |
|---|---|---|
| Approvals | request_approval | Send a remote approval and wait for the decision. |
| Approvals | wait_for_approval | Continue waiting for a pending approval. |
| Approvals | get_approval | Get the current state of an approval without waiting. |
| Approvals | cancel_approval | Cancel a pending approval that is no longer needed. |
| Approvals | request_approval_task | Create a durable approval task in MCP clients that support MCP Tasks. |
| Push Notifications | send_push_notification | Send a Push Notification, with optional actions, media, and channel targeting. |
| Push Notifications | list_push_notifications | List Push Notification history for the account. |
| Push Notifications | get_push_notification | Get one Push Notification by public ID. |
| App Icon Badge Count | update_app_icon_badge_count | Set or clear the App Icon Badge Count, with optional channel targeting. |
| Live Activities | set_live_activity_stream | Start or update a managed Live Activity stream. |
| Live Activities | pause_live_activity_stream | Pause a stream and end its current Live Activity. |
| Live Activities | resume_live_activity_stream | Resume a paused stream so updates apply again. |
| Live Activities | end_live_activity_stream | End the current Live Activity and remove the stream key. |
| Live Activities | list_live_activities | List Live Activities for the account. |
| Lock Screen Widgets | create_widget_metric | Create a widget metric definition. |
| Lock Screen Widgets | set_widget_metric_value | Set the latest value for a widget metric. |
| Lock Screen Widgets | update_widget_metric | Update a widget metric definition. |
| Lock Screen Widgets | list_widget_metrics | List widget metrics for the account. |
| Lock Screen Widgets | delete_widget_metric | Delete a widget metric. |
| Tags | list_tags | List tags and their usage across Push Notifications and Live Activities. |
| Channels | create_channel | Create a channel for targeting Push Notifications and Live Activities. |
| Channels | get_channel | Get one channel with its assigned users and devices. |
| Channels | list_channels | List channels for the account. |
| Channels | update_channel | Update a channel slug. |
| Channels | set_channel_users | Replace the user membership for a channel. |
| Channels | set_channel_devices | Replace explicit device assignments for a channel. |
| Channels | delete_channel | Delete a channel. |
| Users and Devices | list_account_users | List users in the account for channel assignment. |
| Users and Devices | list_account_devices | List active devices for explicit channel assignment. |
Pagination#
list_push_notifications, list_live_activities, list_tags, and list_account_devices support offset pagination. Other list tools currently return their complete result without pagination.
| Tool | Default limit | Maximum limit | Ordering |
|---|---|---|---|
list_push_notifications | 50 | 100 | Newest first; equal creation times use descending ID order |
list_live_activities | 50 | 100 | Newest first; equal creation times use descending ID order |
list_tags | 50 | 100 | Alphabetical by slug, then ID |
list_account_devices | 100 | 100 | Active devices first, then most recently updated and created; ties use device and owner identifiers |
For all four tools, limit must be an integer from 1 to 100. offset defaults to 0 and must be a nonnegative integer.
For example, call list_push_notifications with:
{ "limit": 50, "offset": 0 }A page containing the first 50 of 120 matching records includes this metadata:
{ "meta": { "total": 120, "limit": 50, "offset": 0, "has_more": true, "next_offset": 50 }}Records appear in data, except list_account_devices, which returns devices.
total: matching records when counted; this can change between requests.limit: the requested maximum page size.offset: how many records were skipped.has_more: whether another page is available.next_offset: the offset for the next request, ornullwhen finished.
Use next_offset as the next request's offset, keeping the same tool, filters, and limit. Stop when next_offset is null. An empty page also ends pagination, including when the offset is beyond the available results.
New or removed records, or changes to sort values, can move results between pages. When processing multiple pages, deduplicate by record identifier. Offset pagination does not guarantee a complete snapshot while results are changing.