Any endpoint, with the user's auth attached.
When the tool you need is not in the catalogue yet, call the app's API directly through Hoook. We add the user's credentials, so your code never holds them.
// No prebuilt tool for this endpoint yet? Call it anyway.
await hoook.proxy.get({ userId, app: "hubspot",
path: "/crm/v3/objects/quotes" })
user's token attached · rate limit respected · logged
{ "results": [{ "id": "q_881", "status": "sent" }] }
The same integration, shipped.
Without Hoook
- The one endpoint you need is missing, so you build the whole integration
- Your code has to hold a token just to make one request
- Every provider needs its own auth header and refresh
- Unusual calls bypass your logging entirely
With Hoook
- Call any endpoint of a connected app today
- Hoook injects the credentials on the way out
- Refresh and auth handled the same way as every tool
- Proxy requests are logged like any other call
How a proxied request works
- 01
Pick the account
Name the connected account and the endpoint you want to reach.
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 - 02
Hoook adds the auth
A fresh token is attached, and your request goes to the provider.
proxy.ts// No prebuilt tool for this endpoint yet? Call it anyway.
await hoook.proxy.get({ userId, app: "hubspot",
path: "/crm/v3/objects/quotes" })
user's token attached · rate limit respected · logged
{ "results": [{ "id": "q_881", "status": "sent" }] }
- 03
The response comes back
Returned to you as the provider sent it.
proxy.ts// No prebuilt tool for this endpoint yet? Call it anyway.
await hoook.proxy.get({ userId, app: "hubspot",
path: "/crm/v3/objects/quotes" })
user's token attached · rate limit respected · logged
{ "results": [{ "id": "q_881", "status": "sent" }] }
- 04
Wrap it as a tool
Turn a useful call into a custom tool your agent can use.
Your agent, on ClaudeHoook connected Find the HubSpot deals that went quiet this month and send each owner a nudge from my Gmail.
Hoookhubspot.search_dealsHoookgmail.send_emailFive deals have had no activity for 21 days. I sent a short nudge to each owner from your Gmail.
5 emails sentMessage your agent
refresh: 10 minutes before expiry revoked: pause calls, ask the user to reconnect secrets: encrypted, never returned to your code
1,134 tokens refreshed on their own today. Three users revoked access, and each was asked to reconnect.
Reconnect emails sentWhat Hoook takes off your plate.
Fill catalogue gaps
Ship the feature now instead of waiting for a new prebuilt tool.
Beta and niche endpoints
Reach the parts of an API that few tools cover.
Your own tools
Build custom tools on top of any endpoint.
The numbers behind agent integrations
Public documentation from the providers, and our own figures, each labelled with its source.
requests 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 documentationis 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 estimateBuilt for agents that act.
No credentials in your code
Tokens are added by Hoook and never returned.
Same account model
The proxy uses the accounts your users already connected.
Logged and scoped
Proxy calls are recorded and limited to the apps you allow.
Works with any method
GET, POST, PUT, PATCH and DELETE, with your own body and headers.