# The wake-up call for AI agents.

Your app wakes AI agents the moment something new happens, with a few lines of code on the MCP server you already run.

[Add it to your MCP server](https://wakeshift.ai/docs/quickstart) · [Test a wake in two minutes](https://try.wakeshift.ai)

Use this prompt to get started. `Add Wakeshift to this MCP server following https://wakeshift.ai/AGENTS.md`

Wakes the agents your users already run: Claude Code, Codex, Cursor, Claude Cowork, ChatGPT, opencode, Hermes Agent, pi, Antigravity, Copilot CLI, [and any MCP client](https://wakeshift.ai/docs/agents).

Integrates with the stack you already use: [TypeScript](https://wakeshift.ai/docs/sdk), [Python](https://wakeshift.ai/docs/python), [Go](https://wakeshift.ai/docs/go), [or any language, over HTTP](https://wakeshift.ai/docs/other-languages).

## Your users add your MCP server normally, then you can wake their agents

1. **Your user adds your app.** They don't sign up for Wakeshift or click through a Wakeshift screen. Adding your app is the consent.
2. **Their agent subscribes.** The tool that starts the crawl subscribes the conversation that called it, or the user asks their agent to watch something.
3. **You emit, and it wakes.** Your backend calls `emit` when the crawl is done. The conversation that asked picks up, with your event marked as coming from your app.

## For work that finishes after your tool returns

Your MCP tool returns right away, but the work it starts can run for minutes, hours or days. When the agent hears back, that work reaches your user, and your product finishes what it started.

- **A job finishes. A render, a crawl or a build outlives the tool call.** Block until it's done, and the request times out. Return a job ID, and the agent spends turns checking, or ends its turn and the result goes unread. [Long-running jobs](https://wakeshift.ai/long-running-jobs)
- **A person replies. An email, a text or an approval comes back tomorrow.** Nobody knows when the answer will come, so no checking interval works, and by then the session has moved on or the laptop is closed. [Waiting on a person](https://wakeshift.ai/waiting-on-a-person)
- **Something changes. An alert fires, or something your user is watching moves.** Your backend sees it the moment it happens. Without a wake, the agent hears about it only the next time someone asks. [How events work](https://wakeshift.ai/docs/events)

## Three calls on the MCP server you already have

1. `defineEvent`: Name what your app offers, with typed arguments and payloads.
2. `attach`: Agents can subscribe through your server, whichever program they run in.
3. `emit`: Call it from anywhere in your code, and every subscriber wakes.

**Your tools can subscribe too.** Have your `start_crawl` tool subscribe the conversation that called it, and the agent hears back when the crawl is done, with nothing more for the user to ask. [See the tool](https://wakeshift.ai/long-running-jobs).

```ts server.ts
import { createServer } from "node:http"
import { McpServer, createMcpHandler } from "@modelcontextprotocol/server"
import { toNodeHandler } from "@modelcontextprotocol/node"
import { Wakeshift } from "@wakeshift/sdk"
import { z } from "zod"

const wake = new Wakeshift() // reads WAKESHIFT_KEY

const crawlFinished = wake.defineEvent("crawl.finished", {
  description: "A site crawl finished",
  args: z.object({ site: z.string() }),
  payload: z.object({ pages: z.number() }),
  text: (crawl, { site }) => `Crawl of ${site} finished: ${crawl.pages} pages`,
  public: true, // open to every agent, not only your tools
})

const mcp = createMcpHandler(() => {
  const server = new McpServer({ name: "crawler", version: "1.0.0" })
  wake.attach(server) // agents can now subscribe
  return server
})
createServer(toNodeHandler(mcp)).listen(3000)

// When the crawl finishes, wake every agent waiting on it
await crawlFinished.emit({ site: "example.com" }, { pages: 1834 })
```

Install:

- TypeScript: `npm install @wakeshift/sdk @modelcontextprotocol/server @modelcontextprotocol/node zod`
- Python: `pip install 'wakeshift[mcp]'` ([Python SDK](https://wakeshift.ai/docs/python))
- Go: `go get github.com/wakeshift/wakeshift-go@latest` ([Go SDK](https://wakeshift.ai/docs/go))

## Everything between your event and a woken agent

You decide what happens in your app. Wakeshift handles your users, their agents, and every delivery in between.

- **Works with the agents your users run.** Claude Code, Codex, Cursor, Copilot CLI, ChatGPT's Work chats and more, each woken the way it can be. Your code is the same for all of them; most need nothing installed, and the rest ask once.
- **Works with your MCP server.** Wakeshift plugs into the MCP server you already publish, sign-in and all. Your users connect exactly the way they do today.
- **Emit from anywhere.** From the code that finishes the job, a queue consumer or a webhook handler you already have. Or point a service at a publish URL, and each post that matches your event emits, with no handler of yours.
- **Agents know who's talking.** Every event arrives marked as coming from your app, so agents treat it as information, not as orders from their user.
- **Your users consent once.** Adding your app is the consent. A subscription starts only when a user asks, an event can go privately to one user, and every consent and revocation is in an audit log.
- **Nothing gets lost.** Events wait for agents that are offline. Your dashboard shows every event you send and every delivery.

## See what agents do when they can be woken

- [Webhooks](https://try.wakeshift.ai): Wake your agent from any webhook.
- [Superlog](https://superlog.sh): Wakes agents when an alert fires or an error regresses.
- [AgentPhone](https://agentphone.ai): Wakes agents when a text comes in.
- [Channel3](https://trychannel3.com): Wakes agents when a watched product's price or stock changes.
- [Sketch Stadium](https://sketch.wakeshift.ai): Drawing and guessing for AI agents.
- [Agent Chat](https://chat.wakeshift.ai): Group chat for AI agents.
- [Agent Hold'em](https://holdem.wakeshift.ai): No-limit Texas Hold'em for AI agents.
- [Your app here](https://wakeshift.ai/docs/quickstart): Wake people's agents from your own MCP server with three calls.

## Start free, and pay as your app grows

Every plan includes 50,000 deliveries a month. Retries, filtered events and events no agent is subscribed to never count.

- **Free**, $0: Build and try your app, with 50,000 deliveries a month. 50,000 deliveries a month, 10 deliveries a second, 7 days of event history.
- **Starter**, $29 a month: Run your app in production, and pay as you go past the included usage. 50,000 deliveries included, then $0.10 per 1,000; 50 deliveries a second; 30 days of event history.
- **Custom**: For apps at scale, on terms agreed with you. Volume discounts and custom throughput, SSO and data residency, a named contact.

A delivery is one event reaching one agent. [Compare plans](https://wakeshift.ai/pricing).

## Add it to your MCP server in five minutes.

- **Building an MCP server.** The quickstart adds events to the server you already run and wakes an agent with one. It takes about five minutes. [Read the quickstart](https://wakeshift.ai/docs/quickstart)
- **Just trying it out.** Get a webhook URL that wakes your own agent whenever something posts to it. No sign-up, and no server of your own. Or connect your agent to one of our [example apps](https://wakeshift.ai/#apps). [Test a wake](https://try.wakeshift.ai)

Questions about your app? [Talk to us](https://wakeshift.ai/pricing#contact).

For coding agents: [AGENTS.md](https://wakeshift.ai/AGENTS.md) adds Wakeshift to an MCP server, and [llms.txt](https://wakeshift.ai/llms.txt) lists every docs page in Markdown.

More about Wakeshift: [Long-running jobs](https://wakeshift.ai/long-running-jobs) · [One MCP server, every agent](https://wakeshift.ai/claude-code-codex-cursor) · [Waiting on a person](https://wakeshift.ai/waiting-on-a-person) · [Hosted MCP Events](https://wakeshift.ai/mcp-events) · [Compare](https://wakeshift.ai/compare) · [FAQ](https://wakeshift.ai/faq)
