@plaud-ai/mcp 0.1.32 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,144 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __export = (target, all) => {
11
- for (var name in all)
12
- __defProp(target, name, { get: all[name], enumerable: true });
13
- };
14
- var __copyProps = (to, from, except, desc) => {
15
- if (from && typeof from === "object" || typeof from === "function") {
16
- for (let key of __getOwnPropNames(from))
17
- if (!__hasOwnProp.call(to, key) && key !== except)
18
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
- mod
29
- ));
30
-
31
- // src/skills.ts
32
- var SKILLS = [
33
- {
34
- name: "search-recordings",
35
- description: "Search and filter Plaud recordings by date, tag, or keyword",
36
- content: `## Plaud Skill: search-recordings
37
-
38
- There is no server-side search or filter API. To find a recording, fetch all pages from \`list_files\` and match client-side.
39
-
40
- **Step 1 \u2014 Collect search criteria**
41
-
42
- If the user's request is vague, ask for more specific information before fetching:
43
- - Approximate date or time range?
44
- - Rough title or topic to look for in the name?
45
-
46
- The more specific the criteria, the earlier a match can be found during pagination.
47
-
48
- **Step 2 \u2014 Fetch pages and match**
49
-
50
- Call \`list_files\` starting from page 1. For each page, check if any recording matches the user's criteria by name, date, or duration. Continue fetching subsequent pages until a match is found or all pages are exhausted.
51
-
52
- **Step 3 \u2014 Present results**
53
-
54
- Show a clear list of matches: recording name, date, duration, and file ID. If no match is found, tell the user and suggest refining the criteria.
55
-
56
- Do not fetch transcripts or notes unless the user explicitly asks to view the content of a specific recording.`
57
- },
58
- {
59
- name: "extract-structured-data",
60
- description: "Extract structured fields from a Plaud recording using a custom schema",
61
- content: `## Plaud Skill: extract-structured-data
62
-
63
- When the user wants to extract specific fields or structured information from a recording, follow this workflow:
64
-
65
- 1. If no recording is specified, call \`list_files\` and ask the user to identify the target
66
- 2. Call \`get_note\` to retrieve the AI-generated summary, action items, and key topics
67
- 3. Call \`get_transcript\` if the extraction requires full verbatim content
68
- 4. Apply the user's schema or field list to the content and return the extracted data
69
- 5. Present each field clearly; flag any fields where the content is ambiguous or absent
70
-
71
- Example schemas the user might request:
72
- - \`{ "action_items": [], "decisions": [], "attendees": [] }\`
73
- - \`{ "pain_points": [], "follow_ups": [], "deal_stage": "" }\`
74
- - \`{ "diagnoses": [], "medications": [], "next_appointment": "" }\``
75
- },
76
- {
77
- name: "generate-artifact",
78
- description: "Generate a document (email, summary, SOAP note, brief) grounded in a Plaud recording",
79
- content: `## Plaud Skill: generate-artifact
80
-
81
- When the user wants to generate a document grounded in recording content, follow this workflow:
82
-
83
- 1. Call \`get_note\` to retrieve AI-generated notes for the target recording
84
- 2. Call \`get_transcript\` if the artifact requires verbatim quotes or precise detail
85
- 3. Generate the artifact using the recording content as the source of truth
86
- 4. Format the output to match the requested artifact type
87
-
88
- Common artifact types:
89
- - **Follow-up email** \u2014 summarize key points, list action items, professional tone
90
- - **Meeting summary** \u2014 attendees, decisions made, next steps
91
- - **SOAP note** \u2014 Subjective / Objective / Assessment / Plan format for clinical use
92
- - **Project brief** \u2014 background, goals, scope, timeline from a planning session
93
- - **Weekly digest** \u2014 highlights across multiple recordings from the past week`
94
- },
95
- {
96
- name: "synthesize-corpus",
97
- description: "Analyze trends and patterns across multiple Plaud recordings",
98
- content: `## Plaud Skill: synthesize-corpus
99
-
100
- When the user wants to analyze patterns, trends, or themes across multiple recordings, follow this workflow:
101
-
102
- 1. Call \`list_files\` with date or tag filters to identify the target set of recordings (max 50 per call)
103
- 2. For each recording, call \`get_note\` to retrieve the AI-generated summary
104
- 3. Call \`get_transcript\` only if deeper analysis requires full verbatim content from specific recordings
105
- 4. Synthesize insights across all recordings:
106
- - Recurring themes or topics
107
- - Trends over time
108
- - Consistent decisions or blockers
109
- - Patterns in action items or follow-ups
110
- 5. Present findings with references to specific recordings as supporting evidence
111
-
112
- Use date filters to scope the corpus (e.g., last week, last quarter, a specific project period).`
113
- },
114
- {
115
- name: "push-to-destination",
116
- supported: false,
117
- description: "Send recording content or a generated artifact to Notion, HubSpot, Slack, Linear, or a webhook",
118
- content: `## Plaud Skill: push-to-destination
119
-
120
- When the user wants to send recording content or a generated artifact to an external system, follow this workflow:
121
-
122
- 1. Confirm what content to send: extracted data, a generated artifact, or raw notes
123
- 2. Confirm the destination and any required identifiers:
124
- - **Notion** \u2014 page ID or database ID
125
- - **HubSpot / Salesforce** \u2014 CRM object ID (deal, contact, or company)
126
- - **Linear** \u2014 project or team ID
127
- - **Slack** \u2014 channel name or ID
128
- - **Webhook** \u2014 URL provided by the user
129
- 3. Deliver the content to the destination using the appropriate integration tool or API call available in your environment
130
- 4. Confirm successful delivery to the user
131
-
132
- Note: Destination credentials (API tokens, webhook URLs) must be provided by the user. Do not store them in conversation history \u2014 use environment variables or the user's config.`
133
- }
134
- ];
135
- var ACTIVE_SKILLS = SKILLS.filter((s) => s.supported !== false);
136
- var SKILLS_COMBINED = ACTIVE_SKILLS.map((s) => s.content).join("\n\n---\n\n");
137
-
138
- export {
139
- __commonJS,
140
- __export,
141
- __toESM,
142
- ACTIVE_SKILLS,
143
- SKILLS_COMBINED
144
- };
@@ -1,40 +0,0 @@
1
- ---
2
- name: plaud
3
- description: Access and manage Plaud recordings, transcriptions, and meeting notes. Use when the user mentions Plaud, wants to find recordings, review transcripts, check meeting summaries, or manage their audio files.
4
- ---
5
-
6
- You have access to the user's Plaud recordings via MCP tools. Use them to help the user find, review, and analyze their recordings.
7
-
8
- ## Available tools
9
-
10
- | Tool | When to use |
11
- |---|---|
12
- | `login` | User is not authenticated, or auth has expired |
13
- | `logout` | User wants to sign out or disconnect |
14
- | `get_current_user` | User asks who is logged in, or to verify account |
15
- | `list_files` | User wants to browse, search, or find recordings |
16
- | `get_file` | User wants full details of a specific recording (including download link) |
17
- | `get_note` | User wants the AI-generated summary, action items, or key topics of a recording |
18
- | `get_transcript` | User wants the full timestamped transcript with speaker labels |
19
-
20
- ## Typical workflows
21
-
22
- **First-time use:** Call `login` first. If any tool returns an auth error, call `login` before retrying.
23
-
24
- **Find a recording:** Call `list_files` to browse. Use pagination (`page`, `page_size`) if the user wants more results.
25
-
26
- **Review notes or summary:** Call `get_note` with the file ID.
27
-
28
- **Read transcript:** Call `get_transcript` with the file ID.
29
-
30
- **Get full details (including download link):** Call `get_file` with the file ID. The response includes:
31
- - `source_list`: timestamped transcript with speaker labels
32
- - `note_list`: AI-generated summaries in Markdown
33
- - `presigned_url`: temporary download link (valid 24 hours)
34
-
35
- ## Guidelines
36
-
37
- - Always check if the user is logged in before calling data tools. If you get an auth error, call `login` first.
38
- - When listing files, present results clearly with name, date, and duration.
39
- - When showing transcripts, format them readably with timestamps and speaker labels.
40
- - When showing notes, render the Markdown content directly.