From 31b58561a42be6713f580437908da5ff17b70c0f Mon Sep 17 00:00:00 2001 From: "arcade-docs-bot[bot]" <321924871+arcade-docs-bot[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 11:11:43 +0000 Subject: [PATCH 1/2] [AUTO] Adding MCP Servers docs update --- .../data/toolkits/googleslides.json | 30 +- .../data/toolkits/index.json | 22 +- .../data/toolkits/linear.json | 424 +++++++++----- .../data/toolkits/microsoftpowerbi.json | 35 +- .../data/toolkits/microsoftsharepoint.json | 76 +-- .../data/toolkits/microsoftteams.json | 60 +- .../data/toolkits/pagerduty.json | 190 ++++--- .../data/toolkits/snowflake.json | 18 +- .../data/toolkits/zoom.json | 521 +++++++++++++++++- 9 files changed, 1030 insertions(+), 346 deletions(-) diff --git a/toolkit-docs-generator/data/toolkits/googleslides.json b/toolkit-docs-generator/data/toolkits/googleslides.json index 372ebf0ac..de4240684 100644 --- a/toolkit-docs-generator/data/toolkits/googleslides.json +++ b/toolkit-docs-generator/data/toolkits/googleslides.json @@ -1,7 +1,7 @@ { "id": "GoogleSlides", "label": "Google Slides", - "version": "3.1.0", + "version": "4.0.0", "description": "Arcade.dev LLM tools for Google Slides", "metadata": { "category": "productivity", @@ -26,7 +26,7 @@ { "name": "CommentOnPresentation", "qualifiedName": "GoogleSlides.CommentOnPresentation", - "fullyQualifiedName": "GoogleSlides.CommentOnPresentation@3.1.0", + "fullyQualifiedName": "GoogleSlides.CommentOnPresentation@4.0.0", "description": "Add a comment to a presentation, or reply within an existing comment thread.\n\nComments are file-level, not anchored to a slide; to reference a slide, name it in\nthe text. Pass reply_to_comment_id to post within that thread instead of starting a\nnew comment.", "parameters": [ { @@ -119,7 +119,7 @@ { "name": "CreateOrEditPresentation", "qualifiedName": "GoogleSlides.CreateOrEditPresentation", - "fullyQualifiedName": "GoogleSlides.CreateOrEditPresentation@3.1.0", + "fullyQualifiedName": "GoogleSlides.CreateOrEditPresentation@4.0.0", "description": "Create a deck or apply a batch of edits to one, returning created object ids,\nreplace counts, and a fresh addressable snapshot.\n\nUse this single tool for all deck construction and editing: add, delete, or restyle\nslides and elements, insert and replace text, and brand a deck in one batch. Reorder\nslides with an updateSlidesPosition request; duplicate a slide or element with a\nduplicateObject request. To set speaker notes, insertText into a slide's\nnotes_object_id (surfaced per slide in the snapshot).\n\nTo add a slide into a specific branded layout, first read the deck and consult the\nsnapshot's layout inventory: each layout reports its placeholders (type, index, and\nobject id), so you can pick a layout that already carries the title/body/other\nplaceholders you intend to fill rather than guessing which layout holds what, and\naddress a specific placeholder in placeholderIdMappings (by {type, index} or by\nlayoutPlaceholderObjectId) even when a layout repeats a type. Read the snapshot to\ndiscover the object ids later edits target.\n\nThe batch is atomic: one invalid request rejects the whole batch, so target object\nids that exist in the snapshot. Object ids you assign to new objects are validated\nbefore the batch is sent.", "parameters": [ { @@ -320,7 +320,7 @@ { "name": "CreatePresentationFromTemplate", "qualifiedName": "GoogleSlides.CreatePresentationFromTemplate", - "fullyQualifiedName": "GoogleSlides.CreatePresentationFromTemplate@3.1.0", + "fullyQualifiedName": "GoogleSlides.CreatePresentationFromTemplate@4.0.0", "description": "Derive a new on-brand deck from an existing branded deck, preserving its\nmasters, layouts, and theme, then optionally filling tokens.\n\nUse this instead of building from scratch when the user wants a deck in their\ncompany template; the new deck inherits the source's branding.", "parameters": [ { @@ -441,7 +441,7 @@ { "name": "GenerateGoogleFilePickerUrl", "qualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl", - "fullyQualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl@3.1.0", + "fullyQualifiedName": "GoogleSlides.GenerateGoogleFilePickerUrl@4.0.0", "description": "Generate a URL where the user grants this app access to specific Drive files.\n\nCheck `status` first. \"unavailable\" is not an error: either this app already reaches\nevery presentation the connected account can open, so there is no per-file grant to\nrequest, or the picker is not configured here. Either way `reason` explains it, no URL\nexists, and a presentation that could not be read is one the account itself cannot\nopen. Do not retry it.\n\nOn \"available\", use this when a prior tool reported a file was not found or access was\ndenied and the user expects the file to exist; after the user completes the picker,\nretry the prior tool. Opens Google's first-party Drive picker, not a sign-in prompt.", "parameters": [], "auth": { @@ -484,8 +484,8 @@ { "name": "GetPresentation", "qualifiedName": "GoogleSlides.GetPresentation", - "fullyQualifiedName": "GoogleSlides.GetPresentation@3.1.0", - "description": "Return an addressable snapshot of a deck: slide and element object ids,\nplaceholder types, text, speaker notes, and the layout and master inventory.\n\nThis is the read side of the read-edit loop: the object ids it returns are the\naddresses create_or_edit_presentation targets. Each layout in the inventory\nreports its placeholders with type, index, and object id, the identity a\ncreateSlide placeholderIdMappings entry needs (by {type, index} or by\nlayoutPlaceholderObjectId), even when a layout repeats a placeholder type.", + "fullyQualifiedName": "GoogleSlides.GetPresentation@4.0.0", + "description": "Return an addressable snapshot of a deck: slide and element object ids,\nplaceholder types, text, speaker notes, and the layout and master inventory.\n\nThis is the read side of the read-edit loop: the object ids it returns are the\naddresses create_or_edit_presentation targets. Each layout in the inventory\nreports its placeholders with type, index, and object id, the identity a\ncreateSlide placeholderIdMappings entry needs (by {type, index} or by\nlayoutPlaceholderObjectId), even when a layout repeats a placeholder type.\n\nWhat this response leaves out is reported in words by next_step, which is empty only\nwhen nothing was left out: read it before answering anything about slides it does not\ncontain.", "parameters": [ { "name": "presentation_id", @@ -619,7 +619,7 @@ { "name": "GetSlideThumbnail", "qualifiedName": "GoogleSlides.GetSlideThumbnail", - "fullyQualifiedName": "GoogleSlides.GetSlideThumbnail@3.1.0", + "fullyQualifiedName": "GoogleSlides.GetSlideThumbnail@4.0.0", "description": "Render one slide to an image and return its content URL, for visually\nconfirming a deck looks right before sharing.", "parameters": [ { @@ -716,7 +716,7 @@ { "name": "ListPresentationComments", "qualifiedName": "GoogleSlides.ListPresentationComments", - "fullyQualifiedName": "GoogleSlides.ListPresentationComments@3.1.0", + "fullyQualifiedName": "GoogleSlides.ListPresentationComments@4.0.0", "description": "List a page of comments and their replies on a presentation, newest first.", "parameters": [ { @@ -822,7 +822,7 @@ { "name": "ResolveComment", "qualifiedName": "GoogleSlides.ResolveComment", - "fullyQualifiedName": "GoogleSlides.ResolveComment@3.1.0", + "fullyQualifiedName": "GoogleSlides.ResolveComment@4.0.0", "description": "Close (resolve) or reopen a comment thread on a presentation.\n\nPosts an action reply on the thread, so the lifecycle change is attributed to the\nconnected account; the thread's existing comments and replies are preserved.", "parameters": [ { @@ -918,8 +918,8 @@ { "name": "SearchPresentations", "qualifiedName": "GoogleSlides.SearchPresentations", - "fullyQualifiedName": "GoogleSlides.SearchPresentations@3.1.0", - "description": "Search the user's Drive for presentations, newest first by default.\n\nKeyword matching is full-text: a keyword matches a deck's body content as well\nas its title, so a deck can match on words that never appear in its title. A\nkeyword search that matches nothing returns an empty list (not an error).", + "fullyQualifiedName": "GoogleSlides.SearchPresentations@4.0.0", + "description": "Search the user's Drive for presentations, newest first by default.\n\nKeyword matching is full-text: a keyword matches a deck's body content as well\nas its title, so a deck can match on words that never appear in its title. A\nkeyword search that matches nothing returns an empty list (not an error).\n\nAn empty list is only a definitive no-match when next_step is empty. When next_step is\nset, the listing was not walked to its end and the pages it did not reach may hold the\nmatch, so do not report that no such presentation exists from that response alone.", "parameters": [ { "name": "presentation_contains", @@ -1107,7 +1107,7 @@ { "name": "WhoAmI", "qualifiedName": "GoogleSlides.WhoAmI", - "fullyQualifiedName": "GoogleSlides.WhoAmI@3.1.0", + "fullyQualifiedName": "GoogleSlides.WhoAmI@4.0.0", "description": "Return the connected Google account's profile (name, email, picture).", "parameters": [], "auth": { @@ -1166,6 +1166,6 @@ ], "subPages": [], "curationSourceHash": "b3d8f14f84f11cfab50aa2251f31e3213b2612eb819c1bac2b8979c2fb898f20", - "generatedAt": "2026-08-13T11:19:44.487Z", - "summary": "## Google Slides Toolkit\n\nThe Google Slides toolkit connects Arcade to Google Slides (and Google Drive) via the Google APIs, enabling LLMs to create, edit, read, search, and comment on presentations programmatically.\n\n## Capabilities\n\n- **Deck creation and editing:** Build presentations from scratch or apply atomic batches of edits — add/delete/restyle slides and elements, insert/replace text, reorder slides, duplicate objects, and set speaker notes — all in a single call.\n- **Template and branding workflows:** Derive new decks from existing branded templates, preserving masters, layouts, and themes; inspect layout inventories (placeholder types, indices, object IDs) before constructing slides to target the right placeholders.\n- **Reading and visual inspection:** Retrieve full addressable snapshots (object IDs, placeholder types, text, speaker notes, layout/master inventory) and render individual slide thumbnails for visual confirmation before sharing.\n- **Search and discovery:** Full-text search across a user's Drive presentations, matching body content and titles; returns results newest-first.\n- **Comments and thread management:** Add top-level comments or replies to existing threads, list paginated comments and replies, and resolve or reopen comment threads — all attributed to the connected account.\n- **Account and file access:** Retrieve the connected Google account's profile, and generate a Google Drive file picker URL to grant per-file access when a presentation is inaccessible.\n\n## OAuth\n\nThis toolkit uses OAuth 2.0 via Google. See the [Arcade Google auth provider docs](https://docs.arcade.dev/en/references/auth-providers/google) for setup details.\n\n## Secrets\n\n- **`ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL`** — Controls whether the `GenerateGoogleFilePickerUrl` tool is available in this environment. This is not a credential from Google; it is an Arcade-side configuration secret that enables or disables the inline Drive picker feature. Set it to enable the picker flow that lets users grant per-file Drive access without a full re-authorization. Configure this secret in your Arcade environment via the [Arcade secrets dashboard](https://api.arcade.dev/dashboard/auth/secrets). For full details on how Arcade tool secrets work, see the [Arcade tool secrets guide](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets)." + "generatedAt": "2026-08-29T11:11:25.104Z", + "summary": "## Google Slides Toolkit\n\nThe Google Slides toolkit connects Arcade to the Google Slides and Drive APIs, enabling LLMs to create, read, edit, and manage presentations on behalf of a connected Google account.\n\n## Capabilities\n\n- **Deck creation and editing:** Build presentations from scratch or apply atomic batches of edits — add/delete/restyle slides and elements, insert and replace text, reorder slides, duplicate objects, and set speaker notes — all in a single tool call.\n- **Template-based authoring:** Derive new decks from existing branded templates, preserving masters, layouts, themes, and placeholders for on-brand output without manual setup.\n- **Read and inspect:** Retrieve a full addressable snapshot of any presentation — slide/element object IDs, placeholder types, text, speaker notes, layout inventory — providing the IDs that all editing operations target.\n- **Thumbnails and visual verification:** Render individual slides to images for visual confirmation before sharing.\n- **Comments and thread management:** Add comments or replies to a presentation, list existing threads, and resolve or reopen comment threads with attribution.\n- **Search and file access:** Full-text search across a user's Drive presentations; trigger the Google Drive inline file picker when access to a specific file must be granted by the user.\n\n## OAuth\n\nThis toolkit uses OAuth 2.0 via Google. See the [Arcade Google auth provider docs](https://docs.arcade.dev/en/references/auth-providers/google) for setup details.\n\n## Secrets\n\n- **`ENABLE_GOOGLE_DRIVE_INLINE_PICKER_URL`** — Controls whether the `GenerateGoogleFilePickerUrl` tool can produce a Google Drive inline file picker URL. This is not a credential from Google; it is a configuration secret set within Arcade to opt in to the picker feature. If absent or not set to an enabling value, the picker reports `status: unavailable`. To configure it, go to your [Arcade secrets dashboard](https://api.arcade.dev/dashboard/auth/secrets) and add this key with the appropriate value as documented in the [Arcade tool secrets guide](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets).\n\nFor general guidance on configuring secrets in Arcade, see the [tool secrets docs](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets)." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/index.json b/toolkit-docs-generator/data/toolkits/index.json index a61065cff..9327cdee9 100644 --- a/toolkit-docs-generator/data/toolkits/index.json +++ b/toolkit-docs-generator/data/toolkits/index.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-08-13T11:20:08.312Z", + "generatedAt": "2026-08-29T11:11:40.256Z", "version": "1.0.0", "toolkits": [ { @@ -482,7 +482,7 @@ { "id": "GoogleSlides", "label": "Google Slides", - "version": "3.1.0", + "version": "4.0.0", "category": "productivity", "type": "arcade", "toolCount": 10, @@ -617,10 +617,10 @@ { "id": "Linear", "label": "Linear", - "version": "4.3.1", + "version": "5.4.0", "category": "productivity", "type": "arcade", - "toolCount": 46, + "toolCount": 48, "authType": "oauth2" }, { @@ -698,7 +698,7 @@ { "id": "MicrosoftPowerbi", "label": "Microsoft Power BI", - "version": "0.3.0", + "version": "0.3.1", "category": "productivity", "type": "arcade", "toolCount": 15, @@ -716,7 +716,7 @@ { "id": "MicrosoftSharepoint", "label": "Microsoft SharePoint", - "version": "0.2.2", + "version": "0.2.3", "category": "productivity", "type": "arcade", "toolCount": 36, @@ -725,7 +725,7 @@ { "id": "MicrosoftTeams", "label": "Microsoft Teams", - "version": "0.6.3", + "version": "0.6.5", "category": "social", "type": "arcade", "toolCount": 25, @@ -788,7 +788,7 @@ { "id": "Pagerduty", "label": "PagerDuty", - "version": "0.3.0", + "version": "0.4.0", "category": "development", "type": "arcade", "toolCount": 14, @@ -905,7 +905,7 @@ { "id": "Snowflake", "label": "Snowflake", - "version": "0.1.0", + "version": "0.1.2", "category": "databases", "type": "arcade", "toolCount": 7, @@ -1076,10 +1076,10 @@ { "id": "Zoom", "label": "Zoom", - "version": "1.1.2", + "version": "2.0.0", "category": "social", "type": "arcade", - "toolCount": 2, + "toolCount": 7, "authType": "oauth2" } ] diff --git a/toolkit-docs-generator/data/toolkits/linear.json b/toolkit-docs-generator/data/toolkits/linear.json index 3fdb030e4..a7b10fdd7 100644 --- a/toolkit-docs-generator/data/toolkits/linear.json +++ b/toolkit-docs-generator/data/toolkits/linear.json @@ -1,7 +1,7 @@ { "id": "Linear", "label": "Linear", - "version": "4.3.1", + "version": "5.4.0", "description": "Arcade tools designed for LLMs to interact with Linear", "metadata": { "category": "productivity", @@ -27,7 +27,7 @@ { "name": "AddComment", "qualifiedName": "Linear.AddComment", - "fullyQualifiedName": "Linear.AddComment@4.3.1", + "fullyQualifiedName": "Linear.AddComment@5.4.0", "description": "Add a comment to an issue.", "parameters": [ { @@ -101,7 +101,7 @@ { "name": "AddProjectComment", "qualifiedName": "Linear.AddProjectComment", - "fullyQualifiedName": "Linear.AddProjectComment@4.3.1", + "fullyQualifiedName": "Linear.AddProjectComment@5.4.0", "description": "Add a comment to a project's document content.\n\nIMPORTANT: Due to Linear API limitations, comments created via the API will NOT\nappear visually anchored inline in the document (no yellow highlight on text).\nThe comment will be stored and can be retrieved via list_project_comments, but\nit will appear in the comments panel rather than inline in the document.\n\nFor true inline comments that are visually anchored to text, users should create\nthem directly in the Linear UI by selecting text and adding a comment.\n\nThe quoted_text parameter stores metadata about what text the comment references,\nwhich is useful for context even though the comment won't be visually anchored.", "parameters": [ { @@ -201,7 +201,7 @@ { "name": "AddProjectToInitiative", "qualifiedName": "Linear.AddProjectToInitiative", - "fullyQualifiedName": "Linear.AddProjectToInitiative@4.3.1", + "fullyQualifiedName": "Linear.AddProjectToInitiative@5.4.0", "description": "Link a project to an initiative.\n\nBoth initiative and project can be specified by ID or name.\nIf a name is provided, fuzzy matching is used to resolve it.", "parameters": [ { @@ -288,7 +288,7 @@ { "name": "ArchiveInitiative", "qualifiedName": "Linear.ArchiveInitiative", - "fullyQualifiedName": "Linear.ArchiveInitiative@4.3.1", + "fullyQualifiedName": "Linear.ArchiveInitiative@5.4.0", "description": "Archive an initiative.\n\nArchived initiatives are hidden from default views but can be restored.", "parameters": [ { @@ -362,7 +362,7 @@ { "name": "ArchiveIssue", "qualifiedName": "Linear.ArchiveIssue", - "fullyQualifiedName": "Linear.ArchiveIssue@4.3.1", + "fullyQualifiedName": "Linear.ArchiveIssue@5.4.0", "description": "Archive an issue.\n\nArchived issues are hidden from default views but can be restored.", "parameters": [ { @@ -423,7 +423,7 @@ { "name": "ArchiveProject", "qualifiedName": "Linear.ArchiveProject", - "fullyQualifiedName": "Linear.ArchiveProject@4.3.1", + "fullyQualifiedName": "Linear.ArchiveProject@5.4.0", "description": "Archive a project.\n\nArchived projects are hidden from default views but can be restored.", "parameters": [ { @@ -497,7 +497,7 @@ { "name": "CreateInitiative", "qualifiedName": "Linear.CreateInitiative", - "fullyQualifiedName": "Linear.CreateInitiative@4.3.1", + "fullyQualifiedName": "Linear.CreateInitiative@5.4.0", "description": "Create a new Linear initiative.\n\nInitiatives are high-level strategic goals that group related projects.", "parameters": [ { @@ -603,7 +603,7 @@ { "name": "CreateIssue", "qualifiedName": "Linear.CreateIssue", - "fullyQualifiedName": "Linear.CreateIssue@4.3.1", + "fullyQualifiedName": "Linear.CreateIssue@5.4.0", "description": "Create a new Linear issue with validation.\n\nWhen assignee is None or '@me', the issue is assigned to the authenticated user.\nAll entity references (team, assignee, labels, state, project, cycle, parent)\nare validated before creation. If an entity is not found, suggestions are\nreturned to help correct the input.", "parameters": [ { @@ -721,7 +721,7 @@ "name": "attachment_url", "type": "string", "required": false, - "description": "URL to attach to the issue. Default is None.", + "description": "A public URL to attach to the issue. Omit to attach nothing; do not pass an empty or blank string, which is rejected.", "enum": null, "inferrable": true }, @@ -729,7 +729,7 @@ "name": "attachment_title", "type": "string", "required": false, - "description": "Title for the attached URL. Default is None (URL used as title).", + "description": "Title for the attached URL. Omitting it leaves Linear to derive a title from the URL it fetches. Defaults to None.", "enum": null, "inferrable": true }, @@ -870,7 +870,7 @@ { "name": "CreateIssueRelation", "qualifiedName": "Linear.CreateIssueRelation", - "fullyQualifiedName": "Linear.CreateIssueRelation@4.3.1", + "fullyQualifiedName": "Linear.CreateIssueRelation@5.4.0", "description": "Create a relation between two issues.\n\nRelation types define the relationship from the source issue's perspective:\n- blocks: Source issue blocks the related issue\n- blockedBy: Source issue is blocked by the related issue\n- duplicate: Source issue is a duplicate of the related issue\n- related: Issues are related (bidirectional)", "parameters": [ { @@ -962,7 +962,7 @@ { "name": "CreateProject", "qualifiedName": "Linear.CreateProject", - "fullyQualifiedName": "Linear.CreateProject@4.3.1", + "fullyQualifiedName": "Linear.CreateProject@5.4.0", "description": "Create a new Linear project.\n\nTeam is validated before creation. If team is not found, suggestions are\nreturned to help correct the input. Lead is validated if provided.", "parameters": [ { @@ -1127,7 +1127,7 @@ { "name": "CreateProjectStatus", "qualifiedName": "Linear.CreateProjectStatus", - "fullyQualifiedName": "Linear.CreateProjectStatus@4.3.1", + "fullyQualifiedName": "Linear.CreateProjectStatus@5.4.0", "description": "Create a new project status in the Linear workspace.\n\nRequires Linear workspace admin access; without it the create fails.\n\nStatus names are unique per category: the same name may exist once per type. When a status\nwith the same name and type already exists, this returns a retryable error carrying the\nexisting status's id so it can be reused instead of duplicated. A same-named status of a\ndifferent type is allowed.", "parameters": [ { @@ -1235,7 +1235,7 @@ { "name": "CreateProjectUpdate", "qualifiedName": "Linear.CreateProjectUpdate", - "fullyQualifiedName": "Linear.CreateProjectUpdate@4.3.1", + "fullyQualifiedName": "Linear.CreateProjectUpdate@5.4.0", "description": "Create a project status update.\n\nProject updates are posts that communicate progress, blockers, or status\nchanges to stakeholders. They appear in the project's Updates tab and\ncan include a health status indicator.", "parameters": [ { @@ -1325,7 +1325,7 @@ { "name": "GetCycle", "qualifiedName": "Linear.GetCycle", - "fullyQualifiedName": "Linear.GetCycle@4.3.1", + "fullyQualifiedName": "Linear.GetCycle@5.4.0", "description": "Get detailed information about a specific Linear cycle.", "parameters": [ { @@ -1385,7 +1385,7 @@ { "name": "GetInitiative", "qualifiedName": "Linear.GetInitiative", - "fullyQualifiedName": "Linear.GetInitiative@4.3.1", + "fullyQualifiedName": "Linear.GetInitiative@5.4.0", "description": "Get detailed information about a specific Linear initiative.\n\nSupports lookup by ID or name (with fuzzy matching for name).", "parameters": [ { @@ -1487,7 +1487,7 @@ { "name": "GetInitiativeDescription", "qualifiedName": "Linear.GetInitiativeDescription", - "fullyQualifiedName": "Linear.GetInitiativeDescription@4.3.1", + "fullyQualifiedName": "Linear.GetInitiativeDescription@5.4.0", "description": "Get an initiative's full description with pagination support.\n\nUse this tool when you need the complete description of an initiative that\nwas truncated in the get_initiative response. Supports chunked reading for\nvery large descriptions.", "parameters": [ { @@ -1573,7 +1573,7 @@ { "name": "GetIssue", "qualifiedName": "Linear.GetIssue", - "fullyQualifiedName": "Linear.GetIssue@4.3.1", + "fullyQualifiedName": "Linear.GetIssue@5.4.0", "description": "Get detailed information about a specific Linear issue.\n\nAccepts either the issue UUID or the human-readable identifier (like TOO-123).", "parameters": [ { @@ -1685,7 +1685,7 @@ { "name": "GetMilestone", "qualifiedName": "Linear.GetMilestone", - "fullyQualifiedName": "Linear.GetMilestone@4.3.1", + "fullyQualifiedName": "Linear.GetMilestone@5.4.0", "description": "Get a milestone by ID or name inside a project.", "parameters": [ { @@ -1771,7 +1771,7 @@ { "name": "GetNotifications", "qualifiedName": "Linear.GetNotifications", - "fullyQualifiedName": "Linear.GetNotifications@4.3.1", + "fullyQualifiedName": "Linear.GetNotifications@5.4.0", "description": "Get the authenticated user's notifications.\n\nReturns notifications including issue mentions, comments, assignments,\nand state changes.", "parameters": [ { @@ -1857,7 +1857,7 @@ { "name": "GetProject", "qualifiedName": "Linear.GetProject", - "fullyQualifiedName": "Linear.GetProject@4.3.1", + "fullyQualifiedName": "Linear.GetProject@5.4.0", "description": "Get detailed information about a specific Linear project.\n\nSupports lookup by ID, slug_id, or name (with fuzzy matching for name).", "parameters": [ { @@ -1973,7 +1973,7 @@ { "name": "GetProjectDescription", "qualifiedName": "Linear.GetProjectDescription", - "fullyQualifiedName": "Linear.GetProjectDescription@4.3.1", + "fullyQualifiedName": "Linear.GetProjectDescription@5.4.0", "description": "Get a project's full description with pagination support.\n\nUse this tool when you need the complete description of a project that\nwas truncated in the get_project response. Supports chunked reading for\nvery large descriptions.", "parameters": [ { @@ -2059,7 +2059,7 @@ { "name": "GetRecentActivity", "qualifiedName": "Linear.GetRecentActivity", - "fullyQualifiedName": "Linear.GetRecentActivity@4.3.1", + "fullyQualifiedName": "Linear.GetRecentActivity@5.4.0", "description": "Get the authenticated user's recent issue activity.\n\nReturns issues the user has recently created or been assigned to\nwithin the specified time period.", "parameters": [ { @@ -2132,7 +2132,7 @@ { "name": "GetTeam", "qualifiedName": "Linear.GetTeam", - "fullyQualifiedName": "Linear.GetTeam@4.3.1", + "fullyQualifiedName": "Linear.GetTeam@5.4.0", "description": "Get detailed information about a specific Linear team.\n\nSupports lookup by ID, key (like TOO, ENG), or name (with fuzzy matching).", "parameters": [ { @@ -2219,97 +2219,10 @@ "extras": null } }, - { - "name": "LinkGithubToIssue", - "qualifiedName": "Linear.LinkGithubToIssue", - "fullyQualifiedName": "Linear.LinkGithubToIssue@4.3.1", - "description": "Link a GitHub PR, commit, or issue to a Linear issue.\n\nAutomatically detects the artifact type from the URL and generates\nan appropriate title if not provided.", - "parameters": [ - { - "name": "issue", - "type": "string", - "required": true, - "description": "Issue ID or identifier to link to.", - "enum": null, - "inferrable": true - }, - { - "name": "github_url", - "type": "string", - "required": true, - "description": "GitHub URL to link (PR, commit, or issue).", - "enum": null, - "inferrable": true - }, - { - "name": "title", - "type": "string", - "required": false, - "description": "Custom title for the link. If not provided, auto-generated from URL.", - "enum": null, - "inferrable": true - } - ], - "auth": { - "providerId": "linear", - "providerType": "oauth2", - "scopes": [ - "read", - "write" - ] - }, - "secrets": [], - "secretsInfo": [], - "output": { - "type": "json", - "description": "Link result with attachment details" - }, - "documentationChunks": [], - "codeExample": { - "toolName": "Linear.LinkGithubToIssue", - "parameters": { - "issue": { - "value": "ENG-1042", - "type": "string", - "required": true - }, - "github_url": { - "value": "https://github.com/myorg/myrepo/pull/318", - "type": "string", - "required": true - }, - "title": { - "value": "Fix authentication bug - PR #318", - "type": "string", - "required": false - } - }, - "requiresAuth": true, - "authProvider": "linear", - "tabLabel": "Call the Tool with User Authorization" - }, - "metadata": { - "classification": { - "serviceDomains": [ - "project_management" - ] - }, - "behavior": { - "operations": [ - "update" - ], - "readOnly": false, - "destructive": false, - "idempotent": true, - "openWorld": true - }, - "extras": null - } - }, { "name": "ListAvailableProjectStatuses", "qualifiedName": "Linear.ListAvailableProjectStatuses", - "fullyQualifiedName": "Linear.ListAvailableProjectStatuses@4.3.1", + "fullyQualifiedName": "Linear.ListAvailableProjectStatuses@5.4.0", "description": "List the project statuses a project can be put in, in the Linear workspace.\n\nIncludes custom statuses, not just the built-in categories, so the exact name, id, and\ntype of each status can be discovered before filtering projects by status or assigning a\nstatus to a project. Returned in lifecycle order (backlog → planned → started → paused →\ncompleted → canceled), then by position within each category. Project statuses are a small\nworkspace-level vocabulary and the whole set is returned in one call (no pagination).", "parameters": [ { @@ -2376,7 +2289,7 @@ { "name": "ListComments", "qualifiedName": "Linear.ListComments", - "fullyQualifiedName": "Linear.ListComments@4.3.1", + "fullyQualifiedName": "Linear.ListComments@5.4.0", "description": "List comments on an issue.\n\nReturns comments with user info, timestamps, and reply threading info.", "parameters": [ { @@ -2462,7 +2375,7 @@ { "name": "ListCycles", "qualifiedName": "Linear.ListCycles", - "fullyQualifiedName": "Linear.ListCycles@4.3.1", + "fullyQualifiedName": "Linear.ListCycles@5.4.0", "description": "List Linear cycles, optionally filtered by team and status.\n\nCycles are time-boxed iterations (like sprints) for organizing work.", "parameters": [ { @@ -2574,7 +2487,7 @@ { "name": "ListInitiatives", "qualifiedName": "Linear.ListInitiatives", - "fullyQualifiedName": "Linear.ListInitiatives@4.3.1", + "fullyQualifiedName": "Linear.ListInitiatives@5.4.0", "description": "List Linear initiatives, optionally filtered by keywords and other criteria.\n\nReturns all initiatives when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -2680,7 +2593,7 @@ { "name": "ListIssues", "qualifiedName": "Linear.ListIssues", - "fullyQualifiedName": "Linear.ListIssues@4.3.1", + "fullyQualifiedName": "Linear.ListIssues@5.4.0", "description": "List Linear issues, optionally filtered by keywords and other criteria.\n\nReturns all issues when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -2863,7 +2776,7 @@ { "name": "ListLabels", "qualifiedName": "Linear.ListLabels", - "fullyQualifiedName": "Linear.ListLabels@4.3.1", + "fullyQualifiedName": "Linear.ListLabels@5.4.0", "description": "List available issue labels in the workspace.\n\nReturns labels that can be applied to issues. Use label IDs or names\nwhen creating or updating issues.", "parameters": [ { @@ -2936,7 +2849,7 @@ { "name": "ListMilestones", "qualifiedName": "Linear.ListMilestones", - "fullyQualifiedName": "Linear.ListMilestones@4.3.1", + "fullyQualifiedName": "Linear.ListMilestones@5.4.0", "description": "List milestones in a Linear project.", "parameters": [ { @@ -3035,7 +2948,7 @@ { "name": "ListProjectComments", "qualifiedName": "Linear.ListProjectComments", - "fullyQualifiedName": "Linear.ListProjectComments@4.3.1", + "fullyQualifiedName": "Linear.ListProjectComments@5.4.0", "description": "List comments on a project's document content.\n\nReturns comments with user info, timestamps, quoted text for inline comments,\nand reply threading info. Replies are nested under their parent comments.\n\nUse comment_filter to control which comments are returned:\n- only_quoted (default): Only comments attached to a quote in the text\n- only_unquoted: Only comments not attached to a particular quote\n- all: All comments regardless of being attached to a quote or not", "parameters": [ { @@ -3164,7 +3077,7 @@ { "name": "ListProjects", "qualifiedName": "Linear.ListProjects", - "fullyQualifiedName": "Linear.ListProjects@4.3.1", + "fullyQualifiedName": "Linear.ListProjects@5.4.0", "description": "List Linear projects, optionally filtered by keywords, status, team, or creation date.\n\nWith no filters this returns projects up to the page limit (default 20, max 50). Narrow by a\nspecific status with ``status`` (a status name or id), or by a whole category with\n``status_type``; the two are mutually exclusive. Each returned project includes its id, name,\nstatus, teams, and progress.", "parameters": [ { @@ -3309,7 +3222,7 @@ { "name": "ListProjectUpdates", "qualifiedName": "Linear.ListProjectUpdates", - "fullyQualifiedName": "Linear.ListProjectUpdates@4.3.1", + "fullyQualifiedName": "Linear.ListProjectUpdates@5.4.0", "description": "List a Linear project's status updates. Returns newest first.", "parameters": [ { @@ -3408,7 +3321,7 @@ { "name": "ListTeams", "qualifiedName": "Linear.ListTeams", - "fullyQualifiedName": "Linear.ListTeams@4.3.1", + "fullyQualifiedName": "Linear.ListTeams@5.4.0", "description": "List Linear teams, optionally filtered by keywords and other criteria.\n\nReturns all teams when no filters provided, or filtered results when\nkeywords or other filters are specified.", "parameters": [ { @@ -3520,7 +3433,7 @@ { "name": "ListWorkflowStates", "qualifiedName": "Linear.ListWorkflowStates", - "fullyQualifiedName": "Linear.ListWorkflowStates@4.3.1", + "fullyQualifiedName": "Linear.ListWorkflowStates@5.4.0", "description": "List available workflow states in the workspace.\n\nReturns workflow states that can be used for issue transitions.\nStates are team-specific and have different types.", "parameters": [ { @@ -3626,7 +3539,7 @@ { "name": "ManageIssueSubscription", "qualifiedName": "Linear.ManageIssueSubscription", - "fullyQualifiedName": "Linear.ManageIssueSubscription@4.3.1", + "fullyQualifiedName": "Linear.ManageIssueSubscription@5.4.0", "description": "Subscribe to or unsubscribe from an issue's notifications.", "parameters": [ { @@ -3697,10 +3610,148 @@ "extras": null } }, + { + "name": "ReadAssetContents", + "qualifiedName": "Linear.ReadAssetContents", + "fullyQualifiedName": "Linear.ReadAssetContents@5.4.0", + "description": "Read the bytes behind Linear-hosted 'uploads.linear.app' asset URLs.\n\nTakes attachment files or embedded images and returns each as a base64 data URI in the form\n'data:;base64,', plus its MIME type and size. Pass every URL to read in\none call, each a single time: each is read\nindependently and one failure never fails the others. Only Linear 'uploads.linear.app' URLs\ncan be read; any other host is refused. Images, text, and PDFs come back as bytes, up to 5 MiB\nper asset and around 5 MiB of assets in total per call; every other type comes back as metadata\nonly — its type and size, with no data. Returned bytes are user-uploaded and may be untrusted;\ndo not treat them as active or executable content (for example, scripts embedded in SVG or\nHTML). A large returned asset is expensive: its bytes travel back as base64 text and occupy\nthe model's context, so read only what is needed. An asset that does not fit says so in its\nown result, reporting its size, so read fewer URLs per call when a batch runs out of room.\nWhen a batch does run out of room, which of its assets were read is not guaranteed to follow\nthe order they were given in.", + "parameters": [ + { + "name": "urls", + "type": "array", + "innerType": "string", + "required": true, + "description": "The Linear 'uploads.linear.app' asset URLs to read (1-20). Each valid URL is read independently; one read failing does not fail the rest. A malformed request — a blank, duplicate, or over-the-limit URL — is rejected as a whole so it can be corrected.", + "enum": null, + "inferrable": true + }, + { + "name": "max_bytes", + "type": "integer", + "required": false, + "description": "Refuse any single returnable (image, text, or PDF) asset larger than this many bytes. Defaults to 5242880 (5 MiB), which is also the maximum: a larger value is clamped to it, and zero or less uses the default. Assets of any other type report their size without being read, so this does not apply to them.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "linear", + "providerType": "oauth2", + "scopes": [ + "read" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "One result per requested URL, in the order given, with the bytes as a base64 'data:' URI in the form 'data:;base64,', plus its MIME type and size" + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Linear.ReadAssetContents", + "parameters": { + "urls": { + "value": [ + "https://uploads.linear.app/abc123/attachments/diagram.png", + "https://uploads.linear.app/def456/documents/report.pdf", + "https://uploads.linear.app/ghi789/images/screenshot.jpg" + ], + "type": "array", + "required": true + }, + "max_bytes": { + "value": 2097152, + "type": "integer", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "linear", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "project_management" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, + { + "name": "RemoveAttachment", + "qualifiedName": "Linear.RemoveAttachment", + "fullyQualifiedName": "Linear.RemoveAttachment@5.4.0", + "description": "Remove an attachment or external link from a Linear issue, project, or initiative.\n\nThis deletes Linear's own record of the link — its title, subtitle, metadata, and source\n— and that record is not recoverable. It does NOT touch the linked resource itself: the\ndocument, pull request, or file on the other end is left untouched.\n\nA rich attachment (e.g. a GitHub pull request or a Slack thread) drives Linear's automated\nstatus updates, so removing it tears that automation down, not just a display row. Confirm\nwhat the attachment is before removing it.\n\nPassing an id that matches no attachment or external link is not an error: it reports\n`not_found` (the object is already gone, or the id was never one of these types).", + "parameters": [ + { + "name": "attachment_id", + "type": "string", + "required": true, + "description": "Identifier of the attachment or external link to remove.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "linear", + "providerType": "oauth2", + "scopes": [ + "write" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "What was removed" + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Linear.RemoveAttachment", + "parameters": { + "attachment_id": { + "value": "att_9f3c2e1b4d7a8056", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "linear", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "project_management" + ] + }, + "behavior": { + "operations": [ + "delete" + ], + "readOnly": false, + "destructive": true, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, { "name": "ReplyToComment", "qualifiedName": "Linear.ReplyToComment", - "fullyQualifiedName": "Linear.ReplyToComment@4.3.1", + "fullyQualifiedName": "Linear.ReplyToComment@5.4.0", "description": "Reply to an existing comment on an issue.\n\nCreates a threaded reply to the specified parent comment.", "parameters": [ { @@ -3787,7 +3838,7 @@ { "name": "ReplyToProjectComment", "qualifiedName": "Linear.ReplyToProjectComment", - "fullyQualifiedName": "Linear.ReplyToProjectComment@4.3.1", + "fullyQualifiedName": "Linear.ReplyToProjectComment@5.4.0", "description": "Reply to an existing comment on a project document.\n\nCreates a threaded reply to the specified parent comment.", "parameters": [ { @@ -3887,7 +3938,7 @@ { "name": "ResolveComment", "qualifiedName": "Linear.ResolveComment", - "fullyQualifiedName": "Linear.ResolveComment@4.3.1", + "fullyQualifiedName": "Linear.ResolveComment@5.4.0", "description": "Resolve or reopen a Linear comment thread by its id.\n\nWorks for any comment regardless of what it is anchored to — issue comments, project\ncomments, and comments anchored to a project description alike. Resolving a comment that\nis already resolved (or reopening one already open) succeeds without making a change; in\nthat no-op case a supplied resolving_comment_id is not applied, since the thread's\nexisting resolution is left untouched.\n\nIMPORTANT: Linear's API updates the comment record but not the inline-comment mark stored\nin a project description. For comments anchored to project-description text, resolving may\nnot appear until the Linear view is reopened, while reopening may leave the comment hidden\nin Linear's UI until it is reopened manually there. The returned resolution state and\nsubsequent API reads remain authoritative.", "parameters": [ { @@ -3977,7 +4028,7 @@ { "name": "TransitionIssueState", "qualifiedName": "Linear.TransitionIssueState", - "fullyQualifiedName": "Linear.TransitionIssueState@4.3.1", + "fullyQualifiedName": "Linear.TransitionIssueState@5.4.0", "description": "Transition a Linear issue to a new workflow state.\n\nThe target state is validated against the team's available states.", "parameters": [ { @@ -4064,7 +4115,7 @@ { "name": "UpdateComment", "qualifiedName": "Linear.UpdateComment", - "fullyQualifiedName": "Linear.UpdateComment@4.3.1", + "fullyQualifiedName": "Linear.UpdateComment@5.4.0", "description": "Update an existing comment.", "parameters": [ { @@ -4137,7 +4188,7 @@ { "name": "UpdateInitiative", "qualifiedName": "Linear.UpdateInitiative", - "fullyQualifiedName": "Linear.UpdateInitiative@4.3.1", + "fullyQualifiedName": "Linear.UpdateInitiative@5.4.0", "description": "Update a Linear initiative with partial updates.\n\nOnly fields that are explicitly provided will be updated.", "parameters": [ { @@ -4256,7 +4307,7 @@ { "name": "UpdateIssue", "qualifiedName": "Linear.UpdateIssue", - "fullyQualifiedName": "Linear.UpdateIssue@4.3.1", + "fullyQualifiedName": "Linear.UpdateIssue@5.4.0", "description": "Update a Linear issue with partial updates.\n\nOnly fields that are explicitly provided will be updated. All entity\nreferences are validated before update.", "parameters": [ { @@ -4383,7 +4434,7 @@ "name": "attachment_url", "type": "string", "required": false, - "description": "URL to attach to the issue. Default is None.", + "description": "A public URL to attach to the issue. Omit to attach nothing; do not pass an empty or blank string, which is rejected.", "enum": null, "inferrable": true }, @@ -4391,7 +4442,7 @@ "name": "attachment_title", "type": "string", "required": false, - "description": "Title for the attached URL. Default is None (URL used as title).", + "description": "Title for the attached URL. Omitting it leaves Linear to derive a title from the URL it fetches. Defaults to None.", "enum": null, "inferrable": true }, @@ -4538,7 +4589,7 @@ { "name": "UpdateProject", "qualifiedName": "Linear.UpdateProject", - "fullyQualifiedName": "Linear.UpdateProject@4.3.1", + "fullyQualifiedName": "Linear.UpdateProject@5.4.0", "description": "Update a Linear project with partial updates.\n\nOnly fields that are explicitly provided will be updated. All entity\nreferences are validated before update.\n\nIMPORTANT: Updating the 'content' field will break any existing inline\ncomment anchoring. The comments will still exist and be retrievable via\nlist_project_comments, but they will no longer appear visually anchored\nto text in the Linear UI. The 'description' field can be safely updated\nwithout affecting inline comments.", "parameters": [ { @@ -4734,10 +4785,105 @@ "extras": null } }, + { + "name": "UpsertAttachment", + "qualifiedName": "Linear.UpsertAttachment", + "fullyQualifiedName": "Linear.UpsertAttachment@5.4.0", + "description": "Attach a URL or a local file to a Linear issue, project, or initiative.\n\nA URL that is already attached to the target is not duplicated on any target type: a\ndifferent title renames the existing attachment, and otherwise nothing changes.\n\nA local file is uploaded to Linear and stored as a native attachment on an issue, or as an\nexternal link to the stored file on a project or initiative. Each attach uploads the file\nagain, so repeating one adds a second attachment. Attaching a local file needs a one-time\nclient-side hook so the file's bytes never enter the model's context; if a 'file://' source\nreaches the server, the hook did not run and the tool returns the setup steps instead of\nattaching anything.", + "parameters": [ + { + "name": "attachment", + "type": "json", + "required": true, + "description": "The resource to attach. Its `source` is either a publicly reachable http(s) URL, or a local file given as a 'file://' URI with its absolute path (a one-time client hook setup is required for local files; the tool returns the setup steps if it is missing). URLs on private or internal networks are refused. `title` names the attachment; `filename` and `mime_type` apply only to a local file and are ignored for an http(s) URL.", + "enum": null, + "inferrable": true + }, + { + "name": "target_id", + "type": "string", + "required": true, + "description": "Identifier of the issue, project, or initiative to attach to, matching target_type. An issue accepts its UUID or its identifier (e.g. ABC-123); a project or initiative must be given as its UUID.", + "enum": null, + "inferrable": true + }, + { + "name": "target_type", + "type": "string", + "required": false, + "description": "Whether target_id names an issue, project, or initiative. Defaults to ISSUE.", + "enum": [ + "issue", + "project", + "initiative" + ], + "inferrable": true + } + ], + "auth": { + "providerId": "linear", + "providerType": "oauth2", + "scopes": [ + "read", + "write" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "Identifier and URL of the attachment, and what the call did" + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Linear.UpsertAttachment", + "parameters": { + "attachment": { + "value": { + "source": "https://example.com/design-mockup.png", + "title": "Design Mockup v2" + }, + "type": "string", + "required": true + }, + "target_id": { + "value": "ABC-456", + "type": "string", + "required": true + }, + "target_type": { + "value": "ISSUE", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "linear", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "project_management" + ] + }, + "behavior": { + "operations": [ + "create", + "update" + ], + "readOnly": false, + "destructive": false, + "idempotent": false, + "openWorld": true + }, + "extras": null + } + }, { "name": "UpsertMilestone", "qualifiedName": "Linear.UpsertMilestone", - "fullyQualifiedName": "Linear.UpsertMilestone@4.3.1", + "fullyQualifiedName": "Linear.UpsertMilestone@5.4.0", "description": "Upsert a project's milestone.", "parameters": [ { @@ -4864,7 +5010,7 @@ { "name": "WhoAmI", "qualifiedName": "Linear.WhoAmI", - "fullyQualifiedName": "Linear.WhoAmI@4.3.1", + "fullyQualifiedName": "Linear.WhoAmI@5.4.0", "description": "Get the authenticated user's profile and team memberships.\n\nReturns the current user's information including their name, email,\norganization, and the teams they belong to.", "parameters": [], "auth": { @@ -4919,6 +5065,6 @@ "customImports": [], "subPages": [], "curationSourceHash": "3dbc4f7bd59d0fef5426882adc94d0f50f571dcee8c12f3fa5b651b4b7df2625", - "generatedAt": "2026-08-13T11:19:54.143Z", - "summary": "## Linear Toolkit\n\nThe Linear toolkit lets LLMs interact with Linear's project management platform through Arcade, covering the full lifecycle of issues, projects, initiatives, cycles, milestones, comments, and teams.\n\n## Capabilities\n\n- **Issue management:** Create, update, archive, and transition issues through workflow states; manage labels, relations (blocks/blocked-by/duplicate/related), GitHub PR/commit links, and issue subscriptions.\n- **Project & initiative management:** Create, update, archive, and track projects and initiatives; link projects to initiatives; manage project statuses (including custom workspace statuses), content updates, and progress posts.\n- **Cycles & milestones:** List and inspect time-boxed cycles; upsert and retrieve milestones within projects.\n- **Comments & threads:** Add, update, reply to, and resolve comment threads on issues and project documents; list comments with threading and quote metadata (note: inline visual anchoring in project documents is a Linear UI-only feature — API-created comments appear in the comments panel).\n- **Workspace discovery:** List and query teams, workflow states, labels, available project statuses, and initiatives; look up entities by ID, key, or name with fuzzy matching.\n- **User context & activity:** Retrieve the authenticated user's profile, team memberships, recent issue activity, and notifications.\n\n## OAuth\n\nThis toolkit authenticates via OAuth 2.0 with **Linear** as the provider. See the [Linear auth provider docs](https://docs.arcade.dev/en/references/auth-providers/linear) for setup details." + "generatedAt": "2026-08-29T11:11:27.494Z", + "summary": "## Linear Toolkit\n\nThe Linear toolkit connects LLMs to [Linear](https://linear.app) via Arcade, enabling programmatic interaction with issues, projects, initiatives, cycles, teams, and workspace metadata.\n\n## Capabilities\n\n- **Issue management** — create, update, archive, transition workflow states, manage relations (blocks/blocked-by/duplicate/related), subscribe/unsubscribe, and add, reply to, resolve, or update comments and reactions.\n- **Project & initiative management** — create, update, archive, and link projects to initiatives; manage milestones, project statuses (including custom workspace statuses), and post structured project updates with health indicators.\n- **Cycles & workflow** — list and inspect time-boxed cycles (sprints); discover and apply team-specific workflow states.\n- **Notifications & activity** — retrieve the authenticated user's notifications and recent issue activity; look up the current user's profile and team memberships.\n- **Asset & attachment handling** — read bytes from Linear-hosted asset URLs (images, PDFs, text up to 5 MiB each); upsert or remove URL and file attachments on issues, projects, and initiatives.\n- **Discovery & lookup** — list and fuzzy-search teams, labels, workflow states, project statuses, comments, and all major entities; paginated reads for large descriptions.\n\n## OAuth\n\nThis toolkit authenticates via OAuth 2.0 with Linear as the provider. See the [Linear auth provider docs](https://docs.arcade.dev/en/references/auth-providers/linear) for setup details." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json b/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json index 552373ded..64754d178 100644 --- a/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json +++ b/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json @@ -1,7 +1,7 @@ { "id": "MicrosoftPowerbi", "label": "Microsoft Power BI", - "version": "0.3.0", + "version": "0.3.1", "description": "Arcade MCP toolkit for Microsoft Power BI", "metadata": { "category": "productivity", @@ -27,7 +27,7 @@ { "name": "DatasetGatewayHealth", "qualifiedName": "MicrosoftPowerbi.DatasetGatewayHealth", - "fullyQualifiedName": "MicrosoftPowerbi.DatasetGatewayHealth@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.DatasetGatewayHealth@0.3.1", "description": "Report whether each of a dataset's gateway-bound data sources is currently\nreachable.\n\nPoint this at a dataset whose refresh failed to tell whether the gateway path is\nhealthy before escalating. Stored credentials are never returned.", "parameters": [ { @@ -100,7 +100,7 @@ { "name": "GetDatasetRefreshHistory", "qualifiedName": "MicrosoftPowerbi.GetDatasetRefreshHistory", - "fullyQualifiedName": "MicrosoftPowerbi.GetDatasetRefreshHistory@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.GetDatasetRefreshHistory@0.3.1", "description": "Get the most recent refresh runs of a semantic model, with status and timing.\n\nReturns each run newest first with its status, type, start/end time, and any error.\nPower BI reports a run's status as 'Unknown' while it is still in progress or its\noutcome is not yet known, so each run also carries `is_terminal`: false while the run\nis still running (status 'Unknown'), true once it has settled ('Completed', 'Failed',\nor 'Disabled'). Re-poll this tool while the newest run is not terminal to obtain its\nfinal status.", "parameters": [ { @@ -186,7 +186,7 @@ { "name": "GetReport", "qualifiedName": "MicrosoftPowerbi.GetReport", - "fullyQualifiedName": "MicrosoftPowerbi.GetReport@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.GetReport@0.3.1", "description": "Get a single Power BI report's detail, including the semantic model (dataset) it is built on.", "parameters": [ { @@ -259,7 +259,7 @@ { "name": "GetSchema", "qualifiedName": "MicrosoftPowerbi.GetSchema", - "fullyQualifiedName": "MicrosoftPowerbi.GetSchema@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.GetSchema@0.3.1", "description": "Get the full structure of a Power BI semantic model.\n\nReturns each table with its columns and measures and the relationships between tables,\nso a caller can compose valid DAX that references real table and column names. Each\nmeasure carries its DAX expression when the model exposes it; a read-only caller may\nnot receive measure formulas, in which case expression_available is false.", "parameters": [ { @@ -332,7 +332,7 @@ { "name": "InspectDataset", "qualifiedName": "MicrosoftPowerbi.InspectDataset", - "fullyQualifiedName": "MicrosoftPowerbi.InspectDataset@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.InspectDataset@0.3.1", "description": "Inspect one dataset in a single call: where it pulls data from, what parameters\ndrive it, when it refreshes, and its core detail (owner, storage mode, refreshable).\n\nUse this to diagnose a dataset that \"looks wrong\" without three separate calls.\nStored credentials are never returned for any data source.", "parameters": [ { @@ -405,7 +405,7 @@ { "name": "ListDatasets", "qualifiedName": "MicrosoftPowerbi.ListDatasets", - "fullyQualifiedName": "MicrosoftPowerbi.ListDatasets@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ListDatasets@0.3.1", "description": "List the Power BI semantic models (datasets) in a workspace.\n\nResults are paginated: when next_cursor is non-empty, pass it back verbatim to fetch\nthe next page.", "parameters": [ { @@ -491,7 +491,7 @@ { "name": "ListGateways", "qualifiedName": "MicrosoftPowerbi.ListGateways", - "fullyQualifiedName": "MicrosoftPowerbi.ListGateways@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ListGateways@0.3.1", "description": "List the data gateways the caller administers, with the id needed to reference\neach one.", "parameters": [], "auth": { @@ -536,7 +536,7 @@ { "name": "ListReports", "qualifiedName": "MicrosoftPowerbi.ListReports", - "fullyQualifiedName": "MicrosoftPowerbi.ListReports@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ListReports@0.3.1", "description": "List the Power BI reports in a workspace, each with the semantic model (dataset) it is built on.\n\nResults are paginated: when next_cursor is non-empty, pass it back verbatim to fetch\nthe next page.", "parameters": [ { @@ -622,7 +622,7 @@ { "name": "ListWorkspaceMembers", "qualifiedName": "MicrosoftPowerbi.ListWorkspaceMembers", - "fullyQualifiedName": "MicrosoftPowerbi.ListWorkspaceMembers@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ListWorkspaceMembers@0.3.1", "description": "List who can access a workspace and the role each principal holds, for an\naccess review.\n\nA single call returns one consistent snapshot of the page it serves, in a stable\nsorted order (by principal identifier) so pages are deterministic. The default limit\nis the maximum (50), so a definitive access review should fit in one page; when\nnext_cursor is non-empty the listing was truncated and multi-page reads are best-effort\n(membership changes between pages can skip or duplicate principals) -- the warning field\nflags this. Only what the Power BI portal itself shows for a member is returned; no\nsecrets.", "parameters": [ { @@ -708,7 +708,7 @@ { "name": "ListWorkspaces", "qualifiedName": "MicrosoftPowerbi.ListWorkspaces", - "fullyQualifiedName": "MicrosoftPowerbi.ListWorkspaces@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ListWorkspaces@0.3.1", "description": "List the Power BI workspaces (groups) the calling user can access.\n\nReturns each workspace's id and name. Results are paginated: when next_cursor is\nnon-empty, pass it back verbatim to fetch the next page.", "parameters": [ { @@ -781,7 +781,7 @@ { "name": "RunDax", "qualifiedName": "MicrosoftPowerbi.RunDax", - "fullyQualifiedName": "MicrosoftPowerbi.RunDax@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.RunDax@0.3.1", "description": "Run a DAX query against a semantic model and return the rows as structured data.\n\nThe query must be a DAX EVALUATE statement, for example:\n EVALUATE TOPN(100, 'Sales')\n EVALUATE SUMMARIZECOLUMNS('Date'[Year], \"Revenue\", SUM('Sales'[Amount]))\n EVALUATE FILTER('Product', 'Product'[Category] = \"Bikes\")\nResults are capped at max_rows and a size budget; when capped, truncated is true,\nso narrow the query rather than assume the rows are complete. columns lists the full\nprojection the query returned even when a wide row is size-trimmed, so a column may\nappear in columns without a matching key in every returned row. Invalid DAX is\nreported as a clear error.", "parameters": [ { @@ -880,7 +880,7 @@ { "name": "TriggerDatasetRefresh", "qualifiedName": "MicrosoftPowerbi.TriggerDatasetRefresh", - "fullyQualifiedName": "MicrosoftPowerbi.TriggerDatasetRefresh@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.TriggerDatasetRefresh@0.3.1", "description": "Start an on-demand refresh of a semantic model.\n\nA refresh can take a long time (minutes or more for a large model), so this\nreturns as soon as the refresh is accepted rather than waiting for it to finish.\nThe run's progress and final success or failure are recorded in the model's\nrefresh history.", "parameters": [ { @@ -953,7 +953,7 @@ { "name": "UpdateDatasetSettings", "qualifiedName": "MicrosoftPowerbi.UpdateDatasetSettings", - "fullyQualifiedName": "MicrosoftPowerbi.UpdateDatasetSettings@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.UpdateDatasetSettings@0.3.1", "description": "Repoint a dataset's parameters and/or change its refresh timing in one request.\n\nUpsert/patch semantics: only the fields supplied are applied; everything else is\nleft untouched. Setting a parameter the dataset does not define is refused with the\nlist of parameter names it actually exposes, rather than reported as a false success.\nPower BI ignores day/time edits while scheduled refresh is disabled, so set\nrefresh_enabled=true in the same call when you want new times to take effect.\nEach applied parameter is returned with the previous_value observed just before the\nwrite, so the change is auditable and the prior value can be restored. A committed\nparameter change only updates the model definition -- run trigger_dataset_refresh\nafterwards so query and report results reflect the new values.", "parameters": [ { @@ -1123,7 +1123,7 @@ { "name": "ValidateDax", "qualifiedName": "MicrosoftPowerbi.ValidateDax", - "fullyQualifiedName": "MicrosoftPowerbi.ValidateDax@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.ValidateDax@0.3.1", "description": "Check whether a DAX query is valid for a semantic model without returning its rows.\n\nReturns valid=true when the query is accepted, or valid=false with a short error\nwhen it is not. Transient, auth, and server errors are raised (not reported as\ninvalid) so the caller retries rather than rewriting valid DAX.", "parameters": [ { @@ -1209,7 +1209,7 @@ { "name": "WhoAmI", "qualifiedName": "MicrosoftPowerbi.WhoAmI", - "fullyQualifiedName": "MicrosoftPowerbi.WhoAmI@0.3.0", + "fullyQualifiedName": "MicrosoftPowerbi.WhoAmI@0.3.1", "description": "Report the Microsoft account the toolkit is acting as: id, name, UPN, and tenant.\n\nUse this to confirm which user the current connection authenticates as before\nreading or changing anything. Identity is read from the signed-in user's own Power\nBI access token (Power BI has no current-user endpoint); it is for display and\nconfirmation only, not an authorization decision, and the fields are best-effort.\nBecause identity is derived from the token's claims, it is unavailable when Microsoft\nissues an opaque or encrypted (non-JWT) access token -- Microsoft is rolling out\nencrypted access tokens for Microsoft-owned APIs -- in which case this tool fails with\na clear error while every other Power BI tool keeps working.", "parameters": [], "auth": { @@ -1255,6 +1255,7 @@ "documentationChunks": [], "customImports": [], "subPages": [], - "generatedAt": "2026-07-16T11:38:49.699Z", + "curationSourceHash": "da70ed30d9201488046d1ae1b04dc45cf6378210501e24b53236a4aa02f1ef89", + "generatedAt": "2026-08-29T11:11:25.104Z", "summary": "Microsoft Power BI toolkit for Arcade enables AI agents and developers to query, inspect, manage, and refresh Power BI semantic models, reports, workspaces, and gateways through the Power BI REST API.\n\n## Capabilities\n\n- **Workspace & access management:** List workspaces, enumerate workspace members with their roles, and identify the authenticated user identity for pre-flight checks.\n- **Report & dataset discovery:** List and retrieve reports and semantic models (datasets), including paginated browsing across large workspaces.\n- **Schema inspection & DAX execution:** Fetch full semantic model schemas (tables, columns, measures, relationships) to compose valid DAX; run `EVALUATE` queries against live data; validate DAX syntax without returning rows.\n- **Dataset diagnostics:** Inspect a dataset's data sources, parameters, refresh schedule, and owner in a single call; check gateway/data-source reachability; retrieve paginated refresh history with terminal-state tracking.\n- **Refresh & settings management:** Trigger on-demand semantic model refreshes; update dataset parameters and refresh schedules with patch semantics, with before/after audit values returned.\n- **Gateway management:** List administered data gateways and their identifiers for downstream configuration and health checks.\n\n## OAuth\n\nThis toolkit uses OAuth 2.0 delegated authentication via the **Microsoft Power BI** provider. Arcade handles the OAuth flow; see the [Microsoft Power BI auth provider docs](https://docs.arcade.dev/en/references/auth-providers/microsoft-powerbi) for setup details, required permissions, and configuration." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftsharepoint.json b/toolkit-docs-generator/data/toolkits/microsoftsharepoint.json index c66248f3b..ce6a9afd4 100644 --- a/toolkit-docs-generator/data/toolkits/microsoftsharepoint.json +++ b/toolkit-docs-generator/data/toolkits/microsoftsharepoint.json @@ -1,7 +1,7 @@ { "id": "MicrosoftSharepoint", "label": "Microsoft SharePoint", - "version": "0.2.2", + "version": "0.2.3", "description": "Arcade.dev LLM tools for Microsoft SharePoint", "metadata": { "category": "productivity", @@ -27,7 +27,7 @@ { "name": "AddWorksheet", "qualifiedName": "MicrosoftSharepoint.AddWorksheet", - "fullyQualifiedName": "MicrosoftSharepoint.AddWorksheet@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.AddWorksheet@0.2.3", "description": "Add a new worksheet to a SharePoint Excel workbook.\n\nNote: The new worksheet name may not be immediately visible to other\ntools due to a brief Graph API propagation delay (up to ~10 s). Pass\nthe returned ``session_id`` to subsequent calls that reference the new\nworksheet to mitigate this.", "parameters": [ { @@ -128,7 +128,7 @@ { "name": "CopyItem", "qualifiedName": "MicrosoftSharepoint.CopyItem", - "fullyQualifiedName": "MicrosoftSharepoint.CopyItem@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CopyItem@0.2.3", "description": "Copy a file or folder. Returns a completed item or an operation id.", "parameters": [ { @@ -228,7 +228,7 @@ { "name": "CreateFolder", "qualifiedName": "MicrosoftSharepoint.CreateFolder", - "fullyQualifiedName": "MicrosoftSharepoint.CreateFolder@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateFolder@0.2.3", "description": "Create a new folder in a SharePoint drive.", "parameters": [ { @@ -315,7 +315,7 @@ { "name": "CreatePresentation", "qualifiedName": "MicrosoftSharepoint.CreatePresentation", - "fullyQualifiedName": "MicrosoftSharepoint.CreatePresentation@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreatePresentation@0.2.3", "description": "Create a new PowerPoint presentation in a SharePoint drive.\n\nThe presentation will be created with a title slide containing the specified title.", "parameters": [ { @@ -402,7 +402,7 @@ { "name": "CreateShareLink", "qualifiedName": "MicrosoftSharepoint.CreateShareLink", - "fullyQualifiedName": "MicrosoftSharepoint.CreateShareLink@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateShareLink@0.2.3", "description": "Create a share link for a SharePoint drive item.", "parameters": [ { @@ -476,7 +476,7 @@ { "name": "CreateSlide", "qualifiedName": "MicrosoftSharepoint.CreateSlide", - "fullyQualifiedName": "MicrosoftSharepoint.CreateSlide@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateSlide@0.2.3", "description": "Append a new slide to the end of an existing PowerPoint presentation in a SharePoint drive.\n\nThe slide will be added at the end of the presentation. Both title and body\nare optional to support layouts like BLANK or TITLE_ONLY.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", "parameters": [ { @@ -599,7 +599,7 @@ { "name": "CreateTwoContentSlide", "qualifiedName": "MicrosoftSharepoint.CreateTwoContentSlide", - "fullyQualifiedName": "MicrosoftSharepoint.CreateTwoContentSlide@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateTwoContentSlide@0.2.3", "description": "Append a TWO_CONTENT slide with side-by-side content areas to a SharePoint PowerPoint.\n\nThis layout is useful for comparisons, pros/cons lists, or any content that\nbenefits from a two-column layout.\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", "parameters": [ { @@ -712,7 +712,7 @@ { "name": "CreateWordDocument", "qualifiedName": "MicrosoftSharepoint.CreateWordDocument", - "fullyQualifiedName": "MicrosoftSharepoint.CreateWordDocument@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateWordDocument@0.2.3", "description": "Create a new Word document in a SharePoint drive.\n\n4MB upload limit. Optionally include text content.", "parameters": [ { @@ -825,7 +825,7 @@ { "name": "CreateWorkbook", "qualifiedName": "MicrosoftSharepoint.CreateWorkbook", - "fullyQualifiedName": "MicrosoftSharepoint.CreateWorkbook@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.CreateWorkbook@0.2.3", "description": "Create a new Excel workbook (.xlsx) in a SharePoint drive.\n\nOnly .xlsx files are supported.", "parameters": [ { @@ -926,7 +926,7 @@ { "name": "DeleteItem", "qualifiedName": "MicrosoftSharepoint.DeleteItem", - "fullyQualifiedName": "MicrosoftSharepoint.DeleteItem@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.DeleteItem@0.2.3", "description": "Delete a file or folder from a SharePoint drive.", "parameters": [ { @@ -1000,7 +1000,7 @@ { "name": "DeleteWorksheet", "qualifiedName": "MicrosoftSharepoint.DeleteWorksheet", - "fullyQualifiedName": "MicrosoftSharepoint.DeleteWorksheet@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.DeleteWorksheet@0.2.3", "description": "Delete a worksheet from a SharePoint Excel workbook.\n\nCannot delete the last worksheet in a workbook.\n\nNote: If referencing a recently added or renamed worksheet, pass the\n``session_id`` from that operation. A brief Graph API propagation delay\n(up to ~10 s) may cause a WorksheetNotFoundError; retry with the\n``session_id`` if this occurs.", "parameters": [ { @@ -1101,7 +1101,7 @@ { "name": "GetAllSlideNotes", "qualifiedName": "MicrosoftSharepoint.GetAllSlideNotes", - "fullyQualifiedName": "MicrosoftSharepoint.GetAllSlideNotes@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetAllSlideNotes@0.2.3", "description": "Get all speaker notes from every slide in a SharePoint PowerPoint presentation.\n\nReturns notes for all slides in one call, which is more efficient than\ncalling get_slide_notes for each slide individually. Notes are returned\nin markdown format.", "parameters": [ { @@ -1175,7 +1175,7 @@ { "name": "GetCopyStatus", "qualifiedName": "MicrosoftSharepoint.GetCopyStatus", - "fullyQualifiedName": "MicrosoftSharepoint.GetCopyStatus@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetCopyStatus@0.2.3", "description": "Check status of an async copy operation using the token returned by copy_item.", "parameters": [ { @@ -1249,7 +1249,7 @@ { "name": "GetDrivesFromSite", "qualifiedName": "MicrosoftSharepoint.GetDrivesFromSite", - "fullyQualifiedName": "MicrosoftSharepoint.GetDrivesFromSite@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetDrivesFromSite@0.2.3", "description": "Retrieve drives / document libraries from a SharePoint site.\n\nIf you have a site name, it is not necessary to call Sharepoint.SearchSites first.\nYou can simply call this tool with the site name / keywords.", "parameters": [ { @@ -1310,7 +1310,7 @@ { "name": "GetItemsFromList", "qualifiedName": "MicrosoftSharepoint.GetItemsFromList", - "fullyQualifiedName": "MicrosoftSharepoint.GetItemsFromList@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetItemsFromList@0.2.3", "description": "Retrieve items from a list in a SharePoint site.\n\nNote: The Microsoft Graph API does not offer endpoints to retrieve list item attachments.\nBecause of that, the only information we can get is whether the item has attachments or not.", "parameters": [ { @@ -1384,7 +1384,7 @@ { "name": "GetListsFromSite", "qualifiedName": "MicrosoftSharepoint.GetListsFromSite", - "fullyQualifiedName": "MicrosoftSharepoint.GetListsFromSite@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetListsFromSite@0.2.3", "description": "Retrieve lists from a SharePoint site.", "parameters": [ { @@ -1445,7 +1445,7 @@ { "name": "GetPage", "qualifiedName": "MicrosoftSharepoint.GetPage", - "fullyQualifiedName": "MicrosoftSharepoint.GetPage@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetPage@0.2.3", "description": "Retrieve metadata and the contents of a page in a SharePoint site.\n\nPage content is a list of Microsoft Sharepoint web part objects, such as text, images, banners,\nbuttons, etc.\n\nIf `include_page_content` is set to False, the tool will return only the page metadata.", "parameters": [ { @@ -1532,7 +1532,7 @@ { "name": "GetPresentationAsMarkdown", "qualifiedName": "MicrosoftSharepoint.GetPresentationAsMarkdown", - "fullyQualifiedName": "MicrosoftSharepoint.GetPresentationAsMarkdown@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetPresentationAsMarkdown@0.2.3", "description": "Get the content of a PowerPoint presentation stored in a SharePoint drive as markdown.\n\nThis tool downloads the presentation and converts it to a markdown representation,\npreserving text content, tables, and chart data. Images and other media are\nrepresented as placeholders.", "parameters": [ { @@ -1606,7 +1606,7 @@ { "name": "GetSite", "qualifiedName": "MicrosoftSharepoint.GetSite", - "fullyQualifiedName": "MicrosoftSharepoint.GetSite@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetSite@0.2.3", "description": "Retrieve information about a specific SharePoint site by its ID, URL, or name.", "parameters": [ { @@ -1667,7 +1667,7 @@ { "name": "GetSlideNotes", "qualifiedName": "MicrosoftSharepoint.GetSlideNotes", - "fullyQualifiedName": "MicrosoftSharepoint.GetSlideNotes@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetSlideNotes@0.2.3", "description": "Get the speaker notes from a specific slide in a SharePoint PowerPoint presentation.\n\nSpeaker notes are returned in markdown format, preserving basic formatting\nlike bold, italic, and bullet points.", "parameters": [ { @@ -1754,7 +1754,7 @@ { "name": "GetWordDocument", "qualifiedName": "MicrosoftSharepoint.GetWordDocument", - "fullyQualifiedName": "MicrosoftSharepoint.GetWordDocument@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetWordDocument@0.2.3", "description": "Get a Word document's metadata and content from a SharePoint drive. Supports only `.docx`.\n\nReturns the document content as Markdown by default.\nReturns only metadata when metadata_only is True.", "parameters": [ { @@ -1841,7 +1841,7 @@ { "name": "GetWorkbookMetadata", "qualifiedName": "MicrosoftSharepoint.GetWorkbookMetadata", - "fullyQualifiedName": "MicrosoftSharepoint.GetWorkbookMetadata@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetWorkbookMetadata@0.2.3", "description": "Get metadata about an Excel workbook in a SharePoint drive, including worksheet list.", "parameters": [ { @@ -1929,7 +1929,7 @@ { "name": "GetWorksheetData", "qualifiedName": "MicrosoftSharepoint.GetWorksheetData", - "fullyQualifiedName": "MicrosoftSharepoint.GetWorksheetData@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.GetWorksheetData@0.2.3", "description": "Read cell values from a worksheet in a SharePoint Excel workbook.\n\nNote: If referencing a recently added or renamed worksheet, pass the\n``session_id`` from that operation. A brief Graph API propagation delay\n(up to ~10 s) may cause a WorksheetNotFoundError; retry with the\n``session_id`` if this occurs.", "parameters": [ { @@ -2082,7 +2082,7 @@ { "name": "InsertTextAtEndOfWordDocument", "qualifiedName": "MicrosoftSharepoint.InsertTextAtEndOfWordDocument", - "fullyQualifiedName": "MicrosoftSharepoint.InsertTextAtEndOfWordDocument@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.InsertTextAtEndOfWordDocument@0.2.3", "description": "Append text to the end of an existing Word document.\n\nThis tool only supports files with the `.docx` extension and enforces the 4MB limit.", "parameters": [ { @@ -2169,7 +2169,7 @@ { "name": "ListItemsInFolder", "qualifiedName": "MicrosoftSharepoint.ListItemsInFolder", - "fullyQualifiedName": "MicrosoftSharepoint.ListItemsInFolder@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.ListItemsInFolder@0.2.3", "description": "Retrieve items from a folder in a drive in a SharePoint site.\n\nNote: The Microsoft Graph API requires retrieving all items,\nincluding those skipped by offset.\nExecution time increases with higher offset values.", "parameters": [ { @@ -2269,7 +2269,7 @@ { "name": "ListPages", "qualifiedName": "MicrosoftSharepoint.ListPages", - "fullyQualifiedName": "MicrosoftSharepoint.ListPages@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.ListPages@0.2.3", "description": "Retrieve pages from a SharePoint site.\n\nThe Microsoft Graph API does not support pagination on this endpoint.", "parameters": [ { @@ -2343,7 +2343,7 @@ { "name": "ListRootItemsInDrive", "qualifiedName": "MicrosoftSharepoint.ListRootItemsInDrive", - "fullyQualifiedName": "MicrosoftSharepoint.ListRootItemsInDrive@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.ListRootItemsInDrive@0.2.3", "description": "Retrieve items from the root of a drive in a SharePoint site.\n\nNote: The Microsoft Graph API requires retrieving all items,\nincluding those skipped by offset.\nExecution time increases with higher offset values.", "parameters": [ { @@ -2430,7 +2430,7 @@ { "name": "ListSites", "qualifiedName": "MicrosoftSharepoint.ListSites", - "fullyQualifiedName": "MicrosoftSharepoint.ListSites@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.ListSites@0.2.3", "description": "List all SharePoint sites accessible to the current user.", "parameters": [ { @@ -2504,7 +2504,7 @@ { "name": "MoveItem", "qualifiedName": "MicrosoftSharepoint.MoveItem", - "fullyQualifiedName": "MicrosoftSharepoint.MoveItem@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.MoveItem@0.2.3", "description": "Move a file or folder to a new location in a SharePoint drive.", "parameters": [ { @@ -2591,7 +2591,7 @@ { "name": "RenameWorksheet", "qualifiedName": "MicrosoftSharepoint.RenameWorksheet", - "fullyQualifiedName": "MicrosoftSharepoint.RenameWorksheet@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.RenameWorksheet@0.2.3", "description": "Rename an existing worksheet in a SharePoint Excel workbook.\n\nNote: The new name may not be immediately visible to other tools due\nto a brief Graph API propagation delay (up to ~10 s). Pass the returned\n``session_id`` to subsequent calls that reference the renamed worksheet\nto mitigate this. If referencing a recently added worksheet as the source,\nthe same delay applies; retry with the ``session_id`` if a\nWorksheetNotFoundError occurs.", "parameters": [ { @@ -2705,7 +2705,7 @@ { "name": "SearchDriveItems", "qualifiedName": "MicrosoftSharepoint.SearchDriveItems", - "fullyQualifiedName": "MicrosoftSharepoint.SearchDriveItems@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.SearchDriveItems@0.2.3", "description": "Search for items in one or more Sharepoint drives.\n\nNote: When searching a single Drive and/or Folder,\nthe API must retrieve all items including those skipped by offset.\nExecution time increases with higher offset values.", "parameters": [ { @@ -2818,7 +2818,7 @@ { "name": "SearchSites", "qualifiedName": "MicrosoftSharepoint.SearchSites", - "fullyQualifiedName": "MicrosoftSharepoint.SearchSites@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.SearchSites@0.2.3", "description": "Search for SharePoint sites by name or description.\n\nIn case you need to retrieve a specific site by its name, ID or SharePoint URL, use the\n`Sharepoint.GetSite` tool instead, passing the ID, name or SharePoint URL to it.", "parameters": [ { @@ -2905,7 +2905,7 @@ { "name": "SetSlideNotes", "qualifiedName": "MicrosoftSharepoint.SetSlideNotes", - "fullyQualifiedName": "MicrosoftSharepoint.SetSlideNotes@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.SetSlideNotes@0.2.3", "description": "Set or update the speaker notes on a specific slide in a SharePoint PowerPoint.\n\nNotes can be formatted using markdown:\n- **bold** for bold text\n- *italic* for italic text\n- __underline__ for underlined text\n- Lines starting with - or * become bullet points\n- Indent with spaces for nested bullets\n\nFor presentations larger than 4 MB, the upload uses a resumable session.\nConcurrency protection (etag check) is best-effort in that case, since\nMicrosoft Graph upload sessions do not support If-Match headers.", "parameters": [ { @@ -3005,7 +3005,7 @@ { "name": "UpdateCell", "qualifiedName": "MicrosoftSharepoint.UpdateCell", - "fullyQualifiedName": "MicrosoftSharepoint.UpdateCell@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.UpdateCell@0.2.3", "description": "Update a single cell value in a SharePoint Excel workbook.\n\nNote: If referencing a recently added or renamed worksheet, pass the\n``session_id`` from that operation. A brief Graph API propagation delay\n(up to ~10 s) may cause a WorksheetNotFoundError; retry with the\n``session_id`` if this occurs.", "parameters": [ { @@ -3145,7 +3145,7 @@ { "name": "UpdateRange", "qualifiedName": "MicrosoftSharepoint.UpdateRange", - "fullyQualifiedName": "MicrosoftSharepoint.UpdateRange@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.UpdateRange@0.2.3", "description": "Update multiple cells in a SharePoint Excel worksheet using sparse dict format.\n\nOnly specified cells are updated; unspecified cells remain unchanged.\n\nInternally, a single PATCH request is sent covering the bounding box\nof all specified cells. Cells within the box that are not in the\ninput are sent as ``null``, which the Graph API treats as \"skip\".\n\nNote: If referencing a recently added or renamed worksheet, pass the\n``session_id`` from that operation. A brief Graph API propagation delay\n(up to ~10 s) may cause a WorksheetNotFoundError; retry with the\n``session_id`` if this occurs.", "parameters": [ { @@ -3259,7 +3259,7 @@ { "name": "WhoAmI", "qualifiedName": "MicrosoftSharepoint.WhoAmI", - "fullyQualifiedName": "MicrosoftSharepoint.WhoAmI@0.2.2", + "fullyQualifiedName": "MicrosoftSharepoint.WhoAmI@0.2.3", "description": "Get information about the current user and their SharePoint environment.", "parameters": [], "auth": { @@ -3314,6 +3314,6 @@ "customImports": [], "subPages": [], "curationSourceHash": "0e004187fe9951657eb8ad54dcf4b3ba83161d1c6bb484c9e57a193eddfaffc9", - "generatedAt": "2026-07-16T11:38:45.348Z", + "generatedAt": "2026-08-29T11:11:25.133Z", "summary": "The Microsoft SharePoint toolkit integrates Arcade with Microsoft SharePoint via the Microsoft Graph API, enabling LLMs to read, write, and manage SharePoint content programmatically.\n\n## Capabilities\n\n- **Site & drive navigation** — list, search, and retrieve sites, drives/document libraries, lists, list items, folders, and root drive contents; look up the current user's SharePoint environment.\n- **File & folder management** — create folders, copy, move, rename, and delete files or folders; check async copy operation status; generate share links for drive items.\n- **Excel workbook editing** — create workbooks, add/rename/delete worksheets, read cell ranges, update individual cells or sparse multi-cell ranges, and retrieve workbook metadata. Propagation-delay mitigations via `session_id` are built in.\n- **PowerPoint authoring** — create presentations with a title slide, append standard or two-column-layout slides, get/set/update speaker notes per slide or across all slides, and export presentations to Markdown (preserving text, tables, and chart data).\n- **Word document handling** — create `.docx` files with optional initial content, retrieve document content as Markdown or metadata-only, and append text to existing documents (4 MB limit).\n- **SharePoint pages & lists** — list and retrieve site pages (with full web-part content or metadata-only), and read items from SharePoint lists.\n\n## OAuth\n\nThis toolkit authenticates via **Microsoft** OAuth 2.0. See the [Microsoft auth provider docs](https://docs.arcade.dev/en/references/auth-providers/microsoft) for configuration details, required permissions, and setup steps." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/microsoftteams.json b/toolkit-docs-generator/data/toolkits/microsoftteams.json index a576df963..1bcfa9785 100644 --- a/toolkit-docs-generator/data/toolkits/microsoftteams.json +++ b/toolkit-docs-generator/data/toolkits/microsoftteams.json @@ -1,7 +1,7 @@ { "id": "MicrosoftTeams", "label": "Microsoft Teams", - "version": "0.6.3", + "version": "0.6.5", "description": "Arcade.dev LLM tools for Microsoft Teams", "metadata": { "category": "social", @@ -37,7 +37,7 @@ { "name": "CreateChat", "qualifiedName": "MicrosoftTeams.CreateChat", - "fullyQualifiedName": "MicrosoftTeams.CreateChat@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.CreateChat@0.6.5", "description": "Creates a Microsoft Teams chat.\n\nIf the chat already exists with the specified members, the MS Graph API will return the\nexisting chat.\n\nProvide any combination of user_ids and/or user_names. When available, prefer providing\nuser_ids for optimal performance.", "parameters": [ { @@ -121,7 +121,7 @@ { "name": "GetChannelMessageReplies", "qualifiedName": "MicrosoftTeams.GetChannelMessageReplies", - "fullyQualifiedName": "MicrosoftTeams.GetChannelMessageReplies@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetChannelMessageReplies@0.6.5", "description": "Retrieves the replies to a Microsoft Teams channel message.", "parameters": [ { @@ -209,7 +209,7 @@ { "name": "GetChannelMessages", "qualifiedName": "MicrosoftTeams.GetChannelMessages", - "fullyQualifiedName": "MicrosoftTeams.GetChannelMessages@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetChannelMessages@0.6.5", "description": "Retrieves the messages in a Microsoft Teams channel.\n\nThe Microsoft Graph API does not support pagination for this endpoint.", "parameters": [ { @@ -310,7 +310,7 @@ { "name": "GetChannelMetadata", "qualifiedName": "MicrosoftTeams.GetChannelMetadata", - "fullyQualifiedName": "MicrosoftTeams.GetChannelMetadata@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetChannelMetadata@0.6.5", "description": "Retrieves metadata about a Microsoft Teams channel and its members.\n\nProvide either a channel_id or channel_name, not both. When available, prefer providing a\nchannel_id for optimal performance.\n\nThe Microsoft Graph API returns only up to the first 999 members in the channel.\n\nThis tool does not return messages exchanged in the channel. To retrieve channel messages,\nuse the `Teams.GetChannelMessages` tool.\n\nIt is not necessary to call `Teams.ListTeams` before calling this tool. If the user does not\nprovide a team_id_or_name, the tool will try to find a unique team to use.", "parameters": [ { @@ -398,8 +398,8 @@ { "name": "GetChatMessageById", "qualifiedName": "MicrosoftTeams.GetChatMessageById", - "fullyQualifiedName": "MicrosoftTeams.GetChatMessageById@0.6.3", - "description": "Retrieves a Microsoft Teams chat message.", + "fullyQualifiedName": "MicrosoftTeams.GetChatMessageById@0.6.5", + "description": "Retrieves a Microsoft Teams chat message.\n\nWhen user_names is provided instead of chat_id, this tool also searches the caller's People\n(contacts and interaction history) to resolve the chat.", "parameters": [ { "name": "message_id", @@ -508,7 +508,7 @@ { "name": "GetChatMessages", "qualifiedName": "MicrosoftTeams.GetChatMessages", - "fullyQualifiedName": "MicrosoftTeams.GetChatMessages@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetChatMessages@0.6.5", "description": "Retrieves messages from a Microsoft Teams chat (individual or group).\n\nProvide one of chat_id OR any combination of user_ids and/or user_names. When available, prefer\nproviding a chat_id or user_ids for optimal performance.\n\nIf the user provides user name(s), DO NOT CALL THE `Teams.SearchUsers` or `Teams.SearchPeople`\ntools first. Instead, provide the user name(s) directly to this tool through the `user_names`\nargument. It is not necessary to provide the currently signed in user's name/id, so do not call\n`Teams.GetSignedInUser` before calling this tool.\n\nMessages will be sorted in descending order by the messages' `created_datetime` field.\n\nThe Microsoft Teams API does not support pagination for this tool.", "parameters": [ { @@ -645,8 +645,8 @@ { "name": "GetChatMetadata", "qualifiedName": "MicrosoftTeams.GetChatMetadata", - "fullyQualifiedName": "MicrosoftTeams.GetChatMetadata@0.6.3", - "description": "Retrieves metadata about a Microsoft Teams chat.\n\nProvide exactly one of chat_id or user_ids/user_names. When available, prefer providing a\nchat_id or user_ids for optimal performance.\n\nIf multiple roup chats exist with those exact members, returns the most recently updated one.\n\nMax 20 DIFFERENT users can be provided in user_ids/user_names.\n\nThis tool DOES NOT return messages in a chat. Use the `Teams.GetChatMessages` tool to get\nchat messages.", + "fullyQualifiedName": "MicrosoftTeams.GetChatMetadata@0.6.5", + "description": "Retrieves metadata about a Microsoft Teams chat.\n\nProvide exactly one of chat_id or user_ids/user_names. When available, prefer providing a\nchat_id or user_ids for optimal performance.\n\nIf multiple roup chats exist with those exact members, returns the most recently updated one.\n\nMax 20 DIFFERENT users can be provided in user_ids/user_names.\n\nThis tool DOES NOT return messages in a chat. Use the `Teams.GetChatMessages` tool to get\nchat messages.\n\nWhen user_names is provided instead of chat_id, this tool also searches the caller's People\n(contacts and interaction history) to resolve the chat.", "parameters": [ { "name": "chat_id", @@ -744,7 +744,7 @@ { "name": "GetSignedInUser", "qualifiedName": "MicrosoftTeams.GetSignedInUser", - "fullyQualifiedName": "MicrosoftTeams.GetSignedInUser@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetSignedInUser@0.6.5", "description": "Get the user currently signed in Microsoft Teams.\n\nThis tool is not necessary to call before calling other tools.", "parameters": [], "auth": { @@ -789,7 +789,7 @@ { "name": "GetTeam", "qualifiedName": "MicrosoftTeams.GetTeam", - "fullyQualifiedName": "MicrosoftTeams.GetTeam@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.GetTeam@0.6.5", "description": "Retrieves metadata about a team in Microsoft Teams.\n\nProvide one of team_id OR team_name, never both. When available, prefer providing a team_id for\noptimal performance.\n\nIf team_id nor team_name are provided: 1) if the user has a single team, the tool will retrieve\nit; 2) if the user has multiple teams, an error will be returned with a list of all teams to\npick from.", "parameters": [ { @@ -862,7 +862,7 @@ { "name": "ListChannels", "qualifiedName": "MicrosoftTeams.ListChannels", - "fullyQualifiedName": "MicrosoftTeams.ListChannels@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ListChannels@0.6.5", "description": "Lists channels in Microsoft Teams (including shared incoming channels).\n\nThis tool does not return messages nor members in the channels. To retrieve channel messages,\nuse the `Teams.GetChannelMessages` tool. To retrieve channel members, use the\n`Teams.ListChannelMembers` tool.", "parameters": [ { @@ -949,7 +949,7 @@ { "name": "ListChats", "qualifiedName": "MicrosoftTeams.ListChats", - "fullyQualifiedName": "MicrosoftTeams.ListChats@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ListChats@0.6.5", "description": "List the Microsoft Teams chats to which the current user is a member of.", "parameters": [ { @@ -1022,7 +1022,7 @@ { "name": "ListTeamMembers", "qualifiedName": "MicrosoftTeams.ListTeamMembers", - "fullyQualifiedName": "MicrosoftTeams.ListTeamMembers@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ListTeamMembers@0.6.5", "description": "Lists the members of a team in Microsoft Teams.\n\nProvide one of team_id OR team_name, never both. When available, prefer providing a team_id for\noptimal performance.\n\nIf team_id nor team_name are provided: 1) if the user has a single team, the tool will use it;\n2) if the user has multiple teams, an error will be returned with a list of all teams to pick\nfrom.\n\nThe Microsoft Graph API returns only up to the first 999 members.", "parameters": [ { @@ -1122,7 +1122,7 @@ { "name": "ListTeams", "qualifiedName": "MicrosoftTeams.ListTeams", - "fullyQualifiedName": "MicrosoftTeams.ListTeams@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ListTeams@0.6.5", "description": "Lists the teams the current user is associated with in Microsoft Teams.", "parameters": [ { @@ -1185,7 +1185,7 @@ { "name": "ListUsers", "qualifiedName": "MicrosoftTeams.ListUsers", - "fullyQualifiedName": "MicrosoftTeams.ListUsers@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ListUsers@0.6.5", "description": "Lists the users in the Microsoft Teams tenant.\n\nThe Microsoft Graph API returns only up to the first 999 users.", "parameters": [ { @@ -1259,7 +1259,7 @@ { "name": "ReplyToChannelMessage", "qualifiedName": "MicrosoftTeams.ReplyToChannelMessage", - "fullyQualifiedName": "MicrosoftTeams.ReplyToChannelMessage@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ReplyToChannelMessage@0.6.5", "description": "Sends a reply to a Microsoft Teams channel message.\n\nWhen available, prefer providing a channel_id for optimal performance.\n\nIt is not necessary to call `Teams.ListTeams` before calling this tool. If the user does not\nprovide a team_id_or_name, the tool will try to find a unique team to use.", "parameters": [ { @@ -1360,7 +1360,7 @@ { "name": "ReplyToChatMessage", "qualifiedName": "MicrosoftTeams.ReplyToChatMessage", - "fullyQualifiedName": "MicrosoftTeams.ReplyToChatMessage@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.ReplyToChatMessage@0.6.5", "description": "Sends a reply to a Microsoft Teams chat message.\n\nProvide exactly one of chat_id or user_ids/user_names. When available, prefer providing a\nchat_id or user_ids for optimal performance.\n\nIf the user provides user name(s), DO NOT CALL THE `Teams.SearchUsers` or `Teams.SearchPeople`\ntools first. Instead, provide the user name(s) directly to this tool through the `user_names`\nargument. It is not necessary to provide the currently signed in user's name/id, so do not call\n`Teams.GetSignedInUser` before calling this tool either.", "parameters": [ { @@ -1485,7 +1485,7 @@ { "name": "SearchChannels", "qualifiedName": "MicrosoftTeams.SearchChannels", - "fullyQualifiedName": "MicrosoftTeams.SearchChannels@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchChannels@0.6.5", "description": "Searches for channels in a given Microsoft Teams team.", "parameters": [ { @@ -1606,7 +1606,7 @@ { "name": "SearchMessages", "qualifiedName": "MicrosoftTeams.SearchMessages", - "fullyQualifiedName": "MicrosoftTeams.SearchMessages@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchMessages@0.6.5", "description": "Searches for messages across Microsoft Teams chats and channels.\n\nNote: the Microsoft Graph API search is not strongly consistent. Recent messages may not be\nincluded in search results.", "parameters": [ { @@ -1694,7 +1694,7 @@ { "name": "SearchPeople", "qualifiedName": "MicrosoftTeams.SearchPeople", - "fullyQualifiedName": "MicrosoftTeams.SearchPeople@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchPeople@0.6.5", "description": "Searches for people the user has interacted with in Microsoft Teams and other 365 products.\n\nThis tool only returns users that the currently signed in user has interacted with. It may also\ninclude people that are part of external tenants/organizations. If you need to retrieve users\nthat may not have interacted with the current user and/or that are exclusively part of the same\ntenant, use the `Teams.SearchUsers` tool instead.", "parameters": [ { @@ -1801,7 +1801,7 @@ { "name": "SearchTeamMembers", "qualifiedName": "MicrosoftTeams.SearchTeamMembers", - "fullyQualifiedName": "MicrosoftTeams.SearchTeamMembers@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchTeamMembers@0.6.5", "description": "Searches for members of a team in Microsoft Teams.\n\nProvide one of team_id OR team_name, never both. When available, prefer providing a team_id for\noptimal performance.\n\nIf team_id nor team_name are provided: 1) if the user has a single team, the tool will use it;\n2) if the user has multiple teams, an error will be raised with a list of available teams to\npick from.\n\nThe Microsoft Graph API returns only up to the first 999 members of a team.", "parameters": [ { @@ -1914,7 +1914,7 @@ { "name": "SearchTeams", "qualifiedName": "MicrosoftTeams.SearchTeams", - "fullyQualifiedName": "MicrosoftTeams.SearchTeams@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchTeams@0.6.5", "description": "Searches for teams available to the current user in Microsoft Teams.", "parameters": [ { @@ -2000,7 +2000,7 @@ { "name": "SearchUsers", "qualifiedName": "MicrosoftTeams.SearchUsers", - "fullyQualifiedName": "MicrosoftTeams.SearchUsers@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SearchUsers@0.6.5", "description": "Searches for users in the Microsoft Teams tenant.\n\nThis tool only return users that are directly linked to the tenant the current signed in user\nis a member of. If you need to retrieve users that have interacted with the current user but\nare from external tenants/organizations, use `Teams.SearchPeople`, instead.\n\nThe Microsoft Graph API returns only up to the first 999 users.", "parameters": [ { @@ -2108,7 +2108,7 @@ { "name": "SendMessageToChannel", "qualifiedName": "MicrosoftTeams.SendMessageToChannel", - "fullyQualifiedName": "MicrosoftTeams.SendMessageToChannel@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SendMessageToChannel@0.6.5", "description": "Sends a message to a Microsoft Teams channel.\n\nWhen available, prefer providing a channel_id for optimal performance.\n\nIt is not necessary to call `Teams.ListTeams` before calling this tool. If the user does not\nprovide a team_id_or_name, the tool will try to find a unique team to use.", "parameters": [ { @@ -2196,7 +2196,7 @@ { "name": "SendMessageToChat", "qualifiedName": "MicrosoftTeams.SendMessageToChat", - "fullyQualifiedName": "MicrosoftTeams.SendMessageToChat@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.SendMessageToChat@0.6.5", "description": "Sends a message to a Microsoft Teams chat.\n\nProvide exactly one of chat_id or user_ids/user_names. When available, prefer providing a\nchat_id or user_ids for optimal performance.\n\nIf the user provides user name(s), DO NOT CALL THE `Teams.SearchUsers` or `Teams.SearchPeople`\ntools first. Instead, provide the user name(s) directly to this tool through the `user_names`\nargument. It is not necessary to provide the currently signed in user's name/id, so do not call\n`Teams.GetSignedInUser` before calling this tool either.", "parameters": [ { @@ -2307,7 +2307,7 @@ { "name": "WhoAmI", "qualifiedName": "MicrosoftTeams.WhoAmI", - "fullyQualifiedName": "MicrosoftTeams.WhoAmI@0.6.3", + "fullyQualifiedName": "MicrosoftTeams.WhoAmI@0.6.5", "description": "Get information about the current user and their Microsoft Teams environment.", "parameters": [], "auth": { @@ -2361,6 +2361,6 @@ "customImports": [], "subPages": [], "curationSourceHash": "232f9052dc42ba69f3acd3413e511023d44d2c48e2ea1933c7b85510c701770c", - "generatedAt": "2026-07-16T11:38:45.354Z", - "summary": "## Microsoft Teams Toolkit\n\nThe Microsoft Teams toolkit provides Arcade LLM tools for interacting with Microsoft Teams via the Microsoft Graph API, enabling agents to read and send messages, manage chats and channels, and look up users and teams.\n\n## Capabilities\n\n- **Messaging — chats:** Create chats, retrieve chat metadata and messages, send messages, and reply to messages in one-on-one or group chats; addressable by chat ID or user names/IDs.\n- **Messaging — channels:** Retrieve channel messages and their replies, send messages to channels, and reply to channel messages; addressable by channel ID or name.\n- **Chat & channel discovery:** List all chats the current user belongs to, list channels within a team (including shared incoming channels), and search for channels by name.\n- **Team & member management:** List teams the user belongs to, retrieve team metadata, list or search team members (up to 999 per Graph API limit), and list all tenant users.\n- **User & people search:** Search users within the signed-in user's tenant (`SearchUsers`), search people the user has previously interacted with across Microsoft 365 — including external tenants (`SearchPeople`), and retrieve the currently signed-in user's profile.\n- **Cross-scope search:** Search messages across chats and channels tenant-wide (note: Graph API search is not strongly consistent; very recent messages may be absent).\n\n## OAuth\n\nThis toolkit uses OAuth 2.0 via Microsoft (Entra ID / Azure AD). See the [Arcade Microsoft auth provider docs](https://docs.arcade.dev/en/references/auth-providers/microsoft) for setup details, required permissions, and configuration." + "generatedAt": "2026-08-29T11:11:25.113Z", + "summary": "Arcade's Microsoft Teams toolkit provides 25 LLM-callable tools for interacting with Microsoft Teams via the Microsoft Graph API, enabling agents to read and write messages, manage chats and channels, and look up users and teams.\n\n## Capabilities\n\n- **Messaging — chats:** Send, reply to, and retrieve messages in 1:1 and group chats; create new chats (deduplicating against existing ones).\n- **Messaging — channels:** Send messages and replies to team channels; retrieve channel messages and threaded replies.\n- **Chat & channel metadata:** Fetch metadata (members, settings, last activity) for chats and channels; list all chats the signed-in user belongs to.\n- **Team & member management:** List, get, and search teams the user is associated with; list and search team members (up to the Graph API's 999-member cap).\n- **User & people search:** Search tenant users (`SearchUsers`), interaction-history contacts including external-tenant contacts (`SearchPeople`), and the full tenant user directory (`ListUsers`); resolve identities by name or ID throughout all tools.\n- **Identity & context:** Retrieve the signed-in user's profile and Teams environment context (`WhoAmI`, `GetSignedInUser`); cross-workspace message search with eventual-consistency caveats.\n\n## OAuth\n\nThis toolkit authenticates via OAuth 2.0 with **Microsoft** as the identity provider. Arcade manages the OAuth flow; no credentials need to be handled manually. See the [Microsoft auth provider docs](https://docs.arcade.dev/en/references/auth-providers/microsoft) for configuration details." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/pagerduty.json b/toolkit-docs-generator/data/toolkits/pagerduty.json index 3561afbdf..b89659f97 100644 --- a/toolkit-docs-generator/data/toolkits/pagerduty.json +++ b/toolkit-docs-generator/data/toolkits/pagerduty.json @@ -1,7 +1,7 @@ { "id": "Pagerduty", "label": "PagerDuty", - "version": "0.3.0", + "version": "0.4.0", "description": "Arcade tools designed for LLMs to interact with PagerDuty", "metadata": { "category": "development", @@ -16,13 +16,22 @@ "auth": { "type": "oauth2", "providerId": "pagerduty", - "allScopes": [] + "allScopes": [ + "escalation_policies.read", + "incidents.read", + "oncalls.read", + "schedules.read", + "services.read", + "teams.read", + "users.read", + "users:contact_methods.read" + ] }, "tools": [ { "name": "GetEscalationPolicy", "qualifiedName": "Pagerduty.GetEscalationPolicy", - "fullyQualifiedName": "Pagerduty.GetEscalationPolicy@0.3.0", + "fullyQualifiedName": "Pagerduty.GetEscalationPolicy@0.4.0", "description": "Get a single escalation policy by ID.", "parameters": [ { @@ -37,7 +46,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "escalation_policies.read" + ] }, "secrets": [], "secretsInfo": [], @@ -50,7 +61,7 @@ "toolName": "Pagerduty.GetEscalationPolicy", "parameters": { "escalation_policy_id": { - "value": "E123456", + "value": "P1ABC23", "type": "string", "required": true } @@ -80,7 +91,7 @@ { "name": "GetIncident", "qualifiedName": "Pagerduty.GetIncident", - "fullyQualifiedName": "Pagerduty.GetIncident@0.3.0", + "fullyQualifiedName": "Pagerduty.GetIncident@0.4.0", "description": "Get a single incident by ID.", "parameters": [ { @@ -95,7 +106,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "incidents.read" + ] }, "secrets": [], "secretsInfo": [], @@ -108,7 +121,7 @@ "toolName": "Pagerduty.GetIncident", "parameters": { "incident_id": { - "value": "P123456", + "value": "P1ABC23", "type": "string", "required": true } @@ -138,7 +151,7 @@ { "name": "GetService", "qualifiedName": "Pagerduty.GetService", - "fullyQualifiedName": "Pagerduty.GetService@0.3.0", + "fullyQualifiedName": "Pagerduty.GetService@0.4.0", "description": "Get a single service by ID.", "parameters": [ { @@ -153,7 +166,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "services.read" + ] }, "secrets": [], "secretsInfo": [], @@ -166,7 +181,7 @@ "toolName": "Pagerduty.GetService", "parameters": { "service_id": { - "value": "PABC123456", + "value": "P1ABC23", "type": "string", "required": true } @@ -196,7 +211,7 @@ { "name": "GetTeam", "qualifiedName": "Pagerduty.GetTeam", - "fullyQualifiedName": "Pagerduty.GetTeam@0.3.0", + "fullyQualifiedName": "Pagerduty.GetTeam@0.4.0", "description": "Get a single team by ID including members and linked resources.", "parameters": [ { @@ -211,7 +226,12 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "teams.read", + "users.read", + "escalation_policies.read", + "services.read" + ] }, "secrets": [], "secretsInfo": [], @@ -224,7 +244,7 @@ "toolName": "Pagerduty.GetTeam", "parameters": { "team_id": { - "value": "T12345", + "value": "P1ABC23", "type": "string", "required": true } @@ -254,7 +274,7 @@ { "name": "ListEscalationPolicies", "qualifiedName": "Pagerduty.ListEscalationPolicies", - "fullyQualifiedName": "Pagerduty.ListEscalationPolicies@0.3.0", + "fullyQualifiedName": "Pagerduty.ListEscalationPolicies@0.4.0", "description": "List escalation policies.", "parameters": [ { @@ -277,7 +297,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "escalation_policies.read" + ] }, "secrets": [], "secretsInfo": [], @@ -290,12 +312,12 @@ "toolName": "Pagerduty.ListEscalationPolicies", "parameters": { "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false } @@ -325,7 +347,7 @@ { "name": "ListIncidents", "qualifiedName": "Pagerduty.ListIncidents", - "fullyQualifiedName": "Pagerduty.ListIncidents@0.3.0", + "fullyQualifiedName": "Pagerduty.ListIncidents@0.4.0", "description": "List incidents with optional status, urgency, service, team, and time filters.", "parameters": [ { @@ -405,7 +427,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "incidents.read" + ] }, "secrets": [], "secretsInfo": [], @@ -429,37 +453,37 @@ }, "service_ids": { "value": [ - "abc123", - "def456" + "P1ABC23", + "Q4DEF56" ], "type": "array", "required": false }, "team_ids": { "value": [ - "team1", - "team2" + "T1GHI78", + "T2JKL90" ], "type": "array", "required": false }, "since": { - "value": "2023-10-01T00:00:00Z", + "value": "2024-01-01T00:00:00Z", "type": "string", "required": false }, "until": { - "value": "2023-10-31T23:59:59Z", + "value": "2024-01-31T23:59:59Z", "type": "string", "required": false }, "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false } @@ -489,7 +513,7 @@ { "name": "ListLogEntries", "qualifiedName": "Pagerduty.ListLogEntries", - "fullyQualifiedName": "Pagerduty.ListLogEntries@0.3.0", + "fullyQualifiedName": "Pagerduty.ListLogEntries@0.4.0", "description": "List log entries (activity feed) showing recent incident events.\n\nReturns events like incident triggers, acknowledgments, escalations,\nand resolutions across the account.", "parameters": [ { @@ -553,7 +577,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "incidents.read" + ] }, "secrets": [], "secretsInfo": [], @@ -566,19 +592,19 @@ "toolName": "Pagerduty.ListLogEntries", "parameters": { "since": { - "value": "2023-10-01T00:00:00Z", + "value": "2024-03-01T00:00:00Z", "type": "string", "required": false }, "until": { - "value": "2023-10-31T23:59:59Z", + "value": "2024-03-15T23:59:59Z", "type": "string", "required": false }, "team_ids": { "value": [ - "team_1", - "team_2" + "T1A2B3C", + "T4D5E6F" ], "type": "array", "required": false @@ -589,17 +615,17 @@ "required": false }, "is_overview": { - "value": false, + "value": true, "type": "boolean", "required": false }, "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false } @@ -629,7 +655,7 @@ { "name": "ListOncalls", "qualifiedName": "Pagerduty.ListOncalls", - "fullyQualifiedName": "Pagerduty.ListOncalls@0.3.0", + "fullyQualifiedName": "Pagerduty.ListOncalls@0.4.0", "description": "List on-call entries with optional filters.", "parameters": [ { @@ -703,7 +729,11 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "oncalls.read", + "schedules.read", + "escalation_policies.read" + ] }, "secrets": [], "secretsInfo": [], @@ -717,23 +747,24 @@ "parameters": { "schedule_ids": { "value": [ - "PABC123", - "PDEF456" + "P1A2B3C", + "P4D5E6F" ], "type": "array", "required": false }, "escalation_policy_ids": { "value": [ - "EPLN789" + "PG7H8I9", + "PJ0K1L2" ], "type": "array", "required": false }, "team_ids": { "value": [ - "TXYZ001", - "TXYZ002" + "PM3N4O5", + "PP6Q7R8" ], "type": "array", "required": false @@ -744,22 +775,22 @@ "required": false }, "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false }, "since": { - "value": "2023-10-01T00:00:00Z", + "value": "2024-01-15T00:00:00Z", "type": "string", "required": false }, "until": { - "value": "2023-10-31T23:59:59Z", + "value": "2024-01-22T23:59:59Z", "type": "string", "required": false } @@ -789,7 +820,7 @@ { "name": "ListSchedules", "qualifiedName": "Pagerduty.ListSchedules", - "fullyQualifiedName": "Pagerduty.ListSchedules@0.3.0", + "fullyQualifiedName": "Pagerduty.ListSchedules@0.4.0", "description": "List schedules.", "parameters": [ { @@ -820,7 +851,10 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "schedules.read", + "oncalls.read" + ] }, "secrets": [], "secretsInfo": [], @@ -833,12 +867,12 @@ "toolName": "Pagerduty.ListSchedules", "parameters": { "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false }, @@ -873,7 +907,7 @@ { "name": "ListServices", "qualifiedName": "Pagerduty.ListServices", - "fullyQualifiedName": "Pagerduty.ListServices@0.3.0", + "fullyQualifiedName": "Pagerduty.ListServices@0.4.0", "description": "List services with optional name search.", "parameters": [ { @@ -904,7 +938,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "services.read" + ] }, "secrets": [], "secretsInfo": [], @@ -917,7 +953,7 @@ "toolName": "Pagerduty.ListServices", "parameters": { "query": { - "value": "incident response", + "value": "payment", "type": "string", "required": false }, @@ -927,7 +963,7 @@ "required": false }, "offset": { - "value": 10, + "value": 50, "type": "integer", "required": false } @@ -957,7 +993,7 @@ { "name": "ListTeams", "qualifiedName": "Pagerduty.ListTeams", - "fullyQualifiedName": "Pagerduty.ListTeams@0.3.0", + "fullyQualifiedName": "Pagerduty.ListTeams@0.4.0", "description": "List teams.", "parameters": [ { @@ -980,7 +1016,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "teams.read" + ] }, "secrets": [], "secretsInfo": [], @@ -993,12 +1031,12 @@ "toolName": "Pagerduty.ListTeams", "parameters": { "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false } @@ -1028,7 +1066,7 @@ { "name": "ListUsers", "qualifiedName": "Pagerduty.ListUsers", - "fullyQualifiedName": "Pagerduty.ListUsers@0.3.0", + "fullyQualifiedName": "Pagerduty.ListUsers@0.4.0", "description": "List users.", "parameters": [ { @@ -1051,7 +1089,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -1064,12 +1104,12 @@ "toolName": "Pagerduty.ListUsers", "parameters": { "limit": { - "value": 20, + "value": 25, "type": "integer", "required": false }, "offset": { - "value": 5, + "value": 50, "type": "integer", "required": false } @@ -1099,7 +1139,7 @@ { "name": "SearchUsers", "qualifiedName": "Pagerduty.SearchUsers", - "fullyQualifiedName": "Pagerduty.SearchUsers@0.3.0", + "fullyQualifiedName": "Pagerduty.SearchUsers@0.4.0", "description": "Search users using local fuzzy matching on name/email.", "parameters": [ { @@ -1122,7 +1162,9 @@ "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "users.read" + ] }, "secrets": [], "secretsInfo": [], @@ -1170,13 +1212,18 @@ { "name": "Whoami", "qualifiedName": "Pagerduty.Whoami", - "fullyQualifiedName": "Pagerduty.Whoami@0.3.0", + "fullyQualifiedName": "Pagerduty.Whoami@0.4.0", "description": "Get the authenticated PagerDuty user's profile with contact and notification summaries.", "parameters": [], "auth": { "providerId": "pagerduty", "providerType": "oauth2", - "scopes": [] + "scopes": [ + "users.read", + "users:contact_methods.read", + "teams.read", + "oncalls.read" + ] }, "secrets": [], "secretsInfo": [], @@ -1233,6 +1280,9 @@ ], "customImports": [], "subPages": [], - "generatedAt": "2026-03-09T18:37:58.749Z", - "summary": "PagerDuty Arcade toolkit lets LLMs interact with PagerDuty to query incidents, schedules, services, teams, and users. It enables programmatic inspection of incident state, activity feeds, on-call rosters, and configuration objects for automated diagnostics and workflow orchestration.\n\n**Capabilities**\n\n- Unified read access to incident lifecycle and activity feeds (triggers, acknowledgements, escalations, resolutions).\n- Query and filter lists (incidents, on-calls, schedules, services, teams) with time, urgency, and search parameters.\n- Retrieve configuration and relationship context (escalation policies, services, team members) and the authenticated user profile.\n- Search and resolve users and on-call ownership to support routing, notification, and investigation logic.\n\n**OAuth**\n\n- Provider: pagerduty\n- Scopes: None (uses the authenticated user's PagerDuty token; ensure the token has the necessary account permissions)" + "curationSourceHash": "ecca6fc2619696ea380f519849bebe4526ecb30d6a540db167d609a2efcbaefb", + "generatedAt": "2026-08-29T11:11:28.602Z", + "summary": "PagerDuty Arcade toolkit lets LLMs interact with PagerDuty to query incidents, schedules, services, teams, and users. It enables programmatic inspection of incident state, activity feeds, on-call rosters, and configuration objects for automated diagnostics and workflow orchestration.\n\n**Capabilities**\n\n- Unified read access to incident lifecycle and activity feeds (triggers, acknowledgements, escalations, resolutions).\n- Query and filter lists (incidents, on-calls, schedules, services, teams) with time, urgency, and search parameters.\n- Retrieve configuration and relationship context (escalation policies, services, team members) and the authenticated user profile.\n- Search and resolve users and on-call ownership to support routing, notification, and investigation logic.\n\n**OAuth**\n\n- Provider: pagerduty\n- Scopes: None (uses the authenticated user's PagerDuty token; ensure the token has the necessary account permissions)", + "summaryStale": true, + "summaryStaleReason": "llm_generation_failed" } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/snowflake.json b/toolkit-docs-generator/data/toolkits/snowflake.json index 93c1f6025..3b249c475 100644 --- a/toolkit-docs-generator/data/toolkits/snowflake.json +++ b/toolkit-docs-generator/data/toolkits/snowflake.json @@ -1,7 +1,7 @@ { "id": "Snowflake", "label": "Snowflake", - "version": "0.1.0", + "version": "0.1.2", "description": "Tools to query and explore Snowflake with per-user, per-role access", "metadata": { "category": "databases", @@ -24,7 +24,7 @@ { "name": "DiscoverDatabases", "qualifiedName": "Snowflake.DiscoverDatabases", - "fullyQualifiedName": "Snowflake.DiscoverDatabases@0.1.0", + "fullyQualifiedName": "Snowflake.DiscoverDatabases@0.1.2", "description": "List the databases your role can access, newest-created first.\n\nSnowflake returns only databases your current role is granted, so this is\nalready a per-user answer. Take a `name` and use it to list that database's\nschemas. Use `name_pattern` to filter server-side rather than paging the\nwhole list.", "parameters": [ { @@ -114,7 +114,7 @@ { "name": "DiscoverSchemas", "qualifiedName": "Snowflake.DiscoverSchemas", - "fullyQualifiedName": "Snowflake.DiscoverSchemas@0.1.0", + "fullyQualifiedName": "Snowflake.DiscoverSchemas@0.1.2", "description": "List the schemas in a database that your role can access.\n\nList the databases first to get a valid `database`. Then take a schema\n`name` and list that schema's tables.", "parameters": [ { @@ -217,7 +217,7 @@ { "name": "DiscoverTables", "qualifiedName": "Snowflake.DiscoverTables", - "fullyQualifiedName": "Snowflake.DiscoverTables@0.1.0", + "fullyQualifiedName": "Snowflake.DiscoverTables@0.1.2", "description": "List the tables and views in a schema that your role can query.\n\nList the schemas first to get a valid `database` and `schema_name`, then\nload a table's columns before querying it.\n\nEach row's `kind` is TABLE, VIEW, MATERIALIZED VIEW, or SEMANTIC VIEW. A\nSEMANTIC VIEW cannot be read with an ordinary SELECT: it needs Snowflake's\nSEMANTIC_VIEW(...) syntax, which this toolkit does not support, so skip\nthose when choosing something to query.", "parameters": [ { @@ -333,7 +333,7 @@ { "name": "DiscoverWarehouses", "qualifiedName": "Snowflake.DiscoverWarehouses", - "fullyQualifiedName": "Snowflake.DiscoverWarehouses@0.1.0", + "fullyQualifiedName": "Snowflake.DiscoverWarehouses@0.1.2", "description": "List the warehouses your role can run queries on.\n\nAn account usually has several, and Snowflake returns only the ones your\ncurrent role is granted, so this is already a per-user answer.\n\nYou only need this when a query has no warehouse to run on, either because\nyou have no default or because you want a different one. `size` is the cost\nsignal: prefer the smallest warehouse that fits the query. A SUSPENDED\nwarehouse is still usable, since Snowflake resumes it on use by default.", "parameters": [ { @@ -423,7 +423,7 @@ { "name": "ExecuteSelectQuery", "qualifiedName": "Snowflake.ExecuteSelectQuery", - "fullyQualifiedName": "Snowflake.ExecuteSelectQuery@0.1.0", + "fullyQualifiedName": "Snowflake.ExecuteSelectQuery@0.1.2", "description": "Run a read-only SELECT query and return the rows.\n\nOnly SELECT is allowed. Writes, DDL, role changes, and data movement are\nrejected before the query reaches Snowflake, so this tool cannot modify\nanything even if your Snowflake role would permit it.\n\nThe query runs under your own Snowflake identity, so your role and\nSnowflake's row-access and masking policies decide what you can read. Two\nusers running identical SQL can legitimately get different results.\n\nLoad the table's columns before calling this, and name the columns you want\nrather than selecting everything. `rows` is positional and\naligned to `columns`. `truncated` is true when more rows were available than\nwere returned.\n\nDo not put LIMIT, OFFSET, or SQL comments in any clause; use the `limit` and\n`offset` parameters, which are applied for you.", "parameters": [ { @@ -656,7 +656,7 @@ { "name": "GetTableSchema", "qualifiedName": "Snowflake.GetTableSchema", - "fullyQualifiedName": "Snowflake.GetTableSchema@0.1.0", + "fullyQualifiedName": "Snowflake.GetTableSchema@0.1.2", "description": "Get a table or view's columns, so you can select exact fields.\n\nLoad this before running a query, and select named columns rather than\neverything. Works on views as well as tables. A not-found error usually\nmeans the object is not granted to your role; re-check the table listing.", "parameters": [ { @@ -772,7 +772,7 @@ { "name": "WhoAmI", "qualifiedName": "Snowflake.WhoAmI", - "fullyQualifiedName": "Snowflake.WhoAmI@0.1.0", + "fullyQualifiedName": "Snowflake.WhoAmI@0.1.2", "description": "Return the Snowflake identity every other tool uses, and the warehouse.\n\nThe role is the important field. It is what decides which objects the other\ntools can see and which rows and cells come back, so two people calling the\nsame tool with the same arguments can legitimately get different data.\n\nPass `current_warehouse` straight through as the warehouse argument when\nrunning a query. If it comes back empty this user has no default warehouse,\nand a query must name one. The warehouse discovery tool lists the ones this\nrole may use, cheapest first by `size`.\n\nThis is the only place identity is reported. It runs no caller-supplied SQL,\nso what it returns is always the identity the other tools will run under.", "parameters": [], "auth": { @@ -823,6 +823,6 @@ "customImports": [], "subPages": [], "curationSourceHash": "da70ed30d9201488046d1ae1b04dc45cf6378210501e24b53236a4aa02f1ef89", - "generatedAt": "2026-08-12T19:27:03.868Z", + "generatedAt": "2026-08-29T11:11:25.105Z", "summary": "## Snowflake Toolkit\n\nArcade's Snowflake toolkit provides read-only, per-user access to Snowflake — enabling agents and apps to explore schema structure and execute SELECT queries under each caller's own Snowflake identity and role.\n\n## Capabilities\n\n- **Identity & access inspection:** Retrieve the active Snowflake user, role, and default warehouse; all other tools operate under this identity, so two users issuing identical calls can legitimately receive different results.\n- **Schema discovery (databases → schemas → tables → columns):** Progressively explore the object hierarchy — list accessible databases, then schemas within a database, then tables/views within a schema, then column definitions for a specific table or view — filtered server-side to only what the caller's role is granted.\n- **Warehouse discovery:** List warehouses the caller's role can use (smallest = cheapest); needed when no default warehouse is configured or a different size is preferred.\n- **Safe SELECT execution:** Run arbitrary read-only SQL; writes, DDL, role changes, and data movement are rejected before reaching Snowflake. Supports `limit`/`offset` pagination parameters; returns column names, rows, and a `truncated` flag.\n\n## OAuth\n\nThis toolkit uses OAuth 2.0 to authenticate each user with Snowflake. Arcade manages the OAuth flow; refer to the Arcade auth-provider documentation for setup details. *(Provider-specific docs link unavailable — provider ID not supplied.)*\n\n## Secrets\n\n- **`SNOWFLAKE_ACCOUNT_SUBDOMAIN`** — The account identifier subdomain for your Snowflake account (e.g., `xy12345.us-east-1` or an organization-format identifier like `myorg-myaccount`). This is the hostname prefix used to construct your Snowflake account URL (`.snowflakecomputing.com`). You can find it in the Snowflake UI under **Admin → Accounts**, or by inspecting the URL you use to log in. See [Snowflake account identifier docs](https://docs.snowflake.com/en/user-guide/admin-account-identifier) for format details.\n\nConfigure secrets in the [Arcade secrets dashboard](https://api.arcade.dev/dashboard/auth/secrets). For guidance on referencing secrets in tools, see the [Arcade secrets docs](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets)." } \ No newline at end of file diff --git a/toolkit-docs-generator/data/toolkits/zoom.json b/toolkit-docs-generator/data/toolkits/zoom.json index 308b1fc2d..1a23b1a04 100644 --- a/toolkit-docs-generator/data/toolkits/zoom.json +++ b/toolkit-docs-generator/data/toolkits/zoom.json @@ -1,7 +1,7 @@ { "id": "Zoom", "label": "Zoom", - "version": "1.1.2", + "version": "2.0.0", "description": "Arcade.dev LLM tools for Zoom", "metadata": { "category": "social", @@ -17,22 +17,189 @@ "type": "oauth2", "providerId": "zoom", "allScopes": [ + "cloud_recording:read:list_recording_files", + "cloud_recording:read:list_user_recordings", "meeting:read:invitation", - "meeting:read:list_upcoming_meetings" + "meeting:read:list_meetings", + "meeting:read:list_past_instances", + "meeting:read:list_upcoming_meetings", + "meeting:read:past_meeting", + "meeting:read:summary", + "user:read:user" ] }, "tools": [ + { + "name": "FindMeetings", + "qualifiedName": "Zoom.FindMeetings", + "fullyQualifiedName": "Zoom.FindMeetings@2.0.0", + "description": "Find the Zoom meeting a user means, from a phrase, a period, or a meeting id.\n\nUse this single call for every \"which meeting\" question rather than listing\nhistory and matching topics yourself. It reads all three of the records Zoom\nsplits a meeting across -- meetings scheduled ahead of time, meetings it knows\nonly through their cloud recording, and the runs of meetings that recur with no\nfixed time -- so a standing 1:1 and a call started ad hoc are as findable as a\nscheduled one. Every candidate strong enough to act on is reported rather than one\nbeing picked silently, so an ambiguous or weak phrase can be taken back to the\nuser, and a period in which nothing ran is an empty listing rather than a failure.\n\nGive a phrase to rank the account's meetings against it, a meeting_id to list one\nmeeting's past runs, or neither to list the whole period. Results are paginated:\nwhile next_cursor is non-empty it is passed back verbatim to reach the rest. A\nperiod too wide for one call is covered from its newest end, and next_to_date is\nthen the to_date to call again with to reach the older part.", + "parameters": [ + { + "name": "query", + "type": "string", + "required": false, + "description": "The phrase the user used for the meeting, matched word by word against meeting topics, so a partial reference still finds the meeting. Words that name a period rather than a meeting are ignored, so passing the phrase as the user said it works better than stripping it down first, and a meeting that recurs with no fixed time is also reachable by the words people use for its kind rather than its topic. Leave empty to list the period rather than search it.", + "enum": null, + "inferrable": true + }, + { + "name": "meeting_id", + "type": "string", + "required": false, + "description": "A meeting to list the past runs of, as its numeric id or the uuid a listing reported; a pasted Zoom join link or a meeting number written with spaces is accepted and reduced to that id. Leave empty to list or search a period instead. An identifier matching no meeting raises rather than reporting a meeting that has never met.", + "enum": null, + "inferrable": true + }, + { + "name": "when", + "type": "string", + "required": false, + "description": "Which direction in time to cover. Defaults to PAST.", + "enum": [ + "past", + "upcoming", + "all" + ], + "inferrable": true + }, + { + "name": "from_date", + "type": "string", + "required": false, + "description": "Only include meetings starting on or after this date (YYYY-MM-DD), read as a whole day in the account's own timezone. Leave empty for 30 days before to_date; when when is UPCOMING, leave empty to start from right now, and a date already past starts the window at right now, since a meeting that has already begun is not still to come.", + "enum": null, + "inferrable": true + }, + { + "name": "to_date", + "type": "string", + "required": false, + "description": "Only include meetings starting on or before the end of this date (YYYY-MM-DD), read as a whole day in the account's own timezone. Leave empty for today; when when is UPCOMING, leave empty for 24 hours after the start of the window, which may then span at most 90 days.", + "enum": null, + "inferrable": true + }, + { + "name": "only_recorded", + "type": "boolean", + "required": false, + "description": "Keep only the meetings that hold a cloud recording, which is what answers \"which of these can I send someone\" and \"which have a transcript I can read\". Defaults to false, which covers every meeting the account holds a record of.", + "enum": null, + "inferrable": true + }, + { + "name": "limit", + "type": "integer", + "required": false, + "description": "Maximum meetings to return per page (1-300). Defaults to 30.", + "enum": null, + "inferrable": true + }, + { + "name": "cursor", + "type": "string", + "required": false, + "description": "Opaque pagination token from a prior call's next_cursor; it must be passed back verbatim and never constructed. Leave empty for the first page.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoom", + "providerType": "oauth2", + "scopes": [ + "meeting:read:list_meetings", + "meeting:read:list_past_instances", + "meeting:read:past_meeting", + "meeting:read:list_upcoming_meetings", + "cloud_recording:read:list_user_recordings", + "user:read:user" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "No description provided." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Zoom.FindMeetings", + "parameters": { + "query": { + "value": "weekly team standup", + "type": "string", + "required": false + }, + "meeting_id": { + "value": "825 4992 7816", + "type": "string", + "required": false + }, + "when": { + "value": "PAST", + "type": "string", + "required": false + }, + "from_date": { + "value": "2024-03-01", + "type": "string", + "required": false + }, + "to_date": { + "value": "2024-03-31", + "type": "string", + "required": false + }, + "only_recorded": { + "value": true, + "type": "boolean", + "required": false + }, + "limit": { + "value": 50, + "type": "integer", + "required": false + }, + "cursor": { + "value": "eyJwYWdlX251bWJlciI6Miwic3RhcnQiOjUwfQ==", + "type": "string", + "required": false + } + }, + "requiresAuth": true, + "authProvider": "zoom", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "video_conferencing" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, { "name": "GetMeetingInvitation", "qualifiedName": "Zoom.GetMeetingInvitation", - "fullyQualifiedName": "Zoom.GetMeetingInvitation@1.1.2", - "description": "Retrieve the invitation note for a specific Zoom meeting.", + "fullyQualifiedName": "Zoom.GetMeetingInvitation@2.0.0", + "description": "Retrieve the invitation note for a specific Zoom meeting.\n\nThe note is Zoom's own wording and is ready to paste into a message. A meeting\nZoom holds no invitation for -- one started instantly or ad hoc, which is\ntypically the meeting that just ended -- is reported as a normal result\ncarrying the reason, so it is not mistaken for a meeting that never happened.\nAn identifier matching no meeting at all still raises.", "parameters": [ { "name": "meeting_id", "type": "string", "required": true, - "description": "The meeting's numeric ID (as a string).", + "description": "The meeting's numeric id, or the uuid a meeting listing reported. A pasted Zoom join link or a meeting number written with spaces is accepted and reduced to that id.", "enum": null, "inferrable": true } @@ -41,23 +208,228 @@ "providerId": "zoom", "providerType": "oauth2", "scopes": [ - "meeting:read:invitation" + "meeting:read:invitation", + "meeting:read:past_meeting", + "meeting:read:list_meetings", + "meeting:read:list_past_instances" ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "Meeting invitation string" + "description": "No description provided." }, "documentationChunks": [], "codeExample": { "toolName": "Zoom.GetMeetingInvitation", "parameters": { "meeting_id": { - "value": "1234567890", + "value": "825 4109 5731", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoom", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "video_conferencing" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, + { + "name": "GetMeetingRecording", + "qualifiedName": "Zoom.GetMeetingRecording", + "fullyQualifiedName": "Zoom.GetMeetingRecording@2.0.0", + "description": "Get a past Zoom meeting's cloud recording as links that can be forwarded.\n\nUse this when someone missed a meeting and wants to watch it, rather than\nreading its transcript: it returns the share link and passcode to send them,\nalongside the per-file play and download urls. A meeting with no recording is\nreported as a normal result carrying the reason, while an identifier matching no\nmeeting raises. An occurrence uuid is answered about that occurrence and no\nother, so an identifier that leaves the occurrence open is refused rather than\nanswered with whichever run happened most recently.", + "parameters": [ + { + "name": "meeting_id", + "type": "string", + "required": true, + "description": "The meeting's numeric id, the uuid a meeting listing reported, or the uuid an occurrence listing reported; a pasted Zoom join link is accepted too. Whichever is given is resolved to the occurrence that holds the recording.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoom", + "providerType": "oauth2", + "scopes": [ + "cloud_recording:read:list_recording_files", + "meeting:read:list_past_instances", + "meeting:read:past_meeting", + "meeting:read:list_meetings" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "No description provided." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Zoom.GetMeetingRecording", + "parameters": { + "meeting_id": { + "value": "85746321987", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoom", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "video_conferencing" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, + { + "name": "GetMeetingSummary", + "qualifiedName": "Zoom.GetMeetingSummary", + "fullyQualifiedName": "Zoom.GetMeetingSummary@2.0.0", + "description": "Read the AI Companion meeting summary of a past Zoom meeting.\n\nA meeting with no summary is reported as a normal result carrying the reason,\nso the caller can say so plainly, or reach for the meeting's transcript or its\nattendance, instead of treating it as a failure. An identifier matching no\nmeeting raises instead, so \"no summary\" is never claimed about a meeting that\ndoes not exist. An occurrence uuid is answered about that occurrence and no\nother, so an identifier that leaves the occurrence open is refused rather than\nanswered with whichever run happened most recently.", + "parameters": [ + { + "name": "meeting_id", + "type": "string", + "required": true, + "description": "The meeting's numeric id, the uuid a meeting listing reported, or the uuid an occurrence listing reported; a pasted Zoom join link is accepted too. Whichever is given is resolved to the occurrence Zoom summarized.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoom", + "providerType": "oauth2", + "scopes": [ + "meeting:read:summary", + "meeting:read:list_past_instances", + "meeting:read:past_meeting", + "meeting:read:list_meetings" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "No description provided." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Zoom.GetMeetingSummary", + "parameters": { + "meeting_id": { + "value": "85472983641", + "type": "string", + "required": true + } + }, + "requiresAuth": true, + "authProvider": "zoom", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "video_conferencing" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } + }, + { + "name": "GetMeetingTranscript", + "qualifiedName": "Zoom.GetMeetingTranscript", + "fullyQualifiedName": "Zoom.GetMeetingTranscript@2.0.0", + "description": "Read the audio transcript of a cloud-recorded Zoom meeting.\n\nA meeting with no transcript to read is reported as a normal result carrying\nthe reason, so the caller can say so plainly, or reach for the meeting's\nsummary or its attendance, instead of treating it as a failure. An identifier\nmatching no meeting raises instead, so \"never recorded\" is never claimed about\na meeting that does not exist. An occurrence uuid is answered about that\noccurrence and no other, so an identifier that leaves the occurrence open is\nrefused rather than answered with whichever run happened most recently.", + "parameters": [ + { + "name": "meeting_id", + "type": "string", + "required": true, + "description": "The meeting's numeric id, the uuid a meeting listing reported, or the uuid an occurrence listing reported; a pasted Zoom join link is accepted too. Whichever is given is resolved to the occurrence that holds the recording.", + "enum": null, + "inferrable": true + }, + { + "name": "max_transcript_chars", + "type": "integer", + "required": false, + "description": "Maximum characters of transcript text to return (1000-500000). Defaults to 60000, which fits a typical one-hour meeting. A longer transcript is cut at a cue boundary and transcript_truncated is then true; raise this limit to read more of a long meeting when the extra context is affordable.", + "enum": null, + "inferrable": true + } + ], + "auth": { + "providerId": "zoom", + "providerType": "oauth2", + "scopes": [ + "cloud_recording:read:list_recording_files", + "meeting:read:list_past_instances", + "meeting:read:past_meeting", + "meeting:read:list_meetings" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "No description provided." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Zoom.GetMeetingTranscript", + "parameters": { + "meeting_id": { + "value": "https://zoom.us/j/95432187654?pwd=abc123XYZ", "type": "string", "required": true + }, + "max_transcript_chars": { + "value": 120000, + "type": "integer", + "required": false } }, "requiresAuth": true, @@ -85,14 +457,54 @@ { "name": "ListUpcomingMeetings", "qualifiedName": "Zoom.ListUpcomingMeetings", - "fullyQualifiedName": "Zoom.ListUpcomingMeetings@1.1.2", - "description": "List a Zoom user's upcoming meetings within the next 24 hours.", + "fullyQualifiedName": "Zoom.ListUpcomingMeetings@2.0.0", + "description": "List the Zoom meetings a user is scheduled to join, soonest first.\n\nCovers the next 24 hours by default and any window up to 90 days ahead when\ndates are given. Within the next 24 hours the listing includes meetings the\nuser merely joins; beyond that Zoom exposes only the meetings they host, and\ninvited_coverage_end marks where that boundary falls inside the window -- an\nempty stretch past it means no hosted meetings, not a confirmed free calendar.\nA fixed-time recurring series is listed at the one start Zoom reports for it\nrather than once per run, and recurring_series names each such series so a\nwindow holding a daily standup cannot read as clear; a meeting recurring with\nno fixed time -- which belongs to no window at all -- is named alongside the\nwindow instead, so a standing 1:1 can still be found by topic. A clear\ncalendar is reported as an empty listing that names the account whose calendar\nwas read and the window that was searched, not as a failure.", "parameters": [ { "name": "user_id", "type": "string", "required": false, - "description": "The user's user ID or email address. Defaults to 'me' for the current user.", + "description": "The user ID or email address whose calendar to read. Defaults to the authenticated user, whose own email or Zoom user id also works here. Another user's calendar is not readable through this connection: Zoom denies the request, and re-authorizing cannot change that, so only supply a different address to confirm that denial rather than to read their meetings.", + "enum": null, + "inferrable": true + }, + { + "name": "from_date", + "type": "string", + "required": false, + "description": "Only include meetings starting on or after this date (YYYY-MM-DD). Leave empty to start from right now; a date already past also starts the window at right now, since a meeting that already began is not still to come.", + "enum": null, + "inferrable": true + }, + { + "name": "to_date", + "type": "string", + "required": false, + "description": "Only include meetings starting on or before the end of this date (YYYY-MM-DD). Leave empty for 24 hours after the start of the window. The window may span at most 90 days.", + "enum": null, + "inferrable": true + }, + { + "name": "limit", + "type": "integer", + "required": false, + "description": "Maximum meetings to return per page (1-300). Defaults to 30.", + "enum": null, + "inferrable": true + }, + { + "name": "cursor", + "type": "string", + "required": false, + "description": "Opaque pagination token from a prior call's next_cursor; it must be passed back verbatim and never constructed. Leave empty for the first page.", + "enum": null, + "inferrable": true + }, + { + "name": "timezone", + "type": "string", + "required": false, + "description": "IANA timezone to read from_date and to_date in, for example America/Los_Angeles. Leave empty to use the calendar owner's Zoom profile timezone. Supply it when the user's timezone is known from the conversation and may differ from the profile, and when Zoom reports no timezone for the calendar -- supplied dates are then refused until one is given.", "enum": null, "inferrable": true } @@ -101,21 +513,48 @@ "providerId": "zoom", "providerType": "oauth2", "scopes": [ - "meeting:read:list_upcoming_meetings" + "meeting:read:list_upcoming_meetings", + "meeting:read:list_meetings", + "user:read:user" ] }, "secrets": [], "secretsInfo": [], "output": { "type": "json", - "description": "List of upcoming meetings within the next 24 hours" + "description": "No description provided." }, "documentationChunks": [], "codeExample": { "toolName": "Zoom.ListUpcomingMeetings", "parameters": { "user_id": { - "value": "me", + "value": "jane.doe@example.com", + "type": "string", + "required": false + }, + "from_date": { + "value": "2025-08-01", + "type": "string", + "required": false + }, + "to_date": { + "value": "2025-08-15", + "type": "string", + "required": false + }, + "limit": { + "value": 50, + "type": "integer", + "required": false + }, + "cursor": { + "value": "eyJwYWdlX251bWJlciI6Mn0=", + "type": "string", + "required": false + }, + "timezone": { + "value": "America/New_York", "type": "string", "required": false } @@ -141,6 +580,51 @@ }, "extras": null } + }, + { + "name": "WhoAmI", + "qualifiedName": "Zoom.WhoAmI", + "fullyQualifiedName": "Zoom.WhoAmI@2.0.0", + "description": "Identify the Zoom user the connection is authenticated as.\n\nCall this to ground a possessive reference like \"my meetings\" before acting\non it.", + "parameters": [], + "auth": { + "providerId": "zoom", + "providerType": "oauth2", + "scopes": [ + "user:read:user" + ] + }, + "secrets": [], + "secretsInfo": [], + "output": { + "type": "json", + "description": "No description provided." + }, + "documentationChunks": [], + "codeExample": { + "toolName": "Zoom.WhoAmI", + "parameters": {}, + "requiresAuth": true, + "authProvider": "zoom", + "tabLabel": "Call the Tool with User Authorization" + }, + "metadata": { + "classification": { + "serviceDomains": [ + "video_conferencing" + ] + }, + "behavior": { + "operations": [ + "read" + ], + "readOnly": true, + "destructive": false, + "idempotent": true, + "openWorld": true + }, + "extras": null + } } ], "documentationChunks": [ @@ -160,6 +644,9 @@ "relativePath": "install/page.mdx" } ], - "generatedAt": "2026-02-26T20:45:10.449Z", - "summary": "Arcade.dev provides a toolkit for integrating with Zoom, enabling developers to leverage its functionalities in applications seamlessly. This toolkit allows for efficient access to Zoom meetings and invitations.\n\n**Capabilities**\n- Retrieve detailed information about specific Zoom meetings.\n- List upcoming meetings for a user within the next 24 hours.\n- Simplify access and interaction with Zoom's meeting management features.\n\n**OAuth**\n- Provider: Zoom \n- Scopes: meeting:read:invitation, meeting:read:list_upcoming_meetings \n\n**Secrets**\n- No secret types required for this toolkit." -} + "curationSourceHash": "6007dc440877986aa2d1f0f7a108a94354c90a195ee571865830c7eeb1734c7b", + "generatedAt": "2026-08-29T11:11:28.798Z", + "summary": "Arcade.dev provides a toolkit for integrating with Zoom, enabling developers to leverage its functionalities in applications seamlessly. This toolkit allows for efficient access to Zoom meetings and invitations.\n\n**Capabilities**\n- Retrieve detailed information about specific Zoom meetings.\n- List upcoming meetings for a user within the next 24 hours.\n- Simplify access and interaction with Zoom's meeting management features.\n\n**OAuth**\n- Provider: Zoom \n- Scopes: meeting:read:invitation, meeting:read:list_upcoming_meetings \n\n**Secrets**\n- No secret types required for this toolkit.", + "summaryStale": true, + "summaryStaleReason": "llm_generation_failed" +} \ No newline at end of file From 2c40a0ccd9cf0936dde5628f898a57cc1c42d6b6 Mon Sep 17 00:00:00 2001 From: "arcade-docs-bot[bot]" <321924871+arcade-docs-bot[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 11:12:39 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=A4=96=20Regenerate=20LLMs.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/llms.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/llms.txt b/public/llms.txt index b0301a8a8..cd33876ab 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -237,7 +237,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Google Search](https://docs.arcade.dev/en/resources/integrations/search/google_search): Arcade.dev provides a toolkit for integrating Google search functionalities using its GoogleSearch tool. This enables developers to seamlessly fetch and utilize organic search results in their applications. Capabilities - Perform Google searches and retrieve organic results… - [Google Sheets](https://docs.arcade.dev/en/resources/integrations/productivity/google-sheets): Google Sheets Toolkit The Google Sheets toolkit connects Arcade to Google Sheets and Google Drive, enabling LLMs to read, write, inspect, comment on, audit, and search spreadsheets on behalf of authenticated users. Capabilities - Spreadsheet access & discovery: Search Drive for… - [Google Shopping](https://docs.arcade.dev/en/resources/integrations/search/google_shopping): Arcade.dev offers a powerful toolkit for shopping via Google Shopping, enabling developers to seamlessly integrate product search functionality into their applications. This toolkit provides essential capabilities to enhance shopping experiences for users. Capabilities - Search… -- [Google Slides](https://docs.arcade.dev/en/resources/integrations/productivity/google-slides): Google Slides Toolkit The Google Slides toolkit connects Arcade to Google Slides (and Google Drive) via the Google APIs, enabling LLMs to create, edit, read, search, and comment on presentations programmatically. Capabilities - Deck creation and editing: Build presentations from… +- [Google Slides](https://docs.arcade.dev/en/resources/integrations/productivity/google-slides): Google Slides Toolkit The Google Slides toolkit connects Arcade to the Google Slides and Drive APIs, enabling LLMs to create, read, edit, and manage presentations on behalf of a connected Google account. Capabilities - Deck creation and editing: Build presentations from scratch… - [Granola](https://docs.arcade.dev/en/resources/integrations/productivity/granola): Granola is a meeting intelligence platform that captures notes and transcripts from calls. The Arcade Granola toolkit gives agents read access to Granola's public Enterprise API for working with meeting metadata and transcripts. Capabilities - List meetings with optional… - [HubSpot](https://docs.arcade.dev/en/resources/integrations/sales/hubspot): Arcade Toolkit for HubSpot enables seamless integration and interaction with HubSpot's CRM functionalities, allowing developers to leverage various activities and data management tools for enhanced customer relationship management. Capabilities - Create, update, and manage… - [HubSpot Automation API](https://docs.arcade.dev/en/resources/integrations/sales/hubspot-automation-api): Arcade's HubSpot Automation API toolkit empowers developers to integrate LLMs with HubSpot's automation capabilities, facilitating seamless interaction with various automation workflows and sequences. Capabilities - Enroll contacts in sequences and fetch campaign details via… @@ -253,7 +253,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Integrations](https://docs.arcade.dev/en/resources/integrations): This documentation page provides a comprehensive registry of all MCP Servers within the Arcade ecosystem, helping users identify and access available servers. It serves as a central resource for understanding the various MCP Server options. - [Intercom API](https://docs.arcade.dev/en/resources/integrations/customer-support/intercom-api): Arcade Toolkit for Intercom enables integration with the Intercom API, facilitating seamless interactions for managing contacts, conversations, and data attributes. This toolkit offers a variety of tools to streamline communication processes, ensuring effective customer… - [Jira](https://docs.arcade.dev/en/resources/integrations/productivity/jira): The Jira toolkit integrates Arcade with Atlassian Jira, enabling LLMs to manage issues, sprints, boards, users, attachments, and project metadata across Jira Cloud instances. Capabilities - Issue lifecycle management — Create, update, transition, search (parameterized or JQL),… -- [Linear](https://docs.arcade.dev/en/resources/integrations/productivity/linear): Linear Toolkit The Linear toolkit lets LLMs interact with Linear's project management platform through Arcade, covering the full lifecycle of issues, projects, initiatives, cycles, milestones, comments, and teams. Capabilities - Issue management: Create, update, archive, and… +- [Linear](https://docs.arcade.dev/en/resources/integrations/productivity/linear): Linear Toolkit The Linear toolkit connects LLMs to Linear via Arcade, enabling programmatic interaction with issues, projects, initiatives, cycles, teams, and workspace metadata. Capabilities - Issue management — create, update, archive, transition workflow states, manage… - [LinkedIn](https://docs.arcade.dev/en/resources/integrations/social/linkedin): Arcade.dev provides a toolkit for integrating with LinkedIn, enabling developers to streamline interactions with the platform's API. This toolkit allows for the creation of content directly on LinkedIn, enhancing user engagement and social sharing capabilities. Capabilities -… - [Luma API](https://docs.arcade.dev/en/resources/integrations/productivity/luma-api): LumaApi provides tools that facilitate LLMs in interacting seamlessly with the Luma API to manage events and user memberships. This toolkit allows developers to efficiently handle event creation, guest management, and membership features. Capabilities - Create, update, and… - [Mailchimp API](https://docs.arcade.dev/en/resources/integrations/productivity/mailchimp-marketing-api): The MailchimpMarketingApi toolkit enables seamless integration with the Mailchimp Marketing API, allowing developers to manage marketing efforts effectively. It empowers users to execute various operations related to audience management, email campaigns, and e-commerce… @@ -265,7 +265,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Microsoft Power BI](https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-power-bi): Microsoft Power BI toolkit for Arcade enables AI agents and developers to query, inspect, manage, and refresh Power BI semantic models, reports, workspaces, and gateways through the Power BI REST API. Capabilities - Workspace & access management: List workspaces, enumerate… - [Microsoft PowerPoint](https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-powerpoint): Microsoft PowerPoint Toolkit The Microsoft PowerPoint toolkit provides Arcade LLM tools for creating and managing PowerPoint presentations stored in OneDrive via the Microsoft Graph API. Capabilities - Presentation creation : Create new presentations in OneDrive with a title… - [Microsoft SharePoint](https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-sharepoint): The Microsoft SharePoint toolkit integrates Arcade with Microsoft SharePoint via the Microsoft Graph API, enabling LLMs to read, write, and manage SharePoint content programmatically. Capabilities - Site & drive navigation — list, search, and retrieve sites, drives/document… -- [Microsoft Teams](https://docs.arcade.dev/en/resources/integrations/social/microsoft-teams): Microsoft Teams Toolkit The Microsoft Teams toolkit provides Arcade LLM tools for interacting with Microsoft Teams via the Microsoft Graph API, enabling agents to read and send messages, manage chats and channels, and look up users and teams. Capabilities - Messaging — chats:… +- [Microsoft Teams](https://docs.arcade.dev/en/resources/integrations/social/microsoft-teams): Arcade's Microsoft Teams toolkit provides 25 LLM-callable tools for interacting with Microsoft Teams via the Microsoft Graph API, enabling agents to read and write messages, manage chats and channels, and look up users and teams. Capabilities - Messaging — chats: Send, reply to,… - [Microsoft Users](https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-users): Microsoft Users Toolkit Provides LLM tools for querying Microsoft Graph user profiles and organizational hierarchy. Enables agents to look up user details, resolve org relationships, and enrich workplace data within a Microsoft 365 tenant. Capabilities - Profile lookup :… - [Microsoft Word](https://docs.arcade.dev/en/resources/integrations/productivity/microsoft-word): Arcade's Microsoft Word toolkit lets developers create, read, and update Word documents stored in OneDrive through Microsoft Graph. Capabilities - Create .docx documents with optional initial text, automatic .docx extension handling, folder targeting, and configurable filename… - [Miro API](https://docs.arcade.dev/en/resources/integrations/productivity/miro-api): Arcade Toolkit integrates with the Miro API, allowing developers to enhance collaborative functionalities within Miro boards. It empowers applications to add, update, or delete board items effectively while maintaining user engagement. Capabilities - Automated addition and…