-
Notifications
You must be signed in to change notification settings - Fork 5.7k
feat(hedy): add 20 AI-optimized MCP actions #20901
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
sergio-eliot-rodriguez
wants to merge
11
commits into
master
Choose a base branch
from
mcp/hedy
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
80e253e
feat(hedy): add 20 AI-optimized MCP actions
2a0f95a
fix(hedy): fix lint errors — quote-props and eol-last
1eac6ba
Deduplicate title/content/isDefault props into app-level propDefinitions
5ce89fe
Fix truthy check dropping empty string content in create-session-context
0576396
Add inline format examples to ID and pagination prop descriptions
9f1cf7b
Bump hedy package version to 0.1.0 (minor: 20 new actions added)
6331a99
fix package.json
9b6d444
fix doc links
f039814
pnpm-lock.yaml
2f8c1d4
remove unecessary undefined checks
85202e3
remove unsupported endpoint and unsupported props
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
53 changes: 53 additions & 0 deletions
53
components/hedy/actions/create-session-context/create-session-context.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-create-session-context", | ||
| name: "Create Session Context", | ||
| description: "Creates a new reusable Hedy session context — a named set of custom AI instructions that can be applied to meeting recordings to guide analysis." | ||
| + " Free accounts are limited to 1 context; Pro accounts can create multiple." | ||
| + " Set `isDefault` to `true` to make this context automatically applied to new sessions." | ||
| + " Use **Update Session Context** to modify an existing context, or **Delete Session Context** to remove one." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/post_contexts)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: false, | ||
| }, | ||
| props: { | ||
| app, | ||
| title: { | ||
| propDefinition: [ | ||
| app, | ||
| "title", | ||
| ], | ||
| }, | ||
| content: { | ||
| propDefinition: [ | ||
| app, | ||
| "content", | ||
| ], | ||
| }, | ||
| isDefault: { | ||
| propDefinition: [ | ||
| app, | ||
| "isDefault", | ||
| ], | ||
| default: false, | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.createContext({ | ||
| $, | ||
| data: { | ||
| title: this.title, | ||
| content: this.content, | ||
| isDefault: this.isDefault, | ||
| }, | ||
| }); | ||
| const context = response?.data || response; | ||
| $.export("$summary", `Created session context: ${context?.title || this.title}`); | ||
| return response; | ||
| }, | ||
| }; | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-create-topic", | ||
| name: "Create Topic", | ||
| description: "Creates a new Hedy meeting topic for organizing sessions." | ||
| + " Topics can include a custom AI analysis context (`topicContext`) — up to 20,000 characters of instructions that guide Hedy's AI when analyzing meetings in this topic." | ||
| + " Use **Update Topic** to modify an existing topic, or **Delete Topic** to remove one." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/post_topics)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: false, | ||
| }, | ||
| props: { | ||
| app, | ||
| name: { | ||
| type: "string", | ||
| label: "Name", | ||
| description: "The topic name (maximum 100 characters).", | ||
| }, | ||
| description: { | ||
| type: "string", | ||
| label: "Description", | ||
| description: "An optional description of the topic (maximum 500 characters).", | ||
| optional: true, | ||
| }, | ||
| color: { | ||
| type: "string", | ||
| label: "Color", | ||
| description: "Optional hex color code for the topic (e.g. `#4CAF50`).", | ||
| optional: true, | ||
| }, | ||
| iconName: { | ||
| type: "string", | ||
| label: "Icon Name", | ||
| description: "Optional icon identifier for the topic.", | ||
| optional: true, | ||
| }, | ||
| topicContext: { | ||
| type: "string", | ||
| label: "Topic Context", | ||
| description: "Optional custom AI instructions for analyzing sessions in this topic (maximum 20,000 characters). Use this to focus Hedy's analysis on specific themes, extract particular insights, or follow custom frameworks.", | ||
| optional: true, | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.createTopic({ | ||
| $, | ||
| data: { | ||
| name: this.name, | ||
| description: this.description, | ||
| color: this.color, | ||
| iconName: this.iconName, | ||
| topicContext: this.topicContext, | ||
| }, | ||
| }); | ||
| const topic = response?.data || response; | ||
| $.export("$summary", `Created topic: ${topic?.name || this.name}`); | ||
| return response; | ||
| }, | ||
| }; |
34 changes: 34 additions & 0 deletions
34
components/hedy/actions/delete-session-context/delete-session-context.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-delete-session-context", | ||
| name: "Delete Session Context", | ||
| description: "Deletes a Hedy session context. This action is irreversible." | ||
| + " If you delete the current default context, the most recently created remaining context is automatically promoted to default." | ||
| + " Use **Get Many Session Contexts** to find the context ID before deleting." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/delete_contexts__contextId_)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: true, | ||
| openWorldHint: true, | ||
| readOnlyHint: false, | ||
| }, | ||
| props: { | ||
| app, | ||
| contextId: { | ||
| propDefinition: [ | ||
| app, | ||
| "contextId", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.deleteContext({ | ||
| $, | ||
| contextId: this.contextId, | ||
| }); | ||
| $.export("$summary", `Deleted session context ${this.contextId}`); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-delete-topic", | ||
| name: "Delete Topic", | ||
| description: "Deletes a Hedy topic. Sessions that were linked to the topic are NOT deleted — they are unlinked and remain in your account." | ||
| + " This action is irreversible. Use **Get Many Topics** to find the topic ID before deleting." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/delete_topics__topicId_)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: true, | ||
| openWorldHint: true, | ||
| readOnlyHint: false, | ||
| }, | ||
| props: { | ||
| app, | ||
| topicId: { | ||
| propDefinition: [ | ||
| app, | ||
| "topicId", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.deleteTopic({ | ||
| $, | ||
| topicId: this.topicId, | ||
| }); | ||
| $.export("$summary", `Deleted topic ${this.topicId}`); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-get-highlight", | ||
| name: "Get Highlight", | ||
| description: "Retrieves full details for a single AI-generated highlight by ID, including the raw quote, cleaned quote, main idea, and AI insight." | ||
| + " Use **Get Many Highlights** or **Get Highlights By Session** first to find a highlight ID." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_highlights__highlightId_)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| highlightId: { | ||
| propDefinition: [ | ||
| app, | ||
| "highlightId", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.getHighlight({ | ||
| $, | ||
| highlightId: this.highlightId, | ||
| }); | ||
| const highlight = response?.data || response; | ||
| $.export("$summary", `Retrieved highlight: ${highlight?.title || this.highlightId}`); | ||
| return response; | ||
| }, | ||
| }; |
38 changes: 38 additions & 0 deletions
38
components/hedy/actions/get-highlights-by-session/get-highlights-by-session.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-get-highlights-by-session", | ||
| name: "Get Highlights By Session", | ||
| description: "Retrieves all AI-generated highlights for a specific Hedy session." | ||
| + " Use **Get Many Sessions** first to find the session ID." | ||
| + " Each result includes a highlight ID, title, and timestamp within the session." | ||
| + " Use **Get Highlight** with the highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_sessions__sessionId__highlights)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| sessionId: { | ||
| propDefinition: [ | ||
| app, | ||
| "sessionId", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.getHighlightsBySession({ | ||
| $, | ||
| sessionId: this.sessionId, | ||
| }); | ||
| const highlights = response?.data || []; | ||
| $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 | ||
| ? "" | ||
| : "s"} for session ${this.sessionId}`); | ||
| return response; | ||
| }, | ||
| }; |
47 changes: 47 additions & 0 deletions
47
components/hedy/actions/get-many-highlights/get-many-highlights.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-get-many-highlights", | ||
| name: "Get Many Highlights", | ||
| description: "Retrieves a paginated list of AI-generated highlights across all Hedy sessions." | ||
| + " Each highlight includes a title, timestamp, and the session it came from." | ||
| + " Use **Get Highlight** with a specific highlight ID to fetch the full detail including raw quote, cleaned quote, main idea, and AI insight." | ||
| + " To list highlights for a specific session only, use **Get Highlights By Session**." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Highlights/get_highlights)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| limit: { | ||
| propDefinition: [ | ||
| app, | ||
| "limit", | ||
| ], | ||
| }, | ||
| after: { | ||
| propDefinition: [ | ||
| app, | ||
| "after", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.listHighlights({ | ||
| $, | ||
| params: { | ||
| limit: this.limit, | ||
| after: this.after, | ||
| }, | ||
| }); | ||
| const highlights = response?.data || []; | ||
| $.export("$summary", `Retrieved ${highlights.length} highlight${highlights.length === 1 | ||
| ? "" | ||
| : "s"}`); | ||
| return response; | ||
| }, | ||
| }; |
30 changes: 30 additions & 0 deletions
30
components/hedy/actions/get-many-session-contexts/get-many-session-contexts.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-get-many-session-contexts", | ||
| name: "Get Many Session Contexts", | ||
| description: "Retrieves all reusable Hedy session contexts, including title, content, and which one is set as the default." | ||
| + " Session contexts are custom AI instruction sets that guide Hedy's analysis of meeting recordings." | ||
| + " Use this tool to browse available contexts or to find a context ID to pass to **Get Session Context**, **Update Session Context**, or **Delete Session Context**." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Session%20Contexts/get_contexts)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.listContexts({ | ||
| $, | ||
| }); | ||
| const contexts = response?.data || []; | ||
| $.export("$summary", `Retrieved ${contexts.length} session context${contexts.length === 1 | ||
| ? "" | ||
| : "s"}`); | ||
|
sergio-eliot-rodriguez marked this conversation as resolved.
|
||
| return response; | ||
| }, | ||
| }; | ||
48 changes: 48 additions & 0 deletions
48
components/hedy/actions/get-many-sessions/get-many-sessions.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| import app from "../../hedy.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "hedy-get-many-sessions", | ||
| name: "Get Many Sessions", | ||
| description: "Retrieves a paginated list of Hedy meeting sessions ordered from most recent." | ||
| + " Each session includes its title, start/end times, duration, and session type." | ||
| + " Use this tool to browse recent meetings or to find a session ID to pass to **Get Session** for full transcript and summary details." | ||
| + " To list sessions within a specific topic, use **Get Topic Sessions** instead." | ||
| + " Paginate using the `after` cursor from the response's `pagination` field." | ||
| + " [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Sessions/get_sessions)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| limit: { | ||
| propDefinition: [ | ||
| app, | ||
| "limit", | ||
| ], | ||
| }, | ||
| after: { | ||
| propDefinition: [ | ||
| app, | ||
| "after", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.listSessions({ | ||
| $, | ||
| params: { | ||
| limit: this.limit, | ||
| after: this.after, | ||
| }, | ||
| }); | ||
| const sessions = response?.data || []; | ||
| $.export("$summary", `Retrieved ${sessions.length} session${sessions.length === 1 | ||
| ? "" | ||
| : "s"}`); | ||
| return response; | ||
| }, | ||
| }; |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.