A coding agent that closes the loop.
Point Claude Code or your own agent at Hoook's MCP server. It reads the issue, checks the error, ships the fix and updates the ticket.
claude 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.
The same integration, shipped.
Without Hoook
- The agent works in the repo and nowhere else
- Developers update the tracker by hand after every fix
- The integration work takes longer than the agent
- A token expires and the whole flow stops without a word
With Hoook
- The agent reaches the tracker, the monitor and the docs
- Tickets move as the work moves
- The integrations are done before you start
- Hoook refreshes tokens and retries failures for you
How to build tools for a coding agent with Hoook
- 01
Connect the apps
Your users link the accounts tools for a coding agent 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.
of prebuilt tools and triggers, across the apps your users already work in.
Hoook app catalogueis when Anthropic opened the Model Context Protocol, the standard way for AI assistants to reach tools.
Anthropic, 2024requests an hour is GitHub's REST API limit for an authenticated user. Every API sets its own, and an agent has to respect each one.
GitHub REST API documentationBuilt for agents that act.
One server URL
Works with any client that speaks MCP.
The developer's own access
Nothing beyond what the developer can already see.
Only the tools you allow
Scope the server to the apps and actions the task needs.
Logged end to end
Every tool call is recorded with its result.