diff --git a/toolkit-docs-generator/data/toolkits/index.json b/toolkit-docs-generator/data/toolkits/index.json index a61065cff..e08a6dc3f 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-26T11:11:01.949Z", "version": "1.0.0", "toolkits": [ { @@ -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, @@ -905,7 +905,7 @@ { "id": "Snowflake", "label": "Snowflake", - "version": "0.1.0", + "version": "0.1.2", "category": "databases", "type": "arcade", "toolCount": 7, diff --git a/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json b/toolkit-docs-generator/data/toolkits/microsoftpowerbi.json index 552373ded..ef812ec6d 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-26T11:11:01.777Z", "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 60f6955af..23f0c68b4 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": { @@ -3306,6 +3306,7 @@ "documentationChunks": [], "customImports": [], "subPages": [], - "generatedAt": "2026-07-16T11:38:45.348Z", + "curationSourceHash": "da70ed30d9201488046d1ae1b04dc45cf6378210501e24b53236a4aa02f1ef89", + "generatedAt": "2026-08-26T11:11:01.781Z", "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/snowflake.json b/toolkit-docs-generator/data/toolkits/snowflake.json index 93c1f6025..1588b9f76 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-26T11:11:01.777Z", "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