Walk into every meeting already briefed.
Before each meeting, the assistant reads the invite, pulls the account from the CRM, the last emails and the open tickets, and sends a short brief.
Find the HubSpot deals that went quiet this month and send each owner a nudge from my Gmail.
hubspot.search_dealsgmail.send_emailFive deals have had no activity for 21 days. I sent a short nudge to each owner from your Gmail.
5 emails sentThe same integration, shipped.
Without Hoook
- Ten minutes of tab switching before every call
- Context lives in five tools and nobody has all of it
- The integration work takes longer than the agent
- A token expires and the whole flow stops without a word
With Hoook
- A brief arrives before the meeting starts
- One summary from every tool the user has connected
- The integrations are done before you start
- Hoook refreshes tokens and retries failures for you
How to build a meeting prep assistant with Hoook
- 01
Connect the apps
Your users link the accounts a meeting prep assistant needs through Connect Link.
connect.tsconst { token } = await hoook.connect.createToken({ userId: "u_42" })
→ open Connect Link inside your app
u_42 signs in to HubSpot · scopes: crm.objects.deals
✓ account apn_7Kx2 connected
await hoook.accounts.list({ userId: "u_42" })
[{ "app": "hubspot", "id": "apn_7Kx2", "healthy": true }]
- 02
Give the agent its tools
Load the prebuilt tools through the SDK or the hosted MCP server.
Claude Codeclaude mcp add --transport http hoook https://mcp.hoook.io
✓ Connected to Hoook
tools: github, linear, slack, notion, stripe and more
> Open a Linear issue for each failing test and post the list in #eng
Hoook linear.create_issue ×4, slack.send_message(#eng)
✓ 4 issues opened. Summary posted.
- 03
Start on the right event
A trigger runs it when something happens, or a person asks.
Event sourceawait hoook.triggers.deploy({ userId, id: "stripe-payment-failed", webhookUrl })
✓ listening to Stripe for u_42
invoice.payment_failed · verified · deduplicated
POST https://your-app.com/agent/events
agent: opened Linear issue ENG-812 and told #billing
- 04
Watch it run
Every call is logged, retried on failure and kept in the history.
Managed auth Connected accountsWhich connected accounts need attention this week?Connected accounts8,412Refreshed today1,134Need reconnecting3Hoook · connected accountsrefresh: 10 minutes before expiry revoked: pause calls, ask the user to reconnect secrets: encrypted, never returned to your code
Tokens refreshed today, by app612Google318Slack204HubSpot3Revoked1,134 tokens refreshed on their own today. Three users revoked access, and each was asked to reconnect.
Reconnect emails sent
const { token } = await hoook.connect.createToken({ userId: "u_42" })
→ open Connect Link inside your app
u_42 signs in to HubSpot · scopes: crm.objects.deals
✓ account apn_7Kx2 connected
await hoook.accounts.list({ userId: "u_42" })
[{ "app": "hubspot", "id": "apn_7Kx2", "healthy": true }]
What Hoook takes off your plate.
Working in days
Prebuilt tools and triggers, so you write the logic, not the plumbing.
Each user's own access
Every action runs in the account of the person it is for.
Guardrails included
Approval for writes, scoped tools and a log of every call.
The numbers behind agent integrations
Public documentation from the providers, and our own figures, each labelled with its source.
is how long a Google OAuth access token lasts, so every account your agent acts in needs refreshing all day.
Google Identity documentationto build, test and ship one production OAuth integration in-house, before it needs maintaining.
Hoook estimateconnected end users included on the Connect plan, then $2 for each one after that.
Hoook pricingBuilt for agents that act.
Read-only by default
The assistant only needs to look, so give it only read tools.
Each user's own data
It briefs from the user's own inbox and CRM access.
Delivered where they read
Send the brief by email, Slack or Teams.
Scheduled for you
A workflow runs it ahead of each meeting.