From krisp-meeting
Fetch, summarize, and download transcripts from Krisp meetings. Use this skill whenever the user asks about their last meeting, wants a meeting summary, needs action items from a call, or wants to download a transcript — even if they don't say "Krisp" explicitly. Trigger on phrases like: "summarize my last meeting", "what did we talk about on my last call", "get my meeting transcript", "what are my action items from today", "download the recording notes", "what happened in my call with [name]", "what was decided in my last meeting".
How this skill is triggered — by the user, by Claude, or both
Slash command
/krisp-meeting:krisp-meetingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch, summarize, and optionally download transcripts from Krisp meetings via the Krisp MCP API.
Fetch, summarize, and optionally download transcripts from Krisp meetings via the Krisp MCP API.
Krisp uses OAuth tokens managed by mcp-remote. Tokens are stored at:
~/.mcp-auth/mcp-remote-{version}/{hash}_tokens.json
Run this script first — it handles finding the token, checking expiry, and refreshing if needed:
python3 ~/.claude/skills/krisp-meeting/scripts/get_token.py
It prints the access token to stdout, or exits with an error message if auth is needed.
If auth fails: Run npx -y mcp-remote https://mcp.krisp.ai/mcp in a terminal — it will open a browser to complete OAuth, then store the token. After that, re-run the skill.
Alternatively, read the token directly:
TOKEN=$(python3 -c "import json; print(json.load(open(__import__('os').path.expanduser('~/.mcp-auth/mcp-remote-0.1.37/e8fe1423b57023b6315cd9029dbc1859_tokens.json')))['access_token'])")
Or find any token file dynamically:
TOKEN=$(python3 -c "
import glob, json, os
files = glob.glob(os.path.expanduser('~/.mcp-auth/mcp-remote-*/*_tokens.json'))
files.sort(key=os.path.getmtime, reverse=True)
print(json.load(open(files[0]))['access_token'])
")
All API calls follow this pattern:
curl -s -X POST "https://mcp.krisp.ai/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json, text/event-stream" \
-d '{...}' \
| grep "^data:" | sed 's/^data: //'
Response is SSE — extract the data: line and parse as JSON. The result lives at .result.content[].text (text blocks) or .result.structuredContent (structured data).
Important: Save curl output to a file before parsing with Python to avoid shell encoding issues:
curl ... > /tmp/krisp_result.txt
grep "^data:" /tmp/krisp_result.txt | sed 's/^data: //' > /tmp/krisp_data.json
python3 -c "import json; data = json.load(open('/tmp/krisp_data.json', 'rb').read().decode('utf-8', errors='replace'))"
Find meetings by recency, text, or date range.
{
"jsonrpc": "2.0", "id": 1,
"method": "tools/call",
"params": {
"name": "search_meetings",
"arguments": {
"limit": 1,
"fields": ["name", "date", "attendees", "speakers", "meeting_notes", "key_points", "action_items"]
}
}
}
Key arguments:
limit / offset — pagination (default limit 10)search — text search by topic, name, or attendeeafter / before — ISO 8601 date filters (e.g. "2026-04-06")fields — which fields to returnResponse includes meeting_id (32-char hex UUID) needed for get_multiple_documents.
Fetch the full meeting document including complete transcript, notes, and action items.
{
"jsonrpc": "2.0", "id": 2,
"method": "tools/call",
"params": {
"name": "get_multiple_documents",
"arguments": { "ids": ["<32-char-meeting-id>"] }
}
}
The response text contains the full markdown document: summary, key points, action items, and the verbatim transcript with speaker labels and timestamps.
Read the token using one of the patterns above. If it fails, tell the user to run npx -y mcp-remote https://mcp.krisp.ai/mcp to re-authenticate.
Call search_meetings based on what the user asked:
limit: 1 (returns most recent)search: "keyword"after: "YYYY-MM-DD" + before: "YYYY-MM-DD" (same day for a specific date)search: "person name"If meeting_notes.key_points is empty (common for recent meetings still processing), call get_multiple_documents with the meeting_id to get the full document including the pre-computed key points and complete transcript.
Standard summary output:
## [Meeting Title]
**Date:** [formatted date + time]
**With:** [speakers other than the user, comma-separated]
### Key Points
- [bullet per key point]
### Action Items
- [ ] [assignee]: [action item]
If action items only: Just show the action items section with the meeting title and date as context.
If --save or "save to desktop": After displaying the summary, write the full transcript to a .txt file:
get_multiple_documents to get the full transcript text**text** → text) and header markers[FirstName]_[LastName]_[Topic]_[YYYY-MM-DD].txt saved to ~/Desktop/{{Speaker_2}} placeholders: Krisp uses these when speaker names aren't resolved — replace with the known name if mentioned elsewhere, or use "the other participant"npx -y mcp-remote https://mcp.krisp.ai/mcpCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub jackson2w/claude-skills --plugin krisp-meeting