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/mcp

What 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/mcp

Then 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/mcp

Then authenticate:

codex mcp login activitysmith

Other MCP Clients#

For any client that asks for a remote MCP server URL, use:

https://mcp.activitysmith.com/mcp

The 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.

Manage API keys#

The approval screen also has an optional Manage API keys checkbox. It is unchecked by default. Tick it when you want the agent to set up code that calls the ActivitySmith API on its own, for example by creating a key for a CI job and saving it as a secret.

With this permission the agent can list, create, rename, and delete API keys. It never sees existing key secrets, only the secret of a key it creates. Keys an agent creates keep working after you disconnect the agent, so delete them on the API Keys page when you no longer need them. Each one is labeled with the agent that created it.

If you skipped the checkbox, the API key tools return an error that asks you to reconnect ActivitySmith and tick it. The OAuth scope is api_keys:write. ActivitySmith grants it only when you tick the checkbox, even if the client requests it.

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.
Ask me for approval on my iPhone before sending any email to customers.

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.

The API key tools only work if you ticked the optional Manage API keys checkbox when you approved the agent in ActivitySmith. See Manage API keys.

ResourceToolDescription
Approvalsrequest_approvalSend a remote approval and wait for the decision.
Approvalswait_for_approvalContinue waiting for a pending approval.
Approvalsget_approvalGet the current state of an approval without waiting.
Approvalscancel_approvalCancel a pending approval that is no longer needed.
Approvalsrequest_approval_taskCreate a durable approval task in MCP clients that support MCP Tasks.
Push Notificationssend_push_notificationSend a Push Notification, with optional icon, interruption level, actions, media, and channel targeting.
Push Notificationsreplace_push_notificationSilently replace a sent Push Notification on the Lock Screen and in history, using its notification_id.
Push Notificationslist_push_notificationsList Push Notification history for the account.
Push Notificationsget_push_notificationGet one Push Notification by public ID.
App Icon Badge Countupdate_app_icon_badge_countSet or clear the App Icon Badge Count, with optional channel targeting.
Live Activitiesset_live_activity_streamStart or update a managed Live Activity stream.
Live Activitiespause_live_activity_streamPause a stream and end its current Live Activity.
Live Activitiesresume_live_activity_streamResume a paused stream so updates apply again.
Live Activitiesend_live_activity_streamEnd the current Live Activity and remove the stream key.
Live Activitieslist_live_activitiesList Live Activities for the account.
Live Activitiesget_live_activityGet one Live Activity with its metadata, tags, channels, and actions.
Lock Screen Widgetscreate_widget_metricCreate a widget metric definition.
Lock Screen Widgetsset_widget_metric_valueSet the latest value for a widget metric.
Lock Screen Widgetsupdate_widget_metricUpdate a widget metric definition.
Lock Screen Widgetslist_widget_metricsList widget metrics for the account.
Lock Screen Widgetsdelete_widget_metricDelete a widget metric.
Tagslist_tagsList tags and their usage across Push Notifications and Live Activities.
Channelscreate_channelCreate a channel for targeting Push Notifications and Live Activities.
Channelsget_channelGet one channel with its assigned users and devices.
Channelslist_channelsList channels for the account.
Channelsupdate_channelUpdate a channel slug.
Channelsset_channel_usersReplace the user membership for a channel.
Channelsset_channel_devicesReplace explicit device assignments for a channel.
Channelsdelete_channelDelete a channel.
Users and Deviceslist_account_usersList users in the account for channel assignment.
Users and Deviceslist_account_devicesList active devices for explicit channel assignment.
API Keyslist_api_keysList API keys without their secrets.
API Keyscreate_api_keyCreate an API key and return its secret once.
API Keysrename_api_keyRename an API key.
API Keysdelete_api_keyDelete an API key.

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.

ToolDefault limitMaximum limitOrdering
list_push_notifications50100Newest first; equal creation times use descending ID order
list_live_activities50100Newest first; equal creation times use descending ID order
list_tags50100Alphabetical by slug, then ID
list_account_devices100100Active 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, or null when 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.