Install
openclaw skills install @ascetx/parrotnotesFind, read, summarize and save insights from your ParrotNotes in-person meeting notes through the ParrotNotes MCP connector. Search transcripts, pull action items, translate or repurpose a meeting, and save insights back to a note. Requires a ParrotNotes account.
openclaw skills install @ascetx/parrotnotesParrotNotes stores the user's in-person meeting notes with full transcripts, their written notes, labels that organize them, and AI insights such as summaries or action items. Every tool acts only on the signed-in user's own data.
This skill needs the ParrotNotes MCP connector. Endpoint https://mcp.parrotnotes.app/mcp, transport Streamable HTTP, OAuth 2.0 with Dynamic Client Registration. No API key. Per-client setup steps are at https://parrotnotes.app/docs/mcp
If the connector is not configured, say so and point the user at that page rather than attempting the tool calls.
| Tool | Use it to |
|---|---|
get_recent_notes | List the newest notes. Takes limit (1 to 50), offset, and an optional note_type of audio or text. |
search_notes | Find notes by keyword in titles, transcripts, and text. Takes query and limit. |
get_note | Read one note in full, including the whole transcript. |
get_note_insights | Read insights already saved for a note, optionally filtered by insight_type. |
get_user_labels | List the user's labels. |
get_note_labels | List the labels on one note. |
get_notes_by_label | List the notes that carry one label. |
save_note_insight | Save an insight you wrote back to a note. |
get_subscription_status | Check whether the user's plan is active and when it expires. |
Every note has two IDs. Using the wrong one is the most common cause of a failed call.
id is a string. Pass it only to get_note as note_id.localRecordingId is an integer. Pass it to get_note_insights, get_note_labels, and save_note_insight as local_recording_id. get_note_insights expects it as a string, so send "42" rather than 42.localLabelId comes from get_user_labels. Pass it to get_notes_by_label as local_label_id.Never guess an ID. Get it from a list or search result first.
search_notes with the most distinctive words.get_recent_notes and match on dateTime. Use note_type: "audio" when they say meeting, recording, or conversation.get_user_labels, match the name, then call get_notes_by_label.hasMore is true and the note was not found, page with offset before telling the user it does not exist.get_note to get the full transcript or text. Search excerpts are too short to summarize from.get_note_insights first. If a matching insight already exists, use it rather than writing a new one, and say it was already saved.transcript is null, check transcriptionStatus and tell the user the transcript is not ready yet. Do not invent content.Save only when the user asks to save, keep, or add something to the note. Showing a summary is not a request to save it.
insight_type: summary, key_points, action_items, make_notes, meeting_report, translate, sentiment, offer_tips, shopping_list, email, linkedin_post, tweet, or blog_post.translate, set target_language to a language code such as es, fr, or de.get_note_insights first. If one exists, tell the user and confirm before overwriting it.save_note_insight with the note's localRecordingId and the finished content. Then confirm what was saved and to which note.Call get_subscription_status when the user asks about their plan, or when a tool fails in a way that suggests an access limit. Report isActive and expiresAt in plain words.