Use Case · personal-assistant

How to build a personal AI assistant.

The thing most people actually want from an AI assistant is the morning briefing: a one-page summary of what’s on the calendar, what mattered in the inbox overnight, what tasks rolled over, and what’s still open in the notes app. That’s a tool-using loop over four boring APIs. The hard part is wiring Gmail, Calendar, Drive, and Notion into one coherent loop the model can actually run on schedule.

Every prototype dies on OAuth and schemas.

A weekend personal-assistant project starts with enthusiasm and dies at OAuth refresh tokens. Then it almost works, until the model invents a calendar method name that doesn’t exist, because the SDK shapes don’t map cleanly to a tool schema. Then Notion’s blocks API turns out to need three calls to read one page. Then it’s Sunday and you’ve built nothing.

The shape that works: a tool gateway that already speaks Google Workspace and Notion, exposes typed MCP methods the model can call by name, and handles auth refresh under the hood. You ship the briefing prompt in an afternoon and spend Sunday on the actual question — what should land in your morning brief.

wmcp.sh is that gateway. /integration/google covers Gmail, Calendar, Drive, and Sheets; /integration/notion covers pages and databases. wmcp.sh is not affiliated with Google or Notion.

Cron → read → brief.

1. Cron trigger. A scheduler — Cloudflare Cron, GitHub Actions cron, or any host — fires every weekday at your wake time and invokes the assistant runner.

2. Tool gateway (wmcp.sh). The runner pulls MCP tools for Gmail (read-only), Calendar (read + freebusy), Drive + Sheets (read), and Notion (read + page-write for the brief output).

3. Reasoning loop. The model lists today’s calendar events, scans the last 12 hours of inbox for VIP senders and explicit asks, reads the tracking sheet for habit metrics, and pulls open tasks from Notion.

4. Output. The assistant writes a one-page brief to a dated Notion page and (optionally) emails a plain-text version to your inbox. Nothing gets sent or scheduled on your behalf.

What wmcp.sh provides.

CapabilityVendorHow wmcp.sh wires it
Read recent emailGmail/integration/google — scoped to messages.list + messages.get
List today’s events + freebusyGoogle Calendar/integration/googleevents.list + freebusy.query
Read tracking spreadsheetGoogle Sheets/integration/googlespreadsheets.values.get
Read + write notes / tasksNotion/integration/notion — pages + databases
Draft (not send) emailGmaildrafts.create only — never messages.send
Inspect a public URLAny URL✅ Generic /api/v1/tools?url=...

The morning-briefing loop.

Python sketch. Runs on cron, reads across Google + Notion, writes a one-page brief to a dated Notion page. Never sends mail, never books meetings.

import httpx
from datetime import date
from anthropic import Anthropic

client = Anthropic()
WMCP = "https://wmcp.sh"

def tools_for(url):
    return httpx.get(f"{WMCP}/api/v1/tools", params={"url": url}).json()["tools"]

tools = (
    tools_for("https://gmail.googleapis.com")
    + tools_for("https://www.googleapis.com/calendar/v3")
    + tools_for("https://sheets.googleapis.com")
    + tools_for("https://api.notion.com/v1")
)

today = date.today().isoformat()

msg = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=tools,
    messages=[{"role": "user",
        "content": f"Morning brief for {today}. List today's calendar, summarize the last 12h "
                   "of inbox for VIPs and explicit asks, read the habits sheet, and list open tasks "
                   "from Notion. Write the brief to a new Notion page titled 'Brief — {today}'. "
                   "Never send email. Never auto-schedule."}],
)

print(msg.content)

Weekend project vs MCP gateway.

Hand-rolled prototype:

  • OAuth refresh tokens, written by hand for each app
  • Model hallucinates method names that don’t exist
  • Notion blocks API requires custom flattening
  • Every new tool is another adapter weekend

wmcp.sh tool gateway:

  • OAuth handled at the gateway, tokens cached
  • Typed MCP tools — the model calls real method names
  • Notion adapter flattens blocks for you
  • Add a tool by adding a URL — no new adapter

Common questions.

What is a personal AI assistant?
A scheduled loop over your personal tools — inbox, calendar, notes — that produces a brief or drafts.
Which tools should it have?
Gmail read, Calendar read + freebusy, Drive + Sheets read, Notion read + write.
Is this just ChatGPT with plugins?
Similar in concept. Differences: you pick the model, tool access is per-method, and the loop runs in your account on your schedule.
How do I stop it sending email on my behalf?
Scope Gmail to drafts.create only. Never wire messages.send.
How is this different from Apple Intelligence or Gemini in Workspace?
Built-in assistants are locked to their ecosystems. A custom MCP agent runs on the model you pick and sees across Google + Notion + anything else you wire.
Need this built for you?

Hosted personal assistant, OAuth + cron handled.

Custom adapter + hosted MCP at mcp.yourbrand.com + verified badge. Starter $499 one-time · Managed Retainer $999/mo · Enterprise $4,999+/mo.

See /managed → Submit (free)