Integrations
Connect AI tools (MCP)
Server hawko-meetings v1.0.0: read-only access to your meetings from Cursor, Claude Desktop, or any SSE + Bearer client.
Overview
MCP lets compatible clients list and call hawkO tools: meetings, folders, insights, recipes, and people. All responses are scoped to your signed-in account. There are no write or delete tools.
Prerequisites
- hawkO desktop app installed and signed in with Google.
- MCP URL:
https://backend.hawko.ai/mcp/sse.
Generate an API token
- Open the desktop app → Settings → AI tools.
- Click Generate token and label it (e.g. “Cursor MacBook”).
- Copy the token immediately. It is shown once. Tokens expire after 90 days and can be revoked anytime.
Client configuration
Replace YOUR_TOKEN_HERE with your token. The server key meetings matches the snippet in Settings.
Cursor
Add under mcpServers in ~/.cursor/mcp.json.
Cursor — mcp.json
{
"mcpServers": {
"meetings": {
"type": "sse",
"url": "https://backend.hawko.ai/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}Claude Desktop
- Open Terminal.
- Run:
open ~/Library/Application\ Support/Claude/ - Look for
claude_desktop_config.json— if it doesn't exist, create it. - Add this under
mcpServers(usesmcp-remoteto bridge SSE):
Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"meetings": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://backend.hawko.ai/mcp/sse",
"--header",
"Authorization: Bearer YOUR_TOKEN_HERE"
]
}
}
}How it works
- Client opens
GET /mcp/ssewithAuthorization: Bearer <token>. - Client sends JSON-RPC on
POST /mcp/messages?sessionId=…with the same bearer. - Tool calls run scoped to your user id; results stream over SSE.
Security model
- Bcrypt-hashed storage with prefix lookup.
- Rate limit: default 120 requests/minute per token.
- Max 3 concurrent SSE connections per token.
Tool reference (19 tools)
Meetings (8)
| Tool | When to use |
|---|---|
| getMeetings | Baseline meetings list (newest first). Use when no person/date/text filter is known yet. Optional folderUid. Response: { items, total, skip, limit, hasMore }. |
| getRecentMeetings | Fast recency view for "latest activity" questions. Prefer over getMeetings when only recent data is needed. |
| getMeetingsByDateRange | Date-scoped retrieval (ISO from/to). Prefer before text search when user gives a clear time window. |
| getMeetingDetail | Canonical metadata for one meeting (participants, summary, meetingRef). Use to verify candidate meetings after list/search calls. |
| getMeetingTranscript | Full transcript segments for deep Q&A or evidence extraction. Heavier than getMeetingDetail; avoid for simple listing. |
| getMeetingNotes | User-authored notes for one meeting. Use when answer depends on notes rather than transcript or summary. |
| searchMeetings | Broad fallback text search on title/summary. Use when person/date/folder scope is unknown; refine results with getMeetingDetail. |
| getMeetingMarkdown | Single-call export (summary + transcript + notes) for rendering/sharing. Prefer targeted tools for analytics to reduce payload. |
Folders (5)
| Tool | When to use |
|---|---|
| getFolders | Folder discovery entrypoint. Use first when user asks by project/topic ("Hawko", "sales", etc.) before listing meetings. |
| getFolderDetail | Resolve one folder by uid (metadata + linked sessions). Use after getFolders to confirm the exact folder target. |
| getMeetingsInFolder | Primary folder-scoped meeting list. Prefer over searchMeetings when folder context is known. |
| suggestMeetingsForFolder | Recommendation helper for organizing meetings into an existing folder (not a strict retrieval/filter endpoint). |
| suggestNewFolders | Suggestion endpoint for creating new folder clusters from meeting patterns; use for curation, not direct querying. |
Insights (1)
| Tool | When to use |
|---|---|
| getCrossMeetingInsights | Portfolio-level trends/KPIs across meetings. Use for analytics summaries, not person-level filtering. |
Recipes (2)
| Tool | When to use |
|---|---|
| listMeetingRecipes | List available automation recipes/templates. Use before selecting/executing a specific recipe. |
| getMeetingRecipe | Recipe detail by uid. Use after listMeetingRecipes when user references a specific recipe. |
People (3)
| Tool | When to use |
|---|---|
| getConnectedPeople | Person-centric entrypoint. Use first for "meetings with <person>" to resolve known contacts before meeting retrieval. |
| getOrganizationPeople | Directory-wide people lookup. Use when target person is not found in connected people or needs org disambiguation. |
| getPersonInteractions | Second step after person resolution: fetch meetings/interactions for that person, then optionally narrow by folder/date/text. |
List tools return paginated results with skip and limit. Defaults are typically limit 50, maximum 100, plus hasMore.
Example prompts
- “What did we decide with Acme last week?” Use
getMeetingsByDateRange, thensearchMeetings. - “Summarise my project folder.” Use
getFolders, thengetMeetingsInFolder. - “Export one meeting as markdown.” Use
getMeetingMarkdown.
Troubleshooting
| Symptom | What to try |
|---|---|
| 401 Unauthorized | Regenerate token; check Bearer header format. |
| Connection limit | Close extra IDE windows (max 3 SSE per token). |
| 429 Too many requests | Wait a minute; reduce parallel tool calls. |
| Expired token | Create a new token in Settings → AI tools. |
| Empty results | Confirm meetings exist for the token's account. |