diff --git a/docker/toolkits.txt b/docker/toolkits.txt
index 1cec819b..26bc41cb 100644
--- a/docker/toolkits.txt
+++ b/docker/toolkits.txt
@@ -1,5 +1,6 @@
arcade-box-api
arcade-calendly-api
+arcade-miro-api
arcade-slack-api
arcade-stripe-api
arcade-squareup-api
diff --git a/toolkits/miro_api/.pre-commit-config.yaml b/toolkits/miro_api/.pre-commit-config.yaml
new file mode 100644
index 00000000..c45e029c
--- /dev/null
+++ b/toolkits/miro_api/.pre-commit-config.yaml
@@ -0,0 +1,18 @@
+files: ^.*/miro_api/.*
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: "v4.4.0"
+ hooks:
+ - id: check-case-conflict
+ - id: check-merge-conflict
+ - id: check-toml
+ - id: check-yaml
+ - id: end-of-file-fixer
+ - id: trailing-whitespace
+
+ - repo: https://github.com/astral-sh/ruff-pre-commit
+ rev: v0.6.7
+ hooks:
+ - id: ruff
+ args: [--fix]
+ - id: ruff-format
diff --git a/toolkits/miro_api/.ruff.toml b/toolkits/miro_api/.ruff.toml
new file mode 100644
index 00000000..9519fe6c
--- /dev/null
+++ b/toolkits/miro_api/.ruff.toml
@@ -0,0 +1,44 @@
+target-version = "py310"
+line-length = 100
+fix = true
+
+[lint]
+select = [
+ # flake8-2020
+ "YTT",
+ # flake8-bandit
+ "S",
+ # flake8-bugbear
+ "B",
+ # flake8-builtins
+ "A",
+ # flake8-comprehensions
+ "C4",
+ # flake8-debugger
+ "T10",
+ # flake8-simplify
+ "SIM",
+ # isort
+ "I",
+ # mccabe
+ "C90",
+ # pycodestyle
+ "E", "W",
+ # pyflakes
+ "F",
+ # pygrep-hooks
+ "PGH",
+ # pyupgrade
+ "UP",
+ # ruff
+ "RUF",
+ # tryceratops
+ "TRY",
+]
+
+[lint.per-file-ignores]
+"**/tests/*" = ["S101"]
+
+[format]
+preview = true
+skip-magic-trailing-comma = false
diff --git a/toolkits/miro_api/LICENSE b/toolkits/miro_api/LICENSE
new file mode 100644
index 00000000..dfbb8b76
--- /dev/null
+++ b/toolkits/miro_api/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025, Arcade AI
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/toolkits/miro_api/Makefile b/toolkits/miro_api/Makefile
new file mode 100644
index 00000000..86da492a
--- /dev/null
+++ b/toolkits/miro_api/Makefile
@@ -0,0 +1,54 @@
+.PHONY: help
+
+help:
+ @echo "🛠️ github Commands:\n"
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+
+.PHONY: install
+install: ## Install the uv environment and install all packages with dependencies
+ @echo "🚀 Creating virtual environment and installing all packages using uv"
+ @uv sync --active --all-extras --no-sources
+ @if [ -f .pre-commit-config.yaml ]; then uv run --no-sources pre-commit install; fi
+ @echo "✅ All packages and dependencies installed via uv"
+
+.PHONY: install-local
+install-local: ## Install the uv environment and install all packages with dependencies with local Arcade sources
+ @echo "🚀 Creating virtual environment and installing all packages using uv"
+ @uv sync --active --all-extras
+ @if [ -f .pre-commit-config.yaml ]; then uv run pre-commit install; fi
+ @echo "✅ All packages and dependencies installed via uv"
+.PHONY: build
+build: clean-build ## Build wheel file using poetry
+ @echo "🚀 Creating wheel file"
+ uv build
+
+.PHONY: clean-build
+clean-build: ## clean build artifacts
+ @echo "🗑️ Cleaning dist directory"
+ rm -rf dist
+
+.PHONY: test
+test: ## Test the code with pytest
+ @echo "🚀 Testing code: Running pytest"
+ @uv run --no-sources pytest -W ignore -v --cov --cov-config=pyproject.toml --cov-report=xml
+
+.PHONY: coverage
+coverage: ## Generate coverage report
+ @echo "coverage report"
+ @uv run --no-sources coverage report
+ @echo "Generating coverage report"
+ @uv run --no-sources coverage html
+
+.PHONY: bump-version
+bump-version: ## Bump the version in the pyproject.toml file by a patch version
+ @echo "🚀 Bumping version in pyproject.toml"
+ uv version --no-sources --bump patch
+
+.PHONY: check
+check: ## Run code quality tools.
+ @if [ -f .pre-commit-config.yaml ]; then\
+ echo "🚀 Linting code: Running pre-commit";\
+ uv run --no-sources pre-commit run -a;\
+ fi
+ @echo "🚀 Static type checking: Running mypy"
+ @uv run --no-sources mypy --config-file=pyproject.toml
diff --git a/toolkits/miro_api/arcade_miro_api/__init__.py b/toolkits/miro_api/arcade_miro_api/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/toolkits/miro_api/arcade_miro_api/tools/__init__.py b/toolkits/miro_api/arcade_miro_api/tools/__init__.py
new file mode 100644
index 00000000..cc54af9a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/tools/__init__.py
@@ -0,0 +1,3123 @@
+"""Arcade Starter Tools for Miro
+
+DO NOT EDIT THIS MODULE DIRECTLY.
+
+THIS MODULE WAS AUTO-GENERATED BY TRANSPILING THE API WRAPPER TOOL JSON DEFINITIONS
+IN THE ../wrapper_tools DIRECTORY INTO PYTHON CODE. ANY CHANGES TO THIS MODULE WILL
+BE OVERWRITTEN BY THE TRANSPILER.
+"""
+
+import asyncio
+from typing import Annotated, Any
+
+import httpx
+from arcade_tdk import ToolContext, tool
+from arcade_tdk.auth import OAuth2
+
+# Retry configuration
+INITIAL_RETRY_DELAY = 0.5 # seconds
+
+HTTP_CLIENT = httpx.AsyncClient(
+ timeout=httpx.Timeout(60.0, connect=10.0),
+ limits=httpx.Limits(max_keepalive_connections=20, max_connections=100),
+ transport=httpx.AsyncHTTPTransport(retries=3),
+ http2=True,
+ follow_redirects=True,
+)
+
+
+def remove_none_values(data: dict[str, Any]) -> dict[str, Any]:
+ return {k: v for k, v in data.items() if v is not None}
+
+
+async def make_request(
+ url: str,
+ method: str,
+ params: dict[str, Any] | None = None,
+ headers: dict[str, Any] | None = None,
+ data: dict[str, Any] | None = None,
+ max_retries: int = 3,
+) -> httpx.Response:
+ """Make an HTTP request with retry logic for 5xx server errors."""
+ for attempt in range(max_retries):
+ try:
+ response = await HTTP_CLIENT.request(
+ url=url,
+ method=method,
+ params=params,
+ headers=headers,
+ data=data,
+ )
+ response.raise_for_status()
+ except httpx.HTTPStatusError as e:
+ # Only retry on 5xx server errors
+ if e.response.status_code >= 500 and attempt < max_retries - 1:
+ # Exponential backoff: 0.5s, 1s, 2s
+ await asyncio.sleep(INITIAL_RETRY_DELAY * (2**attempt))
+ continue
+ # Re-raise for 4xx errors or if max retries reached
+ raise
+ except httpx.RequestError:
+ # Don't retry request errors (network issues are handled by transport)
+ raise
+ else:
+ return response
+
+ # This should never be reached, but satisfies type checker
+ raise httpx.RequestError("Max retries exceeded") # noqa: TRY003
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_access_token_info(
+ context: ToolContext,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'token-info'."]:
+ """Retrieve details about an access token.
+
+ Use this tool to obtain detailed information regarding an access token, including token type, scopes, associated team, and user information, as well as creation date and time.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v1/oauth-token",
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_audit_logs(
+ context: ToolContext,
+ created_after: Annotated[
+ str,
+ "Retrieve audit logs created after the specified date and time in UTC format (ISO 8601 with milliseconds and a trailing Z).", # noqa: E501
+ ],
+ audit_log_end_date: Annotated[
+ str,
+ "Retrieve audit logs created before this date and time. Use UTC format, following ISO 8601 with milliseconds and 'Z'.", # noqa: E501
+ ],
+ pagination_cursor: Annotated[
+ str | None,
+ "Cursor for pagination; use to retrieve the next portion of results based on the previously returned cursor value.", # noqa: E501
+ ] = None,
+ max_results_limit: Annotated[
+ int | None,
+ "Specifies the maximum number of audit log results to return. Default is 100 if not specified.", # noqa: E501
+ ] = None,
+ sort_order: Annotated[
+ str | None,
+ "Defines the sort order for the audit logs. Use 'ASC' for ascending and 'DESC' for descending. Defaults to 'ASC'.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-audit-logs'."]:
+ """Retrieve audit logs from the last 90 days.
+
+ Use this tool to access a page of audit events from the past 90 days. If older data is needed, consider using Miro's CSV export feature. Required scope: auditlogs:read.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/audit/logs",
+ method="GET",
+ params=remove_none_values({
+ "createdAfter": created_after,
+ "createdBefore": audit_log_end_date,
+ "cursor": pagination_cursor,
+ "limit": max_results_limit,
+ "sorting": sort_order,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_classification_settings(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "The unique identifier of the organization whose board classification settings you want to retrieve.", # noqa: E501
+ ],
+) -> Annotated[
+ dict[str, Any],
+ "Response from the API endpoint 'enterprise-dataclassification-organization-settings-get'.",
+]:
+ """Retrieve board classification settings for an organization.
+
+ Use this tool to get the board classification settings for an existing organization in Miro. This is applicable only for organizations under the Enterprise plan and requires Company Admin role and the 'organizations:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/data-classification-settings".format( # noqa: UP032
+ org_id=organization_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_team_data_classification_settings(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "ID of the organization to retrieve board classification settings for."
+ ],
+ team_identifier: Annotated[
+ str,
+ "The unique identifier of the team to retrieve classification settings for. Must be a string.", # noqa: E501
+ ],
+) -> Annotated[
+ dict[str, Any],
+ "Response from the API endpoint 'enterprise-dataclassification-team-settings-get'.",
+]:
+ """Retrieve board classification settings for an enterprise team.
+
+ Use this tool to get board classification settings for an existing team in an enterprise account. Only available for users with the Company Admin role in the Enterprise plan.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/data-classification-settings".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_board_classification(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "The unique identifier for the organization whose board classification you wish to retrieve.", # noqa: E501
+ ],
+ team_identifier: Annotated[
+ str,
+ "The unique identifier of the team for which you want to retrieve the board classification.", # noqa: E501
+ ],
+ board_unique_identifier: Annotated[
+ str, "Unique identifier of the Miro board to retrieve classification details for."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-dataclassification-board-get'."
+]:
+ """Retrieve board classification status from Miro.
+
+ Retrieves the data classification of a specific board in Miro for Enterprise users. This tool is useful for Company Admins who need to access board classification details, requiring the 'boards:read' scope. It is subject to Level 2 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/boards/{board_id}/data-classification".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier, board_id=board_unique_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_ediscovery_cases(
+ context: ToolContext,
+ maximum_items_in_result_list: Annotated[
+ int,
+ "Specify the maximum number of items to include in the result list of eDiscovery cases.",
+ ],
+ organization_id: Annotated[str, "The ID of the organization to retrieve eDiscovery cases for."],
+ pagination_cursor: Annotated[
+ str | None,
+ "Used to navigate pages of results. Leave empty for the first page; use value from previous response for subsequent pages.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-all-cases'."]:
+ """Get the list of eDiscovery cases for an organization.
+
+ Use this tool to retrieve all the eDiscovery cases available in an organization. It is specifically for Enterprise plan users with the Enterprise Guard add-on, requiring Company Admin and eDiscovery Admin roles.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/cases".format(org_id=organization_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "limit": maximum_items_in_result_list,
+ "cursor": pagination_cursor,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_case_info(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique ID of the organization for retrieving case information."
+ ],
+ case_id: Annotated[str, "The unique identifier of the case to retrieve information for."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-case'."]:
+ """Retrieve detailed information about a specific case in an organization.
+
+ This tool is used to get detailed information about a case in an organization using Miro's API. It is suitable for Enterprise plan users with the Enterprise Guard add-on who have Company Admin and eDiscovery Admin roles. Useful for administrators managing cases and overseeing organizational operations.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}".format( # noqa: UP032
+ org_id=organization_id, case_id=case_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_legal_holds(
+ context: ToolContext,
+ maximum_items_in_result_list: Annotated[
+ int,
+ "Specifies the maximum number of items to be included in the retrieved list of legal holds.", # noqa: E501
+ ],
+ organization_id: Annotated[
+ str,
+ "The ID of the organization for which to retrieve the list of legal holds within a case.",
+ ],
+ case_id: Annotated[
+ str, "The unique ID of the case for which to retrieve the list of legal holds."
+ ],
+ page_cursor: Annotated[
+ str | None,
+ "An indicator for paginating results. Leave empty for the first page or use the previous request's cursor for subsequent pages.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-all-legal-holds'."]:
+ """Retrieve all legal holds for a case in an organization.
+
+ This tool retrieves the list of all legal holds within a specified case for an organization. It is intended for Miro Enterprise plan users with the Enterprise Guard add-on, requiring Company Admin and eDiscovery Admin roles.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds".format( # noqa: UP032
+ org_id=organization_id, case_id=case_id
+ ),
+ method="GET",
+ params=remove_none_values({"limit": maximum_items_in_result_list, "cursor": page_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_legal_hold_info(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique ID of the organization for which to retrieve legal hold data."
+ ],
+ case_identifier: Annotated[
+ str, "The unique identifier for the case to retrieve the legal hold information."
+ ],
+ legal_hold_id: Annotated[str, "The unique identifier for the legal hold to be retrieved."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-legal-hold'."]:
+ """Retrieve information about a legal hold in an organization's case.
+
+ Use this tool to get details about a legal hold in a specific case within an organization, requiring organization:cases:management scope and applicable for Enterprise Guard users with specific admin roles.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}".format( # noqa: UP032
+ org_id=organization_id, case_id=case_identifier, legal_hold_id=legal_hold_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_miro_legal_hold_items(
+ context: ToolContext,
+ maximum_items_limit: Annotated[
+ int, "Specifies the maximum number of content items to return in the list."
+ ],
+ organization_id: Annotated[
+ str,
+ "The unique ID of the Miro organization to retrieve its content items under legal hold.",
+ ],
+ case_id: Annotated[
+ str, "The unique identifier for the legal case to retrieve content items under hold."
+ ],
+ legal_hold_identifier: Annotated[
+ str, "The ID of the legal hold to retrieve the list of content items under hold."
+ ],
+ page_cursor: Annotated[
+ str | None,
+ "Used to paginate through results. Leave empty for the first page; use the previous request's cursor for the next pages.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-legal-hold-content-items'."]:
+ """Retrieve content items under a Miro legal hold.
+
+ This tool retrieves all content items under a specific legal hold in a case for a Miro organization, ensuring the legal hold is active and complete. Only available for Miro Enterprise plan users with appropriate admin roles.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}/content-items".format( # noqa: UP032
+ org_id=organization_id, case_id=case_id, legal_hold_id=legal_hold_identifier
+ ),
+ method="GET",
+ params=remove_none_values({"limit": maximum_items_limit, "cursor": page_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_export_job_status(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "Unique identifier of the organization. Required for accessing the board export job status.", # noqa: E501
+ ],
+ board_export_job_id: Annotated[
+ str, "Unique identifier of the board export job within Miro to retrieve its status."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-board-export-job-status'."
+]:
+ """Retrieve the status of a Miro board export job for enterprises.
+
+ This tool retrieves the current status of a board export job within an enterprise organization in Miro. It should be called when there's a need to check if a board export job has been completed or to track its progress. This API is restricted to Enterprise plan users with Company Admin roles and requires eDiscovery enabled in the settings.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/boards/export/jobs/{job_id}".format( # noqa: UP032
+ org_id=organization_id, job_id=board_export_job_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_export_job_results(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "Unique identifier of the organization for which the board export job results are retrieved.", # noqa: E501
+ ],
+ board_export_job_id: Annotated[
+ str, "Unique identifier for the board export job to retrieve results."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-board-export-job-results'."
+]:
+ """Retrieve results of a board export job for Enterprise users.
+
+ This tool retrieves the results of a Miro board export job, providing details such as the S3 link to the exported files. It is available exclusively for Enterprise plan users with company admin roles and eDiscovery enabled. Essential for accessing export details securely.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/boards/export/jobs/{job_id}/results".format( # noqa: UP032
+ org_id=organization_id, job_id=board_export_job_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def fetch_board_content_changes(
+ context: ToolContext,
+ start_date_time_utc: Annotated[
+ str, "Filter logs from this UTC date and time. Must be ISO 8601 with a trailing 'Z'."
+ ],
+ end_date_time_filter: Annotated[
+ str,
+ "Specify the end date and time for filtering content logs. Use UTC format, following ISO 8601 with a trailing Z offset.", # noqa: E501
+ ],
+ organization_id: Annotated[
+ str, "Unique identifier for the organization to fetch content changes."
+ ],
+ board_ids: Annotated[
+ list[str] | None,
+ "List of board IDs for fetching content logs. Accepts an array of strings.",
+ ] = None,
+ user_emails_filter: Annotated[
+ list[str] | None,
+ "List of user emails to filter content logs for those who created, modified, or deleted the board item.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "Pointer to the next portion of results, used for pagination. Use the cursor from the previous response to continue fetching data.", # noqa: E501
+ ] = None,
+ maximum_results_per_call: Annotated[
+ int | None,
+ "Specify the maximum number of content log results to return per call. If exceeded, a cursor is provided for the next request.", # noqa: E501
+ ] = None,
+ sort_order: Annotated[
+ str | None,
+ "Determines the order of board content logs based on their modified date. Use 'asc' for ascending and 'desc' for descending order.", # noqa: E501
+ ] = None,
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-board-content-item-logs-fetch'."
+]:
+ """Fetch changes to board items in your organization.
+
+ Retrieve content changes for board items, including actions like updates or deletions. Filter by time, board ID, or user email. Available for Enterprise plan admins only.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/content-logs/items".format( # noqa: UP032
+ org_id=organization_id
+ ),
+ method="GET",
+ params=remove_none_values({
+ "board_ids": board_ids,
+ "emails": user_emails_filter,
+ "from": start_date_time_utc,
+ "to": end_date_time_filter,
+ "cursor": pagination_cursor,
+ "limit": maximum_results_per_call,
+ "sorting": sort_order,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def reset_user_sessions(
+ context: ToolContext,
+ user_email_to_reset_sessions: Annotated[
+ str,
+ "Email ID of the user whose sessions need to be reset. This will sign the user out from all devices.", # noqa: E501
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-post-user-sessions-reset'."
+]:
+ """Reset all active user sessions immediately.
+
+ This tool is used by Enterprise plan Company Admins to reset all active sessions for a user, effectively requiring them to sign in again. It's useful for handling security concerns such as compromised credentials or suspicious account activity.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/sessions/reset_all",
+ method="POST",
+ params=remove_none_values({"email": user_email_to_reset_sessions}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_organization_info(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "The unique identifier of the organization to retrieve information for. Required for accessing organization details.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-organization'."]:
+ """Retrieve enterprise organization information.
+
+ Fetch details about an organization using the Miro API, available only for users with the Enterprise plan and Company Admin role. This tool should be used to obtain specific organization data.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}".format(org_id=organization_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_organization_members(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique identifier of the organization to retrieve members from."
+ ],
+ user_emails: Annotated[
+ str | None,
+ "A comma-separated list of user emails to retrieve specific organization members.",
+ ] = None,
+ filter_by_role: Annotated[
+ str | None,
+ "Specify the role to filter organization members by, such as 'organization_internal_admin' or 'organization_internal_user'.", # noqa: E501
+ ] = None,
+ member_license_type: Annotated[
+ str | None,
+ "Specify the license type of members to filter by. Accepts values: full, occasional, free, free_restricted, full_trial, or unknown.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "A string used for paginating results. Allows fetching the next set of organization members.", # noqa: E501
+ ] = None,
+ member_retrieval_limit: Annotated[
+ int | None,
+ "Specify the maximum number of organization members to retrieve. This is used to limit the size of the results returned by the API.", # noqa: E501
+ ] = None,
+ only_active_members: Annotated[
+ bool | None,
+ "Set to true to retrieve only active members. Filters based on member activity status.",
+ ] = None,
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-get-organization-members'."
+]:
+ """Retrieve members of an organization in Miro.
+
+ This tool fetches members of a Miro organization using the organization ID or user emails. It requires the 'organizations:read' scope and is available only to Enterprise plan users with Company Admin roles. This should be used to obtain detailed information about organization members.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/members".format(org_id=organization_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "emails": user_emails,
+ "role": filter_by_role,
+ "license": member_license_type,
+ "active": only_active_members,
+ "cursor": pagination_cursor,
+ "limit": member_retrieval_limit,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_organization_member_info(
+ context: ToolContext,
+ organization_id: Annotated[
+ str,
+ "The unique identifier of the organization whose member information is being retrieved. This ID is necessary to specify which organization's data to access.", # noqa: E501
+ ],
+ organization_member_id: Annotated[
+ str, "ID of the organization member to retrieve information for."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-get-organization-member'."
+]:
+ """Retrieve member information of an organization in Miro Enterprise.
+
+ Use this tool to obtain information about a member of an organization within the Miro Enterprise plan. This is exclusive to users with Company Admin roles, requiring the 'organizations:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/members/{member_id}".format( # noqa: UP032
+ org_id=organization_id, member_id=organization_member_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_user_accessible_boards(
+ context: ToolContext,
+ team_id_filter: Annotated[
+ str | None,
+ "Filter boards by a specific team ID to narrow down results. Useful for fetching boards associated with a specific team.", # noqa: E501
+ ] = None,
+ project_id: Annotated[
+ str | None,
+ "Filter boards by project ID to narrow down the list to those associated with a specific project.", # noqa: E501
+ ] = None,
+ filter_query: Annotated[
+ str | None, "A search term to filter boards by name or description. Accepts a string value."
+ ] = None,
+ owner_username: Annotated[
+ str | None,
+ "Filter boards by the owner's username. Use this to fetch all boards created by a specific user.", # noqa: E501
+ ] = None,
+ maximum_results_limit: Annotated[
+ str | None,
+ "Specifies the maximum number of boards to return in a single response. This allows you to control pagination by limiting the number of results.", # noqa: E501
+ ] = None,
+ pagination_offset: Annotated[
+ str | None,
+ "The number of boards to skip before starting to collect the result set. Used for pagination.", # noqa: E501
+ ] = None,
+ sorting_preference: Annotated[
+ str | None,
+ "Specifies how to sort the list of boards. Options are: 'default', 'last_modified', 'last_opened', 'last_created', 'alphabetically'.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-boards'."]:
+ """Retrieve boards accessible to the user with filtering options.
+
+ Fetches a list of boards accessible to the user using various filters like `team_id` or `project_id`. Allows Enterprise users with Content Admin permissions to fetch all boards, excluding private contents.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards",
+ method="GET",
+ params=remove_none_values({
+ "team_id": team_id_filter,
+ "project_id": project_id,
+ "query": filter_query,
+ "owner": owner_username,
+ "limit": maximum_results_limit,
+ "offset": pagination_offset,
+ "sort": sorting_preference,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str,
+ "Unique identifier (ID) of the Miro board to retrieve. Needed to fetch specific board details.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-specific-board'."]:
+ """Retrieve detailed information about a specific Miro board.
+
+ This tool retrieves detailed information about a specific Miro board, using the board's unique ID. It requires the 'boards:read' scope to access the data.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}".format(board_id=board_identifier), # noqa: UP032
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_miro_board(
+ context: ToolContext,
+ board_unique_id: Annotated[str, "Unique identifier of the Miro board to delete."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-board'."]:
+ """Delete a Miro board and move it to Trash.
+
+ Use this tool to delete a Miro board. Boards on paid plans are moved to Trash and can be restored via the UI within 90 days. Ensure you have the necessary 'boards:write' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}".format(board_id=board_unique_id), # noqa: UP032
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_miro_app_card_info(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the Miro board for retrieving a specific app card item."
+ ],
+ item_id: Annotated[
+ str, "Unique identifier (ID) of the app card item to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-app-card-item'."]:
+ """Retrieve information for a specific Miro app card.
+
+ This tool retrieves details about an app card item on a Miro board, requiring 'boards:read' scope. It's useful for getting detailed information about app cards on a board to display or process further.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/app_cards/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_miro_app_card(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the board from which you want to delete an item."
+ ],
+ item_id_to_delete: Annotated[
+ str, "The unique identifier (ID) of the specific item to delete from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-app-card-item'."]:
+ """Delete an app card item from a Miro board.
+
+ Use this tool to delete a specific app card item from a Miro board, requiring 'boards:write' access. Ensure you have the board ID and item ID before calling.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/app_cards/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id_to_delete
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_miro_card_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board from which to retrieve the specific card item."
+ ],
+ card_item_id: Annotated[
+ str, "Unique identifier (ID) of the card item to retrieve from a Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-card-item'."]:
+ """Retrieve details for a specific Miro board card item.
+
+ Use this tool to get detailed information about a specific card item on a Miro board. This tool is useful when you need to access and display information related to individual cards, such as during planning or collaboration tasks.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/cards/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=card_item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_card_from_board(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str,
+ "Unique ID of the board from which the card item will be deleted. Ensure it is valid and corresponds to the target board.", # noqa: E501
+ ],
+ card_item_id: Annotated[
+ str, "Unique identifier (ID) of the card item to delete from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-card-item'."]:
+ """Delete a card item from a Miro board.
+
+ Use this tool to delete a specific card item from a Miro board when you need to manage board content. Ensure you have the necessary authorization with 'boards:write' scope to perform this action.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/cards/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=card_item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_board_connectors(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "The unique identifier of the Miro board from which to retrieve connectors."
+ ],
+ max_results_per_page: Annotated[
+ str | None,
+ "Sets the maximum number of results to return per page. Use for pagination control.",
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "The cursor value for pagination to retrieve the next set of results. Use the cursor from the previous response.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-connectors'."]:
+ """Retrieve connectors from a specific Miro board.
+
+ Use this tool to obtain a list of connectors from a specified Miro board. It supports cursor-based pagination to retrieve large datasets efficiently.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/connectors".format( # noqa: UP032
+ board_id=board_identifier
+ ),
+ method="GET",
+ params=remove_none_values({"limit": max_results_per_page, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_connector_info(
+ context: ToolContext,
+ board_unique_identifier: Annotated[
+ str, "Unique identifier (ID) of the board from which to retrieve the specific connector."
+ ],
+ connector_identifier: Annotated[
+ str, "Unique identifier for the connector to retrieve details from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-connector'."]:
+ """Retrieve details of a specific connector on a Miro board.
+
+ Use this tool to obtain information about a specific connector on a Miro board. Useful for scenarios where connector details are needed for a given board or project.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/connectors/{connector_id}".format( # noqa: UP032
+ board_id=board_unique_identifier, connector_id=connector_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def remove_connector_from_board(
+ context: ToolContext,
+ board_id_for_connector_removal: Annotated[
+ str, "Unique identifier of the board from which you want to delete the connector."
+ ],
+ connector_id: Annotated[str, "Unique identifier of the connector to be deleted."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-connector'."]:
+ """Remove a specific connector from the board using Miro API.
+
+ Use this tool to delete a specified connector from a Miro board. It is necessary to have the required 'boards:write' scope to perform this action. Useful when managing or updating board elements.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/connectors/{connector_id}".format( # noqa: UP032
+ board_id=board_id_for_connector_removal, connector_id=connector_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_document_item(
+ context: ToolContext,
+ board_unique_id: Annotated[
+ str, "Unique identifier of the board from which to retrieve a specific item."
+ ],
+ item_id: Annotated[
+ str, "Unique identifier (ID) of the item you want to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-document-item'."]:
+ """Retrieve information for a specific document item on a board.
+
+ Use this tool to obtain details about a particular document item located on a board in Miro. Requires 'boards:read' scope access.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/documents/{item_id}".format( # noqa: UP032
+ board_id=board_unique_id, item_id=item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_document_item_from_board(
+ context: ToolContext,
+ board_id: Annotated[
+ str,
+ "Unique identifier (ID) of the board from which you want to delete the item. Ensure the ID is valid and you have write permissions.", # noqa: E501
+ ],
+ item_id_for_deletion: Annotated[
+ str, "The unique identifier (ID) of the item to delete from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-document-item'."]:
+ """Removes a document item from a Miro board.
+
+ Use this tool to delete a specific document item from a Miro board. Ensure you have the necessary permissions ('boards:write' scope) to perform this action.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/documents/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id_for_deletion
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_embed_item_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) of the Miro board to retrieve a specific embed item."
+ ],
+ embed_item_id: Annotated[
+ str, "Unique identifier of the embed item to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-embed-item'."]:
+ """Retrieve information for a specific embed item on a board.
+
+ Use this tool to get details about a specific embed item from a Miro board. It requires the board ID and item ID to retrieve the information. Useful for accessing embed details within a Miro board.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/embeds/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=embed_item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_embed_item(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the board from which the embed item should be deleted."
+ ],
+ item_id: Annotated[str, "Unique identifier of the item to be deleted from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-embed-item'."]:
+ """Delete an embed item from a Miro board.
+
+ Use this tool to delete an embed item from a specific Miro board. It requires the 'boards:write' scope to function.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/embeds/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_board_image_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier for the board to retrieve a specific image item from."
+ ],
+ image_item_id: Annotated[
+ str, "The unique identifier of the image item to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-image-item'."]:
+ """Retrieve information for a specific image item on a board.
+
+ Use this tool to get details about an image item on a Miro board, such as its metadata and properties, using the board and item IDs.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/images/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=image_item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_image_from_board(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier (ID) for the board from which the image will be deleted."
+ ],
+ image_item_id: Annotated[str, "Unique identifier of the image item to delete from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-image-item'."]:
+ """Deletes an image from a Miro board.
+
+ Use this tool to delete an image item from a specific Miro board. Ensure you have the 'boards:write' scope permission. This action is rate-limited at Level 3.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/images/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=image_item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_board_items(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier for the Miro board to retrieve items from."
+ ],
+ limit_number_of_items: Annotated[
+ str | None,
+ "Sets the maximum number of items to retrieve per API call. Useful for pagination and managing large datasets.", # noqa: E501
+ ] = None,
+ item_type_filter: Annotated[
+ str | None,
+ "Specify the type of items to retrieve from the board, such as text, shape, or image.",
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None, "The cursor value from a previous response to retrieve the next set of items."
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-items'."]:
+ """Retrieve a list of items from a specific Miro board.
+
+ This tool retrieves a list of items for a specific board in Miro. It supports filtering to get all items, child items within a parent, or specific item types. Results are paginated using a cursor-based approach. Suitable for tasks requiring retrieval of board contents.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/items".format(board_id=board_identifier), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "limit": limit_number_of_items,
+ "type": item_type_filter,
+ "cursor": pagination_cursor,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def fetch_board_item_details(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) of the board to retrieve a specific item from."
+ ],
+ item_identifier: Annotated[
+ str, "Unique identifier of the item to retrieve from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-specific-item'."]:
+ """Fetches details of a specific item on a Miro board.
+
+ Use this tool to retrieve detailed information about a particular item on a Miro board. Useful when you need to access or display specific item attributes. Requires 'boards:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/items/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_miro_item(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the board from which you want to delete the item."
+ ],
+ item_id: Annotated[
+ str, "The unique identifier for the item you wish to delete from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-item'."]:
+ """Delete an item from a Miro board efficiently.
+
+ Use this tool to delete a specific item from a Miro board when board writing access is granted. Ensure rate limits are considered for optimal performance.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/items/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_members(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) for the Miro board to retrieve its members."
+ ],
+ member_limit: Annotated[
+ str | None,
+ "The maximum number of board members to retrieve in a single request. Specify as an integer string.", # noqa: E501
+ ] = None,
+ results_offset: Annotated[
+ str | None,
+ "The starting point in the list of board members to begin retrieval from, for pagination purposes.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-board-members'."]:
+ """Retrieve members of a specified Miro board.
+
+ Use this tool to get a list of members associated with a specific Miro board. Useful when you need to access or display information about board participants. Requires 'boards:read' scope and adheres to Level 1 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/members".format(board_id=board_identifier), # noqa: UP032
+ method="GET",
+ params=remove_none_values({"limit": member_limit, "offset": results_offset}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_member_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board to which the board member belongs."
+ ],
+ board_member_identifier: Annotated[
+ str, "The unique ID of the board member whose information you want to retrieve."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-specific-board-member'."]:
+ """Retrieve information about a specific Miro board member.
+
+ Use this tool to obtain details about a particular member of a Miro board. It requires board and member identifiers. Ensure you have the required 'boards:read' scope to access this information.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/members/{board_member_id}".format( # noqa: UP032
+ board_id=board_identifier, board_member_id=board_member_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def remove_board_member(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board from which you want to remove a member."
+ ],
+ board_member_id: Annotated[str, "Unique identifier of the board member to remove."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'remove-board-member'."]:
+ """Remove a member from a Miro board.
+
+ Use this tool to remove a specific member from a Miro board. Requires the board ID and member ID. Ensure you have the 'boards:write' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/members/{board_member_id}".format( # noqa: UP032
+ board_id=board_identifier, board_member_id=board_member_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_shape_item_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the Miro board to retrieve a specific item from."
+ ],
+ item_identifier: Annotated[
+ str, "Unique identifier of the item to retrieve from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-shape-item'."]:
+ """Retrieve details of a shape item from a Miro board.
+
+ Use this tool to obtain detailed information about a specific shape item on a Miro board using its board ID and item ID.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/shapes/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_shape_item(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the Miro board from which the shape item will be deleted."
+ ],
+ item_unique_id: Annotated[str, "Unique identifier (ID) of the item to delete from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-shape-item'."]:
+ """Delete a shape item from the Miro board.
+
+ Use this tool to delete a specific shape item from a Miro board. This is useful when you need to manage or organize board contents by removing unnecessary shapes. Requires 'boards:write' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/shapes/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_unique_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_sticky_note_info(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "The unique ID of the Miro board containing the sticky note to retrieve."
+ ],
+ item_identifier: Annotated[
+ str, "Unique identifier of the sticky note item to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-sticky-note-item'."]:
+ """Retrieve details of a specific sticky note on a Miro board.
+
+ Use this tool to get information about a specific sticky note item on a Miro board by providing the board ID and item ID. It requires 'boards:read' permissions and may be subject to rate limits.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/sticky_notes/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_sticky_note(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier of the board from which the sticky note will be deleted."
+ ],
+ sticky_note_id: Annotated[
+ str, "Unique identifier (ID) of the sticky note to delete from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-sticky-note-item'."]:
+ """Removes a sticky note item from a Miro board.
+
+ Use this tool to delete a specific sticky note from a board in Miro. Requires appropriate board permissions.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/sticky_notes/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=sticky_note_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_text_item(
+ context: ToolContext,
+ board_unique_id: Annotated[str, "Unique ID of the board to retrieve a specific text item."],
+ item_identifier: Annotated[
+ str, "Unique identifier of the text item you want to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-text-item'."]:
+ """Fetches details of a text item from a Miro board.
+
+ This tool retrieves information for a specific text item on a Miro board using the board and item IDs. It requires 'boards:read' access.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/texts/{item_id}".format( # noqa: UP032
+ board_id=board_unique_id, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_board_text_item(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board from which the text item will be deleted."
+ ],
+ text_item_id: Annotated[
+ str, "Unique identifier (ID) of the text item you want to delete from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-text-item'."]:
+ """Delete a text item from a Miro board.
+
+ Use this tool to delete a specific text item from a Miro board. This action requires 'boards:write' scope and adheres to level 3 rate limiting. Call this tool when you need to remove unwanted or outdated text entries from your board.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/texts/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=text_item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_frame_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board containing the frame to retrieve."
+ ],
+ frame_id: Annotated[str, "Unique identifier of the frame to retrieve from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-frame-item'."]:
+ """Retrieve specific frame details from a Miro board.
+
+ This tool retrieves information about a particular frame on a specified Miro board. It is useful when you need details of a frame, such as its size and content, for board organization or analysis.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/frames/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=frame_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_board_frame(
+ context: ToolContext,
+ board_unique_id: Annotated[
+ str, "The unique ID of the board from which the frame will be deleted."
+ ],
+ frame_id: Annotated[str, "Unique identifier of the frame to be deleted from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-frame-item'."]:
+ """Delete a frame from a specified board.
+
+ Use this tool to delete a frame from a Miro board by specifying the board ID and frame item ID. This action requires the 'boards:write' scope. Ideal for managing board content by removing unnecessary frames.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/frames/{item_id}".format( # noqa: UP032
+ board_id=board_unique_id, item_id=frame_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_items_within_frame(
+ context: ToolContext,
+ frame_id: Annotated[
+ str, "The ID of the frame to retrieve all child items from on the Miro board."
+ ],
+ board_id: Annotated[
+ str, "Unique identifier (ID) of the Miro board containing the frame to retrieve items from."
+ ],
+ results_limit: Annotated[
+ str | None,
+ "The maximum number of items to return in the response. Helps control pagination size.",
+ ] = None,
+ item_type: Annotated[
+ str | None,
+ "Specify the type of items to retrieve within the frame. Use for filtering by item type.",
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "Cursor for pagination to retrieve the next set of results. Use the value from the previous response to continue fetching items.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-items-within-frame'."]:
+ """Retrieve items within a specific frame in a Miro board.
+
+ Use this tool to obtain items located within a particular frame on a Miro board. It supports cursor-based pagination for efficient data retrieval. Ideal for accessing and managing child items of a frame.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id_PlatformContainers}/items".format( # noqa: UP032
+ board_id_PlatformContainers=board_id
+ ),
+ method="GET",
+ params=remove_none_values({
+ "parent_item_id": frame_id,
+ "limit": results_limit,
+ "type": item_type,
+ "cursor": pagination_cursor,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_app_usage_metrics(
+ context: ToolContext,
+ start_date_utc: Annotated[str, "Start date of the period in UTC format (e.g., 2024-12-31)."],
+ end_date: Annotated[str, "End date of the period in UTC format (e.g., 2024-12-31)."],
+ app_id: Annotated[
+ str,
+ "The unique identifier of the app to retrieve usage metrics for. This ID specifies which app's data to fetch.", # noqa: E501
+ ],
+ group_metrics_by_period: Annotated[
+ str | None,
+ "The time period to group the data by. Accepted values: 'DAY', 'WEEK', or 'MONTH'.",
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-metrics'."]:
+ """Fetch usage metrics for a specific app over a time range.
+
+ Call this tool to obtain usage metrics for a specific app within a given time period. It's useful for tracking app performance and usage patterns. An app management API token is required to access this information.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/apps/{app_id}/metrics".format(app_id=app_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "startDate": start_date_utc,
+ "endDate": end_date,
+ "period": group_metrics_by_period,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_total_usage_metrics(
+ context: ToolContext,
+ app_id: Annotated[
+ str, "The unique identifier of the Miro app to retrieve total usage metrics for."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-metrics-total'."]:
+ """Retrieve total usage metrics for a specific app.
+
+ This tool returns the total usage metrics for a Miro app since its creation. It requires an app management API token with 'boards:read' scope. Ideal for monitoring app performance and usage over time.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/apps/{app_id}/metrics-total".format( # noqa: UP032
+ app_id=app_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_user_webhook_subscriptions(
+ context: ToolContext,
+ subscription_limit: Annotated[
+ str | None,
+ "Specify the maximum number of webhook subscriptions to retrieve. Use integer values.",
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "A string used to paginate through large sets of webhook subscriptions. Use the cursor returned from a previous call to get the next set of results.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-user-subscriptions'."]:
+ """Retrieve webhook subscription details for a specific user.
+
+ Call this tool to get information about all webhook subscriptions associated with a user. This is useful for managing webhook integrations. Requires 'boards:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/webhooks/subscriptions",
+ method="GET",
+ params=remove_none_values({"limit": subscription_limit, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_subscription_info(
+ context: ToolContext,
+ subscription_identifier: Annotated[
+ str, "Unique identifier of the subscription to retrieve information for."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-subscription-by-id'."]:
+ """Retrieve information for a specific webhook subscription.
+
+ Use this tool to get detailed information about a particular webhook subscription in Miro. It requires the 'boards:read' scope and is subject to Level 2 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/webhooks/subscriptions/{subscription_id}".format( # noqa: UP032
+ subscription_id=subscription_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_webhook_subscription(
+ context: ToolContext,
+ subscription_id: Annotated[
+ str,
+ "Unique identifier (ID) of the subscription that you want to delete. This is required to specify which subscription will be deleted.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-subscription-by-id'."]:
+ """Delete a specified webhook subscription.
+
+ Use this tool to delete a specific webhook subscription by its ID. Ensure the required 'boards:read' scope is available. Appropriate for managing or cleaning up webhook subscriptions.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/webhooks/subscriptions/{subscription_id}".format( # noqa: UP032
+ subscription_id=subscription_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_mindmap_node_info(
+ context: ToolContext,
+ board_identifier: Annotated[str, "Unique identifier of the board to retrieve a mind map node."],
+ mindmap_node_id: Annotated[
+ str, "Unique identifier of the mind map node to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-mindmap-node-experimental'."]:
+ """Retrieve information for a specific mind map node.
+
+ Use this tool to get details about a specific mind map node on a Miro board. Useful for accessing node information when managing or analyzing mind maps.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=mindmap_node_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_mindmap_node(
+ context: ToolContext,
+ board_unique_identifier: Annotated[
+ str, "Unique identifier of the board from which the mind map node will be deleted."
+ ],
+ node_id_to_delete: Annotated[
+ str, "Unique identifier of the mind map node to delete, including its children."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'delete-mindmap-node-experimental'."
+]:
+ """Delete a mind map node and its children from the board.
+
+ This tool is used to delete a specified mind map node and its child nodes from a Miro board. It requires write access to boards and is subject to Level 3 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}".format( # noqa: UP032
+ board_id=board_unique_identifier, item_id=node_id_to_delete
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_mindmap_nodes(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str,
+ "The unique identifier for the Miro board to retrieve mind map nodes from. Ensure this ID is valid and corresponds to an existing board.", # noqa: E501
+ ],
+ max_results_limit: Annotated[
+ str | None,
+ "Specifies the maximum number of mind map nodes to return in a single call. Use it to control data page size.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "A string indicating the position in the paginated results to fetch the next set of mind map nodes. Use the value provided in the previous API response to continue fetching additional results.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-mindmap-nodes-experimental'."]:
+ """Fetches mind map nodes from a specified board.
+
+ Use this tool to retrieve a list of mind map nodes for a specific board in Miro. It supports cursor-based pagination for fetching large sets of nodes incrementally. Requires 'boards:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes".format( # noqa: UP032
+ board_id=board_identifier
+ ),
+ method="GET",
+ params=remove_none_values({"limit": max_results_limit, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_items(
+ context: ToolContext,
+ board_identifier: Annotated[str, "Unique identifier of the Miro board to retrieve items from."],
+ item_limit: Annotated[
+ str | None,
+ "Specifies the maximum number of items to retrieve from the board in one request.",
+ ] = None,
+ item_type: Annotated[
+ str | None, "Specify the type of items to retrieve, such as 'shape'."
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "The cursor value to retrieve the next set of results for board items. Use the value from the previous response's cursor to paginate through results.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-items-experimental'."]:
+ """Retrieve items from a Miro board.
+
+ This tool retrieves a list of items from a specific Miro board using a cursor-based pagination method. It can fetch all items, child items within a parent item, or specific types of items based on query parameters. Useful for managing and navigating board content efficiently.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/items".format( # noqa: UP032
+ board_id=board_identifier
+ ),
+ method="GET",
+ params=remove_none_values({
+ "limit": item_limit,
+ "type": item_type,
+ "cursor": pagination_cursor,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_item_details(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) of the board to retrieve a specific item from."
+ ],
+ item_identifier: Annotated[
+ str, "Unique identifier (ID) of the item to retrieve from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-specific-item-experimental'."]:
+ """Get details of a specific item from a Miro board.
+
+ Use this tool to retrieve information about a specific item on a Miro board. You will need the board and item IDs to access the details. Ensure you have the necessary 'boards:read' scope to perform this action.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/items/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_board_item(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier (ID) of the board from which the item will be deleted."
+ ],
+ item_id: Annotated[str, "The unique ID of the item to delete from the board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-item-experimental'."]:
+ """Deletes an item from a Miro board.
+
+ Use this tool to delete a specific item from a board in Miro. This requires 'boards:write' scope and is subject to Level 3 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/items/{item_id}".format( # noqa: UP032
+ board_id=board_id, item_id=item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_shape_details(
+ context: ToolContext,
+ board_identifier: Annotated[str, "Unique identifier of the board to retrieve a specific item."],
+ shape_item_id: Annotated[
+ str, "Unique identifier (ID) of the shape item to retrieve from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-shape-item-flowchart'."]:
+ """Retrieve information for a specific shape item on a board.
+
+ This tool retrieves detailed information for a specific shape item on a Miro board. It should be called when you need to access data about a particular shape within a flowchart or other diagram. Requires board read access.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/shapes/{item_id}".format( # noqa: UP032
+ board_id=board_identifier, item_id=shape_item_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_flowchart_shape(
+ context: ToolContext,
+ board_unique_identifier: Annotated[
+ str, "Unique identifier of the Miro board to delete the flowchart shape from."
+ ],
+ shape_item_id: Annotated[
+ str, "Unique identifier (ID) of the shape item to be deleted from the board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-shape-item-flowchart'."]:
+ """Delete a flowchart shape item from a Miro board.
+
+ Use this tool to remove a specific shape item from a flowchart on a Miro board. Useful for managing and updating flowchart designs.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2-experimental/boards/{board_id}/shapes/{item_id}".format( # noqa: UP032
+ board_id=board_unique_identifier, item_id=shape_item_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def list_board_groups(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board to fetch its groups and items."
+ ],
+ maximum_items_to_return: Annotated[
+ int | None,
+ "Specify the maximum number of items to return in one call. Default is 10, and maximum is 50.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "Cursor for fetching the next set of results in paginated requests. Use the cursor value received from the previous response to continue pagination.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-all-groups'."]:
+ """Retrieve all groups and their items from a board.
+
+ Use this tool to get all the groups along with their items within a specified board on Miro. It supports cursor-based pagination for retrieving large sets of data. This tool is useful for those who need to manage or analyze board groups efficiently.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/groups".format(board_id=board_identifier), # noqa: UP032
+ method="GET",
+ params=remove_none_values({"limit": maximum_items_to_return, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_items_by_group(
+ context: ToolContext,
+ group_id: Annotated[str, "The unique ID of the group item to retrieve from the board."],
+ board_id: Annotated[
+ str, "Unique identifier (ID) of the specific board from which to retrieve group items."
+ ],
+ max_items_to_return: Annotated[
+ int | None,
+ "The maximum number of items to return at one time. Defaults to 10, with a maximum of 50.",
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "A string token to fetch the next set of paginated results. Use the cursor value returned from a previous call to continue retrieving results.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'getItemsByGroupId'."]:
+ """Retrieve items part of a group within a board.
+
+ Use this tool to get a list of items that belong to any group within a specific board on Miro. It supports cursor-based pagination, allowing retrieval of items in parts using a cursor for managing large collections effectively.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/groups/items".format(board_id=board_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "limit": max_items_to_return,
+ "cursor": pagination_cursor,
+ "group_item_id": group_id,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_group_items(
+ context: ToolContext,
+ board_id: Annotated[str, "Unique identifier (ID) of the board to retrieve group items from."],
+ group_identifier: Annotated[str, "Unique identifier of the group for retrieving its items."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'getGroupById'."]:
+ """Retrieve a list of items in a specific group on a board.
+
+ Use this tool to get all items within a specific group on a Miro board by providing the board and group IDs.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/groups/{group_id}".format( # noqa: UP032
+ board_id=board_id, group_id=group_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def ungroup_items_in_miro(
+ context: ToolContext,
+ board_id: Annotated[str, "Unique identifier (ID) of the Miro board for ungrouping items."],
+ group_identifier: Annotated[
+ str, "Unique identifier of the group to be ungrouped on the Miro board."
+ ],
+ delete_items_after_ungrouping: Annotated[
+ bool | None, "Indicate whether items should be removed after ungrouping. Defaults to false."
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'unGroup'."]:
+ """Ungroups items from a group in Miro boards.
+
+ This tool is used to ungroup items within a specified group on a Miro board. It requires the 'boards:write' scope and adheres to level 3 rate limiting. Use this tool when you need to separate items that have been grouped together in a Miro board.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/groups/{group_id}".format( # noqa: UP032
+ board_id=board_id, group_id=group_identifier
+ ),
+ method="DELETE",
+ params=remove_none_values({"delete_items": delete_items_after_ungrouping}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_group_from_board(
+ context: ToolContext,
+ board_id: Annotated[str, "Unique identifier (ID) of the board to delete the group from."],
+ group_id: Annotated[str, "Unique identifier (ID) of the group to be deleted from the board."],
+ delete_items_in_group: Annotated[
+ bool, "Set to `true` to delete the items in the group along with the group itself."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteGroup'."]:
+ """Delete a group and its items from a Miro board.
+
+ Use this tool to delete a specific group from a Miro board along with all its items. It requires the `boards:write` scope and is subject to Level 3 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/groups/{group_id}?".format( # noqa: UP032
+ board_id=board_id, group_id=group_id
+ ),
+ method="DELETE",
+ params=remove_none_values({"delete_items": delete_items_in_group}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_tags_from_item(
+ context: ToolContext,
+ board_id: Annotated[
+ str, "Unique identifier (ID) of the board containing the item whose tags need retrieval."
+ ],
+ item_identifier: Annotated[
+ str,
+ "Unique identifier (ID) of the item from which to retrieve tags. Required to specify which item's tags you wish to get from a Miro board.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-tags-from-item'."]:
+ """Retrieve all tags from a specified item on a board.
+
+ Use this tool to obtain all tags from a specific item on a Miro board. This is useful for organizing and categorizing items. Requires 'boards:read' scope.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/items/{item_id}/tags".format( # noqa: UP032
+ board_id=board_id, item_id=item_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_tags(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) of the Miro board from which to retrieve tags."
+ ],
+ max_tags_limit: Annotated[
+ str | None,
+ "Specifies the maximum number of tags to retrieve from the board. Leave blank to retrieve all available tags.", # noqa: E501
+ ] = None,
+ offset: Annotated[
+ str | None,
+ "The starting position in the list of tags to begin retrieving from. Useful for pagination.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-tags-from-board'."]:
+ """Retrieve all tags from a specified Miro board.
+
+ Use this tool to get a list of all tags from a specific Miro board by providing the board ID. This is useful for organizing or analyzing board elements.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/tags".format(board_id=board_identifier), # noqa: UP032
+ method="GET",
+ params=remove_none_values({"limit": max_tags_limit, "offset": offset}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_tag_info(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier (ID) of the board from which to retrieve a specific tag."
+ ],
+ tag_id: Annotated[str, "Unique identifier of the tag to retrieve from the Miro board."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-tag'."]:
+ """Retrieve information for a specific tag on a Miro board.
+
+ Use this tool to fetch details about a particular tag on a Miro board. Requires 'boards:write' scope. Intended for retrieving tag metadata to enhance user interactions with board contents.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/tags/{tag_id}".format( # noqa: UP032
+ board_id=board_identifier, tag_id=tag_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_tag_from_board(
+ context: ToolContext,
+ board_identifier: Annotated[
+ str, "Unique identifier of the board where the tag will be deleted."
+ ],
+ tag_id_to_delete: Annotated[
+ str, "Unique identifier of the tag you want to delete from the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-tag'."]:
+ """Delete a tag from a Miro board and all associated items.
+
+ This tool deletes a specified tag from a Miro board, removing it from all associated cards and sticky notes. Note that changes from the API are not reflected in real-time on the board; a refresh is required to see updates.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id}/tags/{tag_id}".format( # noqa: UP032
+ board_id=board_identifier, tag_id=tag_id_to_delete
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_board_items_by_tag(
+ context: ToolContext,
+ tag_identifier: Annotated[str, "Unique identifier of the tag to be retrieved from the board."],
+ board_id: Annotated[
+ str, "Unique identifier (ID) of the board to retrieve items with a specific tag."
+ ],
+ item_limit: Annotated[
+ str | None,
+ "Specifies the maximum number of items to return. It should be an integer value (e.g., '10', '20').", # noqa: E501
+ ] = None,
+ results_starting_position: Annotated[
+ str | None, "The position to start retrieving items from. Use for pagination in lists."
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-items-by-tag'."]:
+ """Retrieve items with a specific tag from a Miro board.
+
+ Use this tool to get all items from a Miro board that have a specified tag. It requires 'boards:read' scope and follows Level 1 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id_PlatformTags}/items".format( # noqa: UP032
+ board_id_PlatformTags=board_id
+ ),
+ method="GET",
+ params=remove_none_values({
+ "limit": item_limit,
+ "offset": results_starting_position,
+ "tag_id": tag_identifier,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def attach_tag_to_item(
+ context: ToolContext,
+ tag_identifier: Annotated[
+ str, "The unique ID of the tag to attach to the specified item on Miro."
+ ],
+ board_id: Annotated[
+ str,
+ "Unique identifier (ID) of the board containing the item to which you want to add a tag.",
+ ],
+ item_id: Annotated[
+ str, "Unique identifier of the item to which you want to attach a tag on the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'attach-tag-to-item'."]:
+ """Attach an existing tag to a specified board item in Miro.
+
+ Use this tool to attach an existing tag to a card or sticky note item on a Miro board. Note that updates made via this tool will not be reflected on the board in real-time; you need to refresh the board to see changes. Suitable for up to 8 tags per item.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id_PlatformTags}/items/{item_id}".format( # noqa: UP032
+ board_id_PlatformTags=board_id, item_id=item_id
+ ),
+ method="POST",
+ params=remove_none_values({"tag_id": tag_identifier}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def remove_tag_from_item(
+ context: ToolContext,
+ tag_identifier: Annotated[
+ str, "Unique identifier (ID) of the tag to be removed from the item."
+ ],
+ board_id: Annotated[
+ str,
+ "Unique identifier (ID) of the board with the item from which you want to remove a tag.",
+ ],
+ item_identifier: Annotated[
+ str, "Unique identifier of the item from which the tag will be removed on the Miro board."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'remove-tag-from-item'."]:
+ """Remove a specified tag from an item on a Miro board.
+
+ Use this tool to remove a specific tag from an item on a Miro board. The tag will still exist on the board, but will no longer be attached to the item. Note that updates via the API will not reflect in real-time on the board; a refresh is required to see changes.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/boards/{board_id_PlatformTags}/items/{item_id}".format( # noqa: UP032
+ board_id_PlatformTags=board_id, item_id=item_identifier
+ ),
+ method="DELETE",
+ params=remove_none_values({"tag_id": tag_identifier}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_miro_team_projects(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The ID of the Miro organization for retrieving the list of projects."
+ ],
+ team_identifier: Annotated[
+ str, "The unique ID of the team for which you want to retrieve the list of projects."
+ ],
+ results_limit: Annotated[
+ int | None,
+ "The maximum number of project results to return per call. If more projects exist, a cursor for pagination will be provided.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "Specify the cursor value to paginate through results. Leave empty for the first page; use the value from the previous response for subsequent pages.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-projects'."]:
+ """Retrieve a list of projects for a specified team in a Miro organization.
+
+ This tool retrieves all projects in a specified team of an organization using Miro's Enterprise API. Accessible only to Company Admins with the Enterprise plan, it allows fetching both shared and private projects by leveraging Content Admin permissions.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier
+ ),
+ method="GET",
+ params=remove_none_values({"limit": results_limit, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_enterprise_project_info(
+ context: ToolContext,
+ organization_id: Annotated[str, "The ID of the organization to retrieve project info from."],
+ team_id: Annotated[
+ str, "The ID of the team from which you want to retrieve the project information."
+ ],
+ project_id: Annotated[
+ str,
+ "The ID of the project from which to retrieve information. Required for fetching project details.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-project'."]:
+ """Get details of a specific enterprise project.
+
+ This tool retrieves information about an existing project within an enterprise plan on Miro. It requires 'projects:read' access and is only available for Company Admins in the Enterprise plan. Use this tool to fetch details like the project's name for a given organization, team, and project ID.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id, project_id=project_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_miro_project(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique ID of the organization from which the project will be deleted."
+ ],
+ team_id_for_project_deletion: Annotated[
+ str, "The ID of the team from which you want to delete a project in Miro."
+ ],
+ project_id: Annotated[str, "The ID of the project to delete within the Miro team."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-delete-project'."]:
+ """Delete a project from a team in Miro's Enterprise plan.
+
+ This tool deletes a specified project within a team while retaining all boards and users. Available only to Enterprise plan users with Company Admin privileges. Ensure the required scope 'projects:write' is available.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id_for_project_deletion, project_id=project_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_project_settings(
+ context: ToolContext,
+ organization_id: Annotated[str, "The ID of the organization to which the project belongs."],
+ team_id: Annotated[
+ str, "The ID of the team to which the project belongs for retrieving its settings."
+ ],
+ project_identifier: Annotated[
+ str,
+ "The unique identifier for the project whose settings are to be retrieved. This ID is required to specify the exact project within the organization and team context.", # noqa: E501
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-project-settings'."]:
+ """Retrieve settings for a specific project in an enterprise environment.
+
+ This tool retrieves the settings of a specified project within an enterprise environment. It is intended for use by users with the Company Admin role on Miro's Enterprise plan. The required API scope is 'projects:read', and it adheres to rate limiting level 1.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/settings".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id, project_id=project_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_project_members(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique ID of the organization to which the project belongs."
+ ],
+ team_id: Annotated[
+ str,
+ "The ID of the team to which the project belongs. This should be a string representing the unique identifier for the team.", # noqa: E501
+ ],
+ project_id: Annotated[
+ str, "The unique identifier of the project for which to retrieve member details."
+ ],
+ maximum_results_per_call: Annotated[
+ int | None,
+ "The maximum number of project members to return in a single call. If exceeded, a cursor for pagination is provided.", # noqa: E501
+ ] = None,
+ pagination_cursor: Annotated[
+ str | None,
+ "The cursor for pagination. Leave empty for the first page or use the value returned in the last call for subsequent pages.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-project-members'."]:
+ """Retrieve members of a specified project for Enterprise users.
+
+ This tool retrieves the list of members for a specific project in Miro, available exclusively for Enterprise plan users with the Company Admin role. It should be called when you need to know who is part of a particular project team.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id, project_id=project_id
+ ),
+ method="GET",
+ params=remove_none_values({"limit": maximum_results_per_call, "cursor": pagination_cursor}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_project_member_info(
+ context: ToolContext,
+ organization_id: Annotated[str, "The ID of the organization to which the project belongs."],
+ team_id: Annotated[str, "The unique identifier of the team to which the project belongs."],
+ project_id: Annotated[
+ str, "The ID of the project to retrieve specific member information from."
+ ],
+ member_id: Annotated[str, "ID of the member whose information you want to retrieve."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-project-member'."]:
+ """Retrieve information for a specific project member.
+
+ This tool retrieves information about a specific member of a project for users with the Enterprise plan in Miro. It requires 'projects:read' scope and Company Admin rights. Use this tool to gain insights into project member roles and details in an enterprise setting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id, project_id=project_id, member_id=member_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def remove_project_member(
+ context: ToolContext,
+ organization_id: Annotated[str, "The ID of the organization associated with the project."],
+ team_id: Annotated[
+ str,
+ "The unique identifier for the team associated with the project from which a member is being removed.", # noqa: E501
+ ],
+ project_identifier: Annotated[
+ str, "The unique identifier of the project from which a member will be removed."
+ ],
+ member_id: Annotated[
+ str,
+ "The ID of the member to remove from the Miro project. This ID is necessary to specify which member will be removed.", # noqa: E501
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-delete-project-member'."
+]:
+ """Remove a member from a Miro project.
+
+ This tool removes a specified member from a project within the Miro platform. Note that the member will still remain part of the team even after being removed from the project. This action requires enterprise-level access and can only be performed by a Company Admin.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}".format( # noqa: UP032
+ org_id=organization_id,
+ team_id=team_id,
+ project_id=project_identifier,
+ member_id=member_id,
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_organization_teams(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique identifier for the organization to retrieve teams for."
+ ],
+ result_limit: Annotated[
+ int | None,
+ "The maximum number of teams to return in the response. This controls the pagination of the results.", # noqa: E501
+ ] = None,
+ page_cursor: Annotated[
+ str | None,
+ "Indicator for the current page position. Leave empty for first page or use the value from the previous request's cursor for subsequent pages.", # noqa: E501
+ ] = None,
+ team_name_filter: Annotated[
+ str | None,
+ "Filters teams by name using a case insensitive partial match. For example, 'dev' will match both 'Developer's team' and 'Team for developers'.", # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-teams'."]:
+ """Retrieve a list of teams in an enterprise organization.
+
+ Use this tool to retrieve a list of teams within an existing enterprise organization on Miro. This is available only for Enterprise plan users with Company Admin roles. Ensure appropriate 'organizations:teams:read' scope access is granted.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams".format(org_id=organization_id), # noqa: UP032
+ method="GET",
+ params=remove_none_values({
+ "limit": result_limit,
+ "cursor": page_cursor,
+ "name": team_name_filter,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_team_information(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique identifier for the Organization. Required to retrieve team information."
+ ],
+ team_identifier: Annotated[
+ str, "The unique identifier for the team. Required to fetch specific team details."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-team'."]:
+ """Retrieve team information for an existing team in Enterprise plan.
+
+ This tool retrieves detailed information about a specific team within an organization. It's designed for Enterprise plan users who have Company Admin roles. The tool should be used when there's a need to access or confirm team details, ensuring you have the necessary permissions to execute this request.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def delete_enterprise_team(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique identifier of the Organization for which the team is to be deleted."
+ ],
+ team_id: Annotated[str, "The unique identifier of the team to be deleted."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-delete-team'."]:
+ """Delete a team in an enterprise Miro account.
+
+ Use this tool to delete an existing team in an Enterprise Miro account. This action is only available to Company Admins and requires the 'organizations:teams:write' scope. Ensure you have access to Enterprise APIs before proceeding.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def retrieve_team_members(
+ context: ToolContext,
+ organization_id: Annotated[str, "The unique identifier for the Organization."],
+ team_id: Annotated[str, "The ID of the team to retrieve members from. Must be a string."],
+ results_limit: Annotated[
+ int | None,
+ "Specifies the maximum number of team members to retrieve per request. Must be a positive integer.", # noqa: E501
+ ] = None,
+ page_cursor: Annotated[
+ str | None,
+ "Indicator for the current page in the result set. Leave empty for first page; use value from previous response for next pages.", # noqa: E501
+ ] = None,
+ filter_by_role: Annotated[
+ str | None,
+ 'Filters members by their role in the team. Accepted values: "member", "admin", "non_team", "team_guest". Use full word match.', # noqa: E501
+ ] = None,
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-team-members'."]:
+ """Retrieve members of a specific Enterprise team.
+
+ Use this tool to obtain a list of team members for a specified team in your organization. It's designed for Enterprise plan users with Company Admin roles. Ensure you have the necessary read permissions for organizations:teams:read.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id
+ ),
+ method="GET",
+ params=remove_none_values({
+ "limit": results_limit,
+ "cursor": page_cursor,
+ "role": filter_by_role,
+ }),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_team_member_info(
+ context: ToolContext,
+ organization_id: Annotated[str, "The unique identifier for the Organization."],
+ team_id: Annotated[
+ str,
+ "The unique identifier for the team. This is required to retrieve the team member's details.", # noqa: E501
+ ],
+ team_member_id: Annotated[
+ str, "The unique identifier for the team member whose information is to be retrieved."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-team-member'."]:
+ """Retrieve details of a team member using their ID.
+
+ This tool retrieves information about a team member by their ID. It requires enterprise-level access and the role of a Company Admin. It should be used to access specific member details within an organization.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_id, member_id=team_member_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def remove_team_member(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The ID of the organization from which the team member will be removed."
+ ],
+ team_identifier: Annotated[
+ str, "The unique identifier for the team from which the member will be removed."
+ ],
+ team_member_id: Annotated[str, "The ID of the team member to be removed from the team."],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-delete-team-member'."]:
+ """Remove a team member from a Miro Enterprise plan team.
+
+ This tool deletes a specified team member by their ID from a team within the Miro Enterprise plan. It requires the 'organizations:teams:write' scope and is available only for users with the role of Company Admin. Suitable for managing team compositions within organizations.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier, member_id=team_member_id
+ ),
+ method="DELETE",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_organization_default_team_settings(
+ context: ToolContext,
+ organization_id: Annotated[
+ str, "The unique identifier for an organization to retrieve its default team settings."
+ ],
+) -> Annotated[
+ dict[str, Any], "Response from the API endpoint 'enterprise-get-default-team-settings'."
+]:
+ """Retrieve default team settings for an organization.
+
+ Fetches the default team settings of an existing organization for users with Enterprise plan and Company Admin role. Requires the 'organizations:teams:read' scope and is subject to Level 1 rate limiting.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/default_teams_settings".format( # noqa: UP032
+ org_id=organization_id
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
+
+
+@tool(requires_auth=OAuth2(id="arcade-miro"))
+async def get_team_settings(
+ context: ToolContext,
+ organization_id: Annotated[str, "The unique identifier for the organization in Miro."],
+ team_identifier: Annotated[
+ str, "The unique identifier for the team whose settings are to be retrieved."
+ ],
+) -> Annotated[dict[str, Any], "Response from the API endpoint 'enterprise-get-team-settings'."]:
+ """Retrieve team settings in an enterprise Miro account.
+
+ This tool retrieves the settings for a specific team within an enterprise Miro account. It is intended for users with the Company Admin role and requires access to the Enterprise plan. Use this when you need to access or verify the settings of a team in your organization's Miro account.""" # noqa: E501
+ response = await make_request(
+ url="https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/settings".format( # noqa: UP032
+ org_id=organization_id, team_id=team_identifier
+ ),
+ method="GET",
+ params=remove_none_values({}),
+ headers=remove_none_values({
+ "Authorization": "Bearer {authorization}".format( # noqa: UP032
+ authorization=context.get_auth_token_or_empty()
+ )
+ }),
+ data=remove_none_values({}),
+ )
+ try:
+ return {"response_json": response.json()}
+ except Exception:
+ return {"response_text": response.text}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/AttachTagToItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/AttachTagToItem.json
new file mode 100644
index 00000000..354d24dd
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/AttachTagToItem.json
@@ -0,0 +1,165 @@
+{
+ "name": "AttachTagToItem",
+ "fully_qualified_name": "MiroApi.AttachTagToItem@0.1.0",
+ "description": "Attach an existing tag to a specified board item in Miro.\n\nUse this tool to attach an existing tag to a card or sticky note item on a Miro board. Note that updates made via this tool will not be reflected on the board in real-time; you need to refresh the board to see changes. Suitable for up to 8 tags per item.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "tag_identifier",
+ "required": true,
+ "description": "The unique ID of the tag to attach to the specified item on Miro.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag you want to add to the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "tag_id"
+ },
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board containing the item to which you want to add a tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item that you want to add a tag to."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id_PlatformTags"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "Unique identifier of the item to which you want to attach a tag on the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item to which you want to add a tag."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'attach-tag-to-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id_PlatformTags}/items/{item_id}",
+ "http_method": "POST",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "tag_id",
+ "tool_parameter_name": "tag_identifier",
+ "description": "Unique identifier (ID) of the tag you want to add to the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag you want to add to the item."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id_PlatformTags",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board with the item that you want to add a tag to.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item that you want to add a tag to."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item to which you want to add a tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item to which you want to add a tag."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardFrame.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardFrame.json
new file mode 100644
index 00000000..104e337d
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardFrame.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteBoardFrame",
+ "fully_qualified_name": "MiroApi.DeleteBoardFrame@0.1.0",
+ "description": "Delete a frame from a specified board.\n\nUse this tool to delete a frame from a Miro board by specifying the board ID and frame item ID. This action requires the 'boards:write' scope. Ideal for managing board content by removing unnecessary frames.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_id",
+ "required": true,
+ "description": "The unique ID of the board from which the frame will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the frame."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "frame_id",
+ "required": true,
+ "description": "Unique identifier of the frame to be deleted from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the frame that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-frame-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/frames/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the frame.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the frame."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "frame_id",
+ "description": "Unique identifier (ID) of the frame that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the frame that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardItem.json
new file mode 100644
index 00000000..e4d09c60
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteBoardItem",
+ "fully_qualified_name": "MiroApi.DeleteBoardItem@0.1.0",
+ "description": "Deletes an item from a Miro board.\n\nUse this tool to delete a specific item from a board in Miro. This requires 'boards:write' scope and is subject to Level 3 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board from which the item will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "The unique ID of the item to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-item-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/items/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardTextItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardTextItem.json
new file mode 100644
index 00000000..f1cbb5b1
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteBoardTextItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteBoardTextItem",
+ "fully_qualified_name": "MiroApi.DeleteBoardTextItem@0.1.0",
+ "description": "Delete a text item from a Miro board.\n\nUse this tool to delete a specific text item from a Miro board. This action requires 'boards:write' scope and adheres to level 3 rate limiting. Call this tool when you need to remove unwanted or outdated text entries from your board.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board from which the text item will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "text_item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the text item you want to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-text-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/texts/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "text_item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteCardFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteCardFromBoard.json
new file mode 100644
index 00000000..5db32619
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteCardFromBoard.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteCardFromBoard",
+ "fully_qualified_name": "MiroApi.DeleteCardFromBoard@0.1.0",
+ "description": "Delete a card item from a Miro board.\n\nUse this tool to delete a specific card item from a Miro board when you need to manage board content. Ensure you have the necessary authorization with 'boards:write' scope to perform this action.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique ID of the board from which the card item will be deleted. Ensure it is valid and corresponds to the target board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "card_item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the card item to delete from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-card-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/cards/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "card_item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteDocumentItemFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteDocumentItemFromBoard.json
new file mode 100644
index 00000000..b638c0d5
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteDocumentItemFromBoard.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteDocumentItemFromBoard",
+ "fully_qualified_name": "MiroApi.DeleteDocumentItemFromBoard@0.1.0",
+ "description": "Removes a document item from a Miro board.\n\nUse this tool to delete a specific document item from a Miro board. Ensure you have the necessary permissions ('boards:write' scope) to perform this action.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item. Ensure the ID is valid and you have write permissions.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id_for_deletion",
+ "required": true,
+ "description": "The unique identifier (ID) of the item to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-document-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/documents/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id_for_deletion",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEmbedItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEmbedItem.json
new file mode 100644
index 00000000..9fcf026e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEmbedItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteEmbedItem",
+ "fully_qualified_name": "MiroApi.DeleteEmbedItem@0.1.0",
+ "description": "Delete an embed item from a Miro board.\n\nUse this tool to delete an embed item from a specific Miro board. It requires the 'boards:write' scope to function.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the board from which the embed item should be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "Unique identifier of the item to be deleted from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-embed-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/embeds/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEnterpriseTeam.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEnterpriseTeam.json
new file mode 100644
index 00000000..7c543981
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteEnterpriseTeam.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteEnterpriseTeam",
+ "fully_qualified_name": "MiroApi.DeleteEnterpriseTeam@0.1.0",
+ "description": "Delete a team in an enterprise Miro account.\n\nUse this tool to delete an existing team in an Enterprise Miro account. This action is only available to Company Admins and requires the 'organizations:teams:write' scope. Ensure you have access to Enterprise APIs before proceeding.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier of the Organization for which the team is to be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The unique identifier of the team to be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-delete-team'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteFlowchartShape.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteFlowchartShape.json
new file mode 100644
index 00000000..3df8cc78
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteFlowchartShape.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteFlowchartShape",
+ "fully_qualified_name": "MiroApi.DeleteFlowchartShape@0.1.0",
+ "description": "Delete a flowchart shape item from a Miro board.\n\nUse this tool to remove a specific shape item from a flowchart on a Miro board. Useful for managing and updating flowchart designs.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_identifier",
+ "required": true,
+ "description": "Unique identifier of the Miro board to delete the flowchart shape from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "shape_item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the shape item to be deleted from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-shape-item-flowchart'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/shapes/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "shape_item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteGroupFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteGroupFromBoard.json
new file mode 100644
index 00000000..917b59bd
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteGroupFromBoard.json
@@ -0,0 +1,165 @@
+{
+ "name": "DeleteGroupFromBoard",
+ "fully_qualified_name": "MiroApi.DeleteGroupFromBoard@0.1.0",
+ "description": "Delete a group and its items from a Miro board.\n\nUse this tool to delete a specific group from a Miro board along with all its items. It requires the `boards:write` scope and is subject to Level 3 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board to delete the group from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "group_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the group to be deleted from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "group_id"
+ },
+ {
+ "name": "delete_items_in_group",
+ "required": true,
+ "description": "Set to `true` to delete the items in the group along with the group itself.",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Indicates whether the items should be removed. Set to `true` to delete items in the group."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "delete_items"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'deleteGroup'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/groups/{group_id}?",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "delete_items",
+ "tool_parameter_name": "delete_items_in_group",
+ "description": "Indicates whether the items should be removed. Set to `true` to delete items in the group.",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Indicates whether the items should be removed. Set to `true` to delete items in the group."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "group_id",
+ "tool_parameter_name": "group_id",
+ "description": "Unique identifier (ID) of the group.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteImageFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteImageFromBoard.json
new file mode 100644
index 00000000..4a5e0193
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteImageFromBoard.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteImageFromBoard",
+ "fully_qualified_name": "MiroApi.DeleteImageFromBoard@0.1.0",
+ "description": "Deletes an image from a Miro board.\n\nUse this tool to delete an image item from a specific Miro board. Ensure you have the 'boards:write' scope permission. This action is rate-limited at Level 3.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) for the board from which the image will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "image_item_id",
+ "required": true,
+ "description": "Unique identifier of the image item to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-image-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/images/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "image_item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMindmapNode.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMindmapNode.json
new file mode 100644
index 00000000..5159e5a3
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMindmapNode.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteMindmapNode",
+ "fully_qualified_name": "MiroApi.DeleteMindmapNode@0.1.0",
+ "description": "Delete a mind map node and its children from the board.\n\nThis tool is used to delete a specified mind map node and its child nodes from a Miro board. It requires write access to boards and is subject to Level 3 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_identifier",
+ "required": true,
+ "description": "Unique identifier of the board from which the mind map node will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the mind map node."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "node_id_to_delete",
+ "required": true,
+ "description": "Unique identifier of the mind map node to delete, including its children.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the mind map node that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-mindmap-node-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to delete the mind map node.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the mind map node."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "node_id_to_delete",
+ "description": "Unique identifier (ID) of the mind map node that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the mind map node that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroAppCard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroAppCard.json
new file mode 100644
index 00000000..9a908f5a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroAppCard.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteMiroAppCard",
+ "fully_qualified_name": "MiroApi.DeleteMiroAppCard@0.1.0",
+ "description": "Delete an app card item from a Miro board.\n\nUse this tool to delete a specific app card item from a Miro board, requiring 'boards:write' access. Ensure you have the board ID and item ID before calling.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the board from which you want to delete an item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete an item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id_to_delete",
+ "required": true,
+ "description": "The unique identifier (ID) of the specific item to delete from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-app-card-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/app_cards/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete an item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete an item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id_to_delete",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroBoard.json
new file mode 100644
index 00000000..34c96843
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroBoard.json
@@ -0,0 +1,101 @@
+{
+ "name": "DeleteMiroBoard",
+ "fully_qualified_name": "MiroApi.DeleteMiroBoard@0.1.0",
+ "description": "Delete a Miro board and move it to Trash.\n\nUse this tool to delete a Miro board. Boards on paid plans are moved to Trash and can be restored via the UI within 90 days. Ensure you have the necessary 'boards:write' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_id",
+ "required": true,
+ "description": "Unique identifier of the Miro board to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-board'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_id",
+ "description": "Unique identifier (ID) of the board that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroItem.json
new file mode 100644
index 00000000..d73cb0f8
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteMiroItem",
+ "fully_qualified_name": "MiroApi.DeleteMiroItem@0.1.0",
+ "description": "Delete an item from a Miro board efficiently.\n\nUse this tool to delete a specific item from a Miro board when board writing access is granted. Ensure rate limits are considered for optimal performance.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "The unique identifier for the item you wish to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/items/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroProject.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroProject.json
new file mode 100644
index 00000000..404e988f
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteMiroProject.json
@@ -0,0 +1,165 @@
+{
+ "name": "DeleteMiroProject",
+ "fully_qualified_name": "MiroApi.DeleteMiroProject@0.1.0",
+ "description": "Delete a project from a team in Miro's Enterprise plan.\n\nThis tool deletes a specified project within a team while retaining all boards and users. Available only to Enterprise plan users with Company Admin privileges. Ensure the required scope 'projects:write' is available.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique ID of the organization from which the project will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to delete a project."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id_for_project_deletion",
+ "required": true,
+ "description": "The ID of the team from which you want to delete a project in Miro.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to delete a project."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_id",
+ "required": true,
+ "description": "The ID of the project to delete within the Miro team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-delete-project'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization from which you want to delete a project.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to delete a project."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id_for_project_deletion",
+ "description": "The ID of the team from which you want to delete a project.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to delete a project."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_id",
+ "description": "The ID of the project that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteShapeItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteShapeItem.json
new file mode 100644
index 00000000..280e98dd
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteShapeItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteShapeItem",
+ "fully_qualified_name": "MiroApi.DeleteShapeItem@0.1.0",
+ "description": "Delete a shape item from the Miro board.\n\nUse this tool to delete a specific shape item from a Miro board. This is useful when you need to manage or organize board contents by removing unnecessary shapes. Requires 'boards:write' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the Miro board from which the shape item will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_unique_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the item to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-shape-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/shapes/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_unique_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteStickyNote.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteStickyNote.json
new file mode 100644
index 00000000..189f8b21
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteStickyNote.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteStickyNote",
+ "fully_qualified_name": "MiroApi.DeleteStickyNote@0.1.0",
+ "description": "Removes a sticky note item from a Miro board.\n\nUse this tool to delete a specific sticky note from a board in Miro. Requires appropriate board permissions.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the board from which the sticky note will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "sticky_note_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the sticky note to delete from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-sticky-note-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/sticky_notes/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to delete the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "sticky_note_id",
+ "description": "Unique identifier (ID) of the item that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteTagFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteTagFromBoard.json
new file mode 100644
index 00000000..9f615d3e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteTagFromBoard.json
@@ -0,0 +1,133 @@
+{
+ "name": "DeleteTagFromBoard",
+ "fully_qualified_name": "MiroApi.DeleteTagFromBoard@0.1.0",
+ "description": "Delete a tag from a Miro board and all associated items.\n\nThis tool deletes a specified tag from a Miro board, removing it from all associated cards and sticky notes. Note that changes from the API are not reflected in real-time on the board; a refresh is required to see updates.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board where the tag will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to delete a specific tag."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "tag_id_to_delete",
+ "required": true,
+ "description": "Unique identifier of the tag you want to delete from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "tag_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-tag'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/tags/{tag_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board where you want to delete a specific tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to delete a specific tag."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "tag_id",
+ "tool_parameter_name": "tag_id_to_delete",
+ "description": "Unique identifier (ID) of the tag that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteWebhookSubscription.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteWebhookSubscription.json
new file mode 100644
index 00000000..4986f34f
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/DeleteWebhookSubscription.json
@@ -0,0 +1,101 @@
+{
+ "name": "DeleteWebhookSubscription",
+ "fully_qualified_name": "MiroApi.DeleteWebhookSubscription@0.1.0",
+ "description": "Delete a specified webhook subscription.\n\nUse this tool to delete a specific webhook subscription by its ID. Ensure the required 'boards:read' scope is available. Appropriate for managing or cleaning up webhook subscriptions.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "subscription_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the subscription that you want to delete. This is required to specify which subscription will be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the subscription that you want to delete"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "subscription_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-subscription-by-id'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/webhooks/subscriptions/{subscription_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "subscription_id",
+ "tool_parameter_name": "subscription_id",
+ "description": "Unique identifier (ID) of the subscription that you want to delete",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the subscription that you want to delete"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardContentChanges.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardContentChanges.json
new file mode 100644
index 00000000..7d915a6c
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardContentChanges.json
@@ -0,0 +1,331 @@
+{
+ "name": "FetchBoardContentChanges",
+ "fully_qualified_name": "MiroApi.FetchBoardContentChanges@0.1.0",
+ "description": "Fetch changes to board items in your organization.\n\nRetrieve content changes for board items, including actions like updates or deletions. Filter by time, board ID, or user email. Available for Enterprise plan admins only.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "start_date_time_utc",
+ "required": true,
+ "description": "Filter logs from this UTC date and time. Must be ISO 8601 with a trailing 'Z'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the start date and time for the modified date duration.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "from"
+ },
+ {
+ "name": "end_date_time_filter",
+ "required": true,
+ "description": "Specify the end date and time for filtering content logs. Use UTC format, following ISO 8601 with a trailing Z offset.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the end date and time for the modified date duration. Format: UTC, adheres to\n[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "to"
+ },
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "Unique identifier for the organization to fetch content changes.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "board_ids",
+ "required": false,
+ "description": "List of board IDs for fetching content logs. Accepts an array of strings.",
+ "value_schema": {
+ "val_type": "array",
+ "inner_val_type": "string",
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "List of board IDs for which you want to retrieve the content logs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_ids"
+ },
+ {
+ "name": "user_emails_filter",
+ "required": false,
+ "description": "List of user emails to filter content logs for those who created, modified, or deleted the board item.",
+ "value_schema": {
+ "val_type": "array",
+ "inner_val_type": "string",
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the list of emails of users who created, modified, or deleted the board item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "emails"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Pointer to the next portion of results, used for pagination. Use the cursor from the previous response to continue fetching data.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ },
+ {
+ "name": "maximum_results_per_call",
+ "required": false,
+ "description": "Specify the maximum number of content log results to return per call. If exceeded, a cursor is provided for the next request.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of logs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "sort_order",
+ "required": false,
+ "description": "Determines the order of board content logs based on their modified date. Use 'asc' for ascending and 'desc' for descending order.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Sort order in which you want to view the result set based on the modified date. To sort by an ascending modified date, specify `asc`. To sort by a descending modified date, specify `desc`.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "sorting"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-board-content-item-logs-fetch'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/content-logs/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_ids",
+ "tool_parameter_name": "board_ids",
+ "description": "List of board IDs for which you want to retrieve the content logs.",
+ "value_schema": {
+ "val_type": "array",
+ "inner_val_type": "string",
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "List of board IDs for which you want to retrieve the content logs."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "emails",
+ "tool_parameter_name": "user_emails_filter",
+ "description": "Filter content logs based on the list of emails of users who created, modified, or deleted the board item.",
+ "value_schema": {
+ "val_type": "array",
+ "inner_val_type": "string",
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the list of emails of users who created, modified, or deleted the board item."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "from",
+ "tool_parameter_name": "start_date_time_utc",
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the start date and time for the modified date duration.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the start date and time for the modified date duration.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "to",
+ "tool_parameter_name": "end_date_time_filter",
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the end date and time for the modified date duration. Format: UTC, adheres to\n[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Filter content logs based on the date and time when the board item was last modified. This is the end date and time for the modified date duration. Format: UTC, adheres to\n[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_results_per_call",
+ "description": "The maximum number of results to return per call. If the number of logs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of logs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "sorting",
+ "tool_parameter_name": "sort_order",
+ "description": "Sort order in which you want to view the result set based on the modified date. To sort by an ascending modified date, specify `asc`. To sort by a descending modified date, specify `desc`.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Sort order in which you want to view the result set based on the modified date. To sort by an ascending modified date, specify `asc`. To sort by a descending modified date, specify `desc`.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "Unique identifier of the organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardItemDetails.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardItemDetails.json
new file mode 100644
index 00000000..5798328e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/FetchBoardItemDetails.json
@@ -0,0 +1,133 @@
+{
+ "name": "FetchBoardItemDetails",
+ "fully_qualified_name": "MiroApi.FetchBoardItemDetails@0.1.0",
+ "description": "Fetches details of a specific item on a Miro board.\n\nUse this tool to retrieve detailed information about a particular item on a Miro board. Useful when you need to access or display specific item attributes. Requires 'boards:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the board to retrieve a specific item from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier of the item to retrieve from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-specific-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/items/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAccessTokenInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAccessTokenInfo.json
new file mode 100644
index 00000000..3eb8ec11
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAccessTokenInfo.json
@@ -0,0 +1,67 @@
+{
+ "name": "GetAccessTokenInfo",
+ "fully_qualified_name": "MiroApi.GetAccessTokenInfo@0.1.0",
+ "description": "Retrieve details about an access token.\n\nUse this tool to obtain detailed information regarding an access token, including token type, scopes, associated team, and user information, as well as creation date and time.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": []
+ },
+ "output": {
+ "description": "Response from the API endpoint 'token-info'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v1/oauth-token",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAppUsageMetrics.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAppUsageMetrics.json
new file mode 100644
index 00000000..a6e3def4
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAppUsageMetrics.json
@@ -0,0 +1,205 @@
+{
+ "name": "GetAppUsageMetrics",
+ "fully_qualified_name": "MiroApi.GetAppUsageMetrics@0.1.0",
+ "description": "Fetch usage metrics for a specific app over a time range.\n\nCall this tool to obtain usage metrics for a specific app within a given time period. It's useful for tracking app performance and usage patterns. An app management API token is required to access this information.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "start_date_utc",
+ "required": true,
+ "description": "Start date of the period in UTC format (e.g., 2024-12-31).",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Start date of the period in UTC format. For example, 2024-12-31."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "startDate"
+ },
+ {
+ "name": "end_date",
+ "required": true,
+ "description": "End date of the period in UTC format (e.g., 2024-12-31).",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "End date of the period in UTC format. For example, 2024-12-31."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "endDate"
+ },
+ {
+ "name": "app_id",
+ "required": true,
+ "description": "The unique identifier of the app to retrieve usage metrics for. This ID specifies which app's data to fetch.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the app to get metrics for."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "app_id"
+ },
+ {
+ "name": "group_metrics_by_period",
+ "required": false,
+ "description": "The time period to group the data by. Accepted values: 'DAY', 'WEEK', or 'MONTH'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "DAY",
+ "WEEK",
+ "MONTH"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Group data by this time period."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "period"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-metrics'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/apps/{app_id}/metrics",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "startDate",
+ "tool_parameter_name": "start_date_utc",
+ "description": "Start date of the period in UTC format. For example, 2024-12-31.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Start date of the period in UTC format. For example, 2024-12-31."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "endDate",
+ "tool_parameter_name": "end_date",
+ "description": "End date of the period in UTC format. For example, 2024-12-31.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "End date of the period in UTC format. For example, 2024-12-31."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "period",
+ "tool_parameter_name": "group_metrics_by_period",
+ "description": "Group data by this time period.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "DAY",
+ "WEEK",
+ "MONTH"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Group data by this time period."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "app_id",
+ "tool_parameter_name": "app_id",
+ "description": "ID of the app to get metrics for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the app to get metrics for."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAuditLogs.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAuditLogs.json
new file mode 100644
index 00000000..e1b91ac6
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetAuditLogs.json
@@ -0,0 +1,235 @@
+{
+ "name": "GetAuditLogs",
+ "fully_qualified_name": "MiroApi.GetAuditLogs@0.1.0",
+ "description": "Retrieve audit logs from the last 90 days.\n\nUse this tool to access a page of audit events from the past 90 days. If older data is needed, consider using Miro's CSV export feature. Required scope: auditlogs:read.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "created_after",
+ "required": true,
+ "description": "Retrieve audit logs created after the specified date and time in UTC format (ISO 8601 with milliseconds and a trailing Z).",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Retrieve audit logs created after the date and time provided. This is the start date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-03-30T17:26:50.000Z` as the value for the `createdAfter` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\"\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "createdAfter"
+ },
+ {
+ "name": "audit_log_end_date",
+ "required": true,
+ "description": "Retrieve audit logs created before this date and time. Use UTC format, following ISO 8601 with milliseconds and 'Z'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Retrieve audit logs created before the date and time provided. This is the end date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-04-30T17:26:50.000Z` as the value for the `createdBefore` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "createdBefore"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Cursor for pagination; use to retrieve the next portion of results based on the previously returned cursor value.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the appropriate cursor value returned in the response."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ },
+ {
+ "name": "max_results_limit",
+ "required": false,
+ "description": "Specifies the maximum number of audit log results to return. Default is 100 if not specified.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.
Default: `100`\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "sort_order",
+ "required": false,
+ "description": "Defines the sort order for the audit logs. Use 'ASC' for ascending and 'DESC' for descending. Defaults to 'ASC'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Sort order in which you want to view the result set. Based on the value you provide, the results are sorted in an ascending or descending order of the audit log creation date (audit log `createdAt` parameter).
Default: `ASC`\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "sorting"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-audit-logs'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/audit/logs",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "createdAfter",
+ "tool_parameter_name": "created_after",
+ "description": "Retrieve audit logs created after the date and time provided. This is the start date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-03-30T17:26:50.000Z` as the value for the `createdAfter` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\"\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Retrieve audit logs created after the date and time provided. This is the start date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-03-30T17:26:50.000Z` as the value for the `createdAfter` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\"\n"
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "createdBefore",
+ "tool_parameter_name": "audit_log_end_date",
+ "description": "Retrieve audit logs created before the date and time provided. This is the end date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-04-30T17:26:50.000Z` as the value for the `createdBefore` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Retrieve audit logs created before the date and time provided. This is the end date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-04-30T17:26:50.000Z` as the value for the `createdBefore` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n"
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the appropriate cursor value returned in the response.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the appropriate cursor value returned in the response."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "limit",
+ "tool_parameter_name": "max_results_limit",
+ "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.
Default: `100`\n",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.
Default: `100`\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "sorting",
+ "tool_parameter_name": "sort_order",
+ "description": "Sort order in which you want to view the result set. Based on the value you provide, the results are sorted in an ascending or descending order of the audit log creation date (audit log `createdAt` parameter).
Default: `ASC`\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "ASC",
+ "DESC"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": "Sort order in which you want to view the result set. Based on the value you provide, the results are sorted in an ascending or descending order of the audit log creation date (audit log `createdAt` parameter).
Default: `ASC`\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardClassificationSettings.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardClassificationSettings.json
new file mode 100644
index 00000000..a4a90b82
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardClassificationSettings.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetBoardClassificationSettings",
+ "fully_qualified_name": "MiroApi.GetBoardClassificationSettings@0.1.0",
+ "description": "Retrieve board classification settings for an organization.\n\nUse this tool to get the board classification settings for an existing organization in Miro. This is applicable only for organizations under the Enterprise plan and requires Company Admin role and the 'organizations:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier of the organization whose board classification settings you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-dataclassification-organization-settings-get'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/data-classification-settings",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardConnectorInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardConnectorInfo.json
new file mode 100644
index 00000000..76dfd10a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardConnectorInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardConnectorInfo",
+ "fully_qualified_name": "MiroApi.GetBoardConnectorInfo@0.1.0",
+ "description": "Retrieve details of a specific connector on a Miro board.\n\nUse this tool to obtain information about a specific connector on a Miro board. Useful for scenarios where connector details are needed for a given board or project.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the board from which to retrieve the specific connector.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific connector."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "connector_identifier",
+ "required": true,
+ "description": "Unique identifier for the connector to retrieve details from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the connector that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "connector_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-connector'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/connectors/{connector_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific connector.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific connector."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "connector_id",
+ "tool_parameter_name": "connector_identifier",
+ "description": "Unique identifier (ID) of the connector that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the connector that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardDocumentItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardDocumentItem.json
new file mode 100644
index 00000000..20a3c4ee
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardDocumentItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardDocumentItem",
+ "fully_qualified_name": "MiroApi.GetBoardDocumentItem@0.1.0",
+ "description": "Retrieve information for a specific document item on a board.\n\nUse this tool to obtain details about a particular document item located on a board in Miro. Requires 'boards:read' scope access.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_id",
+ "required": true,
+ "description": "Unique identifier of the board from which to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the item you want to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-document-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/documents/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_id",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobResults.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobResults.json
new file mode 100644
index 00000000..062c4943
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobResults.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardExportJobResults",
+ "fully_qualified_name": "MiroApi.GetBoardExportJobResults@0.1.0",
+ "description": "Retrieve results of a board export job for Enterprise users.\n\nThis tool retrieves the results of a Miro board export job, providing details such as the S3 link to the exported files. It is available exclusively for Enterprise plan users with company admin roles and eDiscovery enabled. Essential for accessing export details securely.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "Unique identifier of the organization for which the board export job results are retrieved.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "board_export_job_id",
+ "required": true,
+ "description": "Unique identifier for the board export job to retrieve results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the job."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "job_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-board-export-job-results'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/boards/export/jobs/{job_id}/results",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "Unique identifier of the organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "job_id",
+ "tool_parameter_name": "board_export_job_id",
+ "description": "Unique identifier of the job.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the job."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobStatus.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobStatus.json
new file mode 100644
index 00000000..54ae90b0
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardExportJobStatus.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardExportJobStatus",
+ "fully_qualified_name": "MiroApi.GetBoardExportJobStatus@0.1.0",
+ "description": "Retrieve the status of a Miro board export job for enterprises.\n\nThis tool retrieves the current status of a board export job within an enterprise organization in Miro. It should be called when there's a need to check if a board export job has been completed or to track its progress. This API is restricted to Enterprise plan users with Company Admin roles and requires eDiscovery enabled in the settings.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "Unique identifier of the organization. Required for accessing the board export job status.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "board_export_job_id",
+ "required": true,
+ "description": "Unique identifier of the board export job within Miro to retrieve its status.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the board export job."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "job_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-board-export-job-status'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/boards/export/jobs/{job_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "Unique identifier of the organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "job_id",
+ "tool_parameter_name": "board_export_job_id",
+ "description": "Unique identifier of the board export job.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the board export job."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardInfo.json
new file mode 100644
index 00000000..dec0205a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardInfo.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetBoardInfo",
+ "fully_qualified_name": "MiroApi.GetBoardInfo@0.1.0",
+ "description": "Retrieve detailed information about a specific Miro board.\n\nThis tool retrieves detailed information about a specific Miro board, using the board's unique ID. It requires the 'boards:read' scope to access the data.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the Miro board to retrieve. Needed to fetch specific board details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-specific-board'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemDetails.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemDetails.json
new file mode 100644
index 00000000..549fe186
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemDetails.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardItemDetails",
+ "fully_qualified_name": "MiroApi.GetBoardItemDetails@0.1.0",
+ "description": "Get details of a specific item from a Miro board.\n\nUse this tool to retrieve information about a specific item on a Miro board. You will need the board and item IDs to access the details. Ensure you have the necessary 'boards:read' scope to perform this action.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the board to retrieve a specific item from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the item to retrieve from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-specific-item-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/items/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItems.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItems.json
new file mode 100644
index 00000000..835ab8a5
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItems.json
@@ -0,0 +1,201 @@
+{
+ "name": "GetBoardItems",
+ "fully_qualified_name": "MiroApi.GetBoardItems@0.1.0",
+ "description": "Retrieve items from a Miro board.\n\nThis tool retrieves a list of items from a specific Miro board using a cursor-based pagination method. It can fetch all items, child items within a parent item, or specific types of items based on query parameters. Useful for managing and navigating board content efficiently.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the Miro board to retrieve items from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_limit",
+ "required": false,
+ "description": "Specifies the maximum number of items to retrieve from the board in one request.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "item_type",
+ "required": false,
+ "description": "Specify the type of items to retrieve, such as 'shape'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "shape"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "type"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "The cursor value to retrieve the next set of results for board items. Use the value from the previous response's cursor to paginate through results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-items-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "item_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "type",
+ "tool_parameter_name": "item_type",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "shape"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByGroup.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByGroup.json
new file mode 100644
index 00000000..c154741f
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByGroup.json
@@ -0,0 +1,197 @@
+{
+ "name": "GetBoardItemsByGroup",
+ "fully_qualified_name": "MiroApi.GetBoardItemsByGroup@0.1.0",
+ "description": "Retrieve items part of a group within a board.\n\nUse this tool to get a list of items that belong to any group within a specific board on Miro. It supports cursor-based pagination, allowing retrieval of items in parts using a cursor for managing large collections effectively.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "group_id",
+ "required": true,
+ "description": "The unique ID of the group item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the group item to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "group_item_id"
+ },
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the specific board from which to retrieve group items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "max_items_to_return",
+ "required": false,
+ "description": "The maximum number of items to return at one time. Defaults to 10, with a maximum of 50.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "A string token to fetch the next set of paginated results. Use the cursor value returned from a previous call to continue retrieving results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'getItemsByGroupId'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/groups/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "max_items_to_return",
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "group_item_id",
+ "tool_parameter_name": "group_id",
+ "description": "The ID of the group item to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the group item to retrieve."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByTag.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByTag.json
new file mode 100644
index 00000000..85847db3
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardItemsByTag.json
@@ -0,0 +1,197 @@
+{
+ "name": "GetBoardItemsByTag",
+ "fully_qualified_name": "MiroApi.GetBoardItemsByTag@0.1.0",
+ "description": "Retrieve items with a specific tag from a Miro board.\n\nUse this tool to get all items from a Miro board that have a specified tag. It requires 'boards:read' scope and follows Level 1 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "tag_identifier",
+ "required": true,
+ "description": "Unique identifier of the tag to be retrieved from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "tag_id"
+ },
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board to retrieve items with a specific tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id_PlatformTags"
+ },
+ {
+ "name": "item_limit",
+ "required": false,
+ "description": "Specifies the maximum number of items to return. It should be an integer value (e.g., '10', '20').",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "results_starting_position",
+ "required": false,
+ "description": "The position to start retrieving items from. Use for pagination in lists.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "offset"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-items-by-tag'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id_PlatformTags}/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "item_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "offset",
+ "tool_parameter_name": "results_starting_position",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "tag_id",
+ "tool_parameter_name": "tag_identifier",
+ "description": "Unique identifier (ID) of the tag that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to retrieve."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id_PlatformTags",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMemberInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMemberInfo.json
new file mode 100644
index 00000000..e7327a13
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMemberInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardMemberInfo",
+ "fully_qualified_name": "MiroApi.GetBoardMemberInfo@0.1.0",
+ "description": "Retrieve information about a specific Miro board member.\n\nUse this tool to obtain details about a particular member of a Miro board. It requires board and member identifiers. Ensure you have the required 'boards:read' scope to access this information.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board to which the board member belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board to which the board member belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "board_member_identifier",
+ "required": true,
+ "description": "The unique ID of the board member whose information you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board member whose role you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-specific-board-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/members/{board_member_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board to which the board member belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board to which the board member belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_member_id",
+ "tool_parameter_name": "board_member_identifier",
+ "description": "Unique identifier (ID) of the board member whose role you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board member whose role you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMembers.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMembers.json
new file mode 100644
index 00000000..2d98f4bc
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardMembers.json
@@ -0,0 +1,165 @@
+{
+ "name": "GetBoardMembers",
+ "fully_qualified_name": "MiroApi.GetBoardMembers@0.1.0",
+ "description": "Retrieve members of a specified Miro board.\n\nUse this tool to get a list of members associated with a specific Miro board. Useful when you need to access or display information about board participants. Requires 'boards:read' scope and adheres to Level 1 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) for the Miro board to retrieve its members.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board to which the board member belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "member_limit",
+ "required": false,
+ "description": "The maximum number of board members to retrieve in a single request. Specify as an integer string.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "results_offset",
+ "required": false,
+ "description": "The starting point in the list of board members to begin retrieval from, for pagination purposes.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "offset"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-board-members'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/members",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "member_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "offset",
+ "tool_parameter_name": "results_offset",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board to which the board member belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board to which the board member belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTags.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTags.json
new file mode 100644
index 00000000..ba80424e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTags.json
@@ -0,0 +1,165 @@
+{
+ "name": "GetBoardTags",
+ "fully_qualified_name": "MiroApi.GetBoardTags@0.1.0",
+ "description": "Retrieve all tags from a specified Miro board.\n\nUse this tool to get a list of all tags from a specific Miro board by providing the board ID. This is useful for organizing or analyzing board elements.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the Miro board from which to retrieve tags.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board whose tags you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "max_tags_limit",
+ "required": false,
+ "description": "Specifies the maximum number of tags to retrieve from the board. Leave blank to retrieve all available tags.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "offset",
+ "required": false,
+ "description": "The starting position in the list of tags to begin retrieving from. Useful for pagination.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "offset"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-tags-from-board'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/tags",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "max_tags_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "offset",
+ "tool_parameter_name": "offset",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board whose tags you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board whose tags you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTextItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTextItem.json
new file mode 100644
index 00000000..9a4eed47
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetBoardTextItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetBoardTextItem",
+ "fully_qualified_name": "MiroApi.GetBoardTextItem@0.1.0",
+ "description": "Fetches details of a text item from a Miro board.\n\nThis tool retrieves information for a specific text item on a Miro board using the board and item IDs. It requires 'boards:read' access.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_unique_id",
+ "required": true,
+ "description": "Unique ID of the board to retrieve a specific text item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier of the text item you want to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-text-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/texts/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_id",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetEnterpriseProjectInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetEnterpriseProjectInfo.json
new file mode 100644
index 00000000..574cc0b3
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetEnterpriseProjectInfo.json
@@ -0,0 +1,165 @@
+{
+ "name": "GetEnterpriseProjectInfo",
+ "fully_qualified_name": "MiroApi.GetEnterpriseProjectInfo@0.1.0",
+ "description": "Get details of a specific enterprise project.\n\nThis tool retrieves information about an existing project within an enterprise plan on Miro. It requires 'projects:read' access and is only available for Company Admins in the Enterprise plan. Use this tool to fetch details like the project's name for a given organization, team, and project ID.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization to retrieve project info from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to retrieve the project information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The ID of the team from which you want to retrieve the project information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to retrieve the project information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_id",
+ "required": true,
+ "description": "The ID of the project from which to retrieve information. Required for fetching project details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-project'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization from which you want to retrieve the project information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to retrieve the project information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The ID of the team from which you want to retrieve the project information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to retrieve the project information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_id",
+ "description": "The ID of the project for which you want to retrieve the information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetFrameInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetFrameInfo.json
new file mode 100644
index 00000000..f90ea8e2
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetFrameInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetFrameInfo",
+ "fully_qualified_name": "MiroApi.GetFrameInfo@0.1.0",
+ "description": "Retrieve specific frame details from a Miro board.\n\nThis tool retrieves information about a particular frame on a specified Miro board. It is useful when you need details of a frame, such as its size and content, for board organization or analysis.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board containing the frame to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that contains the frame that you want to retrieve"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "frame_id",
+ "required": true,
+ "description": "Unique identifier of the frame to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the frame that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-frame-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/frames/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board that contains the frame that you want to retrieve",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that contains the frame that you want to retrieve"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "frame_id",
+ "description": "Unique identifier (ID) of the frame that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the frame that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetGroupItems.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetGroupItems.json
new file mode 100644
index 00000000..fbaa68b9
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetGroupItems.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetGroupItems",
+ "fully_qualified_name": "MiroApi.GetGroupItems@0.1.0",
+ "description": "Retrieve a list of items in a specific group on a board.\n\nUse this tool to get all items within a specific group on a Miro board by providing the board and group IDs.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board to retrieve group items from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "group_identifier",
+ "required": true,
+ "description": "Unique identifier of the group for retrieving its items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "group_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'getGroupById'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/groups/{group_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "group_id",
+ "tool_parameter_name": "group_identifier",
+ "description": "Unique identifier (ID) of the group.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetItemsWithinFrame.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetItemsWithinFrame.json
new file mode 100644
index 00000000..a707e3c5
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetItemsWithinFrame.json
@@ -0,0 +1,229 @@
+{
+ "name": "GetItemsWithinFrame",
+ "fully_qualified_name": "MiroApi.GetItemsWithinFrame@0.1.0",
+ "description": "Retrieve items within a specific frame in a Miro board.\n\nUse this tool to obtain items located within a particular frame on a Miro board. It supports cursor-based pagination for efficient data retrieval. Ideal for accessing and managing child items of a frame.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "frame_id",
+ "required": true,
+ "description": "The ID of the frame to retrieve all child items from on the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the frame for which you want to retrieve the list of available items."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "parent_item_id"
+ },
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the Miro board containing the frame to retrieve items from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that contains the frame for which you want to retrieve the list of available items."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id_PlatformContainers"
+ },
+ {
+ "name": "results_limit",
+ "required": false,
+ "description": "The maximum number of items to return in the response. Helps control pagination size.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "item_type",
+ "required": false,
+ "description": "Specify the type of items to retrieve within the frame. Use for filtering by item type.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "type"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Cursor for pagination to retrieve the next set of results. Use the value from the previous response to continue fetching items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-items-within-frame'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id_PlatformContainers}/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "parent_item_id",
+ "tool_parameter_name": "frame_id",
+ "description": "ID of the frame for which you want to retrieve the list of available items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the frame for which you want to retrieve the list of available items."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "limit",
+ "tool_parameter_name": "results_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "type",
+ "tool_parameter_name": "item_type",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id_PlatformContainers",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board that contains the frame for which you want to retrieve the list of available items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board that contains the frame for which you want to retrieve the list of available items."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMindmapNodeInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMindmapNodeInfo.json
new file mode 100644
index 00000000..0c1bce15
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMindmapNodeInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetMindmapNodeInfo",
+ "fully_qualified_name": "MiroApi.GetMindmapNodeInfo@0.1.0",
+ "description": "Retrieve information for a specific mind map node.\n\nUse this tool to get details about a specific mind map node on a Miro board. Useful for accessing node information when managing or analyzing mind maps.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board to retrieve a mind map node.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a mind map node."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "mindmap_node_id",
+ "required": true,
+ "description": "Unique identifier of the mind map node to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the mind map node that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-mindmap-node-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a mind map node.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a mind map node."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "mindmap_node_id",
+ "description": "Unique identifier (ID) of the mind map node that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the mind map node that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroLegalHoldItems.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroLegalHoldItems.json
new file mode 100644
index 00000000..bb743e51
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroLegalHoldItems.json
@@ -0,0 +1,229 @@
+{
+ "name": "GetMiroLegalHoldItems",
+ "fully_qualified_name": "MiroApi.GetMiroLegalHoldItems@0.1.0",
+ "description": "Retrieve content items under a Miro legal hold.\n\nThis tool retrieves all content items under a specific legal hold in a case for a Miro organization, ensuring the legal hold is active and complete. Only available for Miro Enterprise plan users with appropriate admin roles.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "maximum_items_limit",
+ "required": true,
+ "description": "Specifies the maximum number of content items to return in the list.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique ID of the Miro organization to retrieve its content items under legal hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of content items under hold."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "case_id",
+ "required": true,
+ "description": "The unique identifier for the legal case to retrieve content items under hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the list of content items under hold."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "case_id"
+ },
+ {
+ "name": "legal_hold_identifier",
+ "required": true,
+ "description": "The ID of the legal hold to retrieve the list of content items under hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the legal hold for which you want to retrieve the list of content items under hold."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "legal_hold_id"
+ },
+ {
+ "name": "page_cursor",
+ "required": false,
+ "description": "Used to paginate through results. Leave empty for the first page; use the previous request's cursor for the next pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-legal-hold-content-items'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}/content-items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_items_limit",
+ "description": "The maximum number of items in the result list.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "page_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization for which you want to retrieve the list of content items under hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of content items under hold."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "case_id",
+ "tool_parameter_name": "case_id",
+ "description": "The ID of the case for which you want to retrieve the list of content items under hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the list of content items under hold."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "legal_hold_id",
+ "tool_parameter_name": "legal_hold_identifier",
+ "description": "The ID of the legal hold for which you want to retrieve the list of content items under hold.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the legal hold for which you want to retrieve the list of content items under hold."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroTeamProjects.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroTeamProjects.json
new file mode 100644
index 00000000..62c8b442
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetMiroTeamProjects.json
@@ -0,0 +1,197 @@
+{
+ "name": "GetMiroTeamProjects",
+ "fully_qualified_name": "MiroApi.GetMiroTeamProjects@0.1.0",
+ "description": "Retrieve a list of projects for a specified team in a Miro organization.\n\nThis tool retrieves all projects in a specified team of an organization using Miro's Enterprise API. Accessible only to Company Admins with the Enterprise plan, it allows fetching both shared and private projects by leveraging Content Admin permissions.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the Miro organization for retrieving the list of projects.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to retrieve the list of available projects."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique ID of the team for which you want to retrieve the list of projects.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to retrieve the list of available projects."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "results_limit",
+ "required": false,
+ "description": "The maximum number of project results to return per call. If more projects exist, a cursor for pagination will be provided.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of projects in the response is greater than the limit specified, the response returns the cursor parameter with a value."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Specify the cursor value to paginate through results. Leave empty for the first page; use the value from the previous response for subsequent pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-projects'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "results_limit",
+ "description": "The maximum number of results to return per call. If the number of projects in the response is greater than the limit specified, the response returns the cursor parameter with a value.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of projects in the response is greater than the limit specified, the response returns the cursor parameter with a value."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization from which you want to retrieve the list of available projects.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization from which you want to retrieve the list of available projects."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "The ID of the team from which you want to retrieve the list of available projects.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team from which you want to retrieve the list of available projects."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationDefaultTeamSettings.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationDefaultTeamSettings.json
new file mode 100644
index 00000000..2c3bb912
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationDefaultTeamSettings.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetOrganizationDefaultTeamSettings",
+ "fully_qualified_name": "MiroApi.GetOrganizationDefaultTeamSettings@0.1.0",
+ "description": "Retrieve default team settings for an organization.\n\nFetches the default team settings of an existing organization for users with Enterprise plan and Company Admin role. Requires the 'organizations:teams:read' scope and is subject to Level 1 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for an organization to retrieve its default team settings.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of an Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-default-team-settings'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/default_teams_settings",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of an Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of an Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationInfo.json
new file mode 100644
index 00000000..800a4341
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationInfo.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetOrganizationInfo",
+ "fully_qualified_name": "MiroApi.GetOrganizationInfo@0.1.0",
+ "description": "Retrieve enterprise organization information.\n\nFetch details about an organization using the Miro API, available only for users with the Enterprise plan and Company Admin role. This tool should be used to obtain specific organization data.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier of the organization to retrieve information for. Required for accessing organization details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-organization'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMemberInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMemberInfo.json
new file mode 100644
index 00000000..57fb2a4d
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMemberInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetOrganizationMemberInfo",
+ "fully_qualified_name": "MiroApi.GetOrganizationMemberInfo@0.1.0",
+ "description": "Retrieve member information of an organization in Miro Enterprise.\n\nUse this tool to obtain information about a member of an organization within the Miro Enterprise plan. This is exclusive to users with Company Admin roles, requiring the 'organizations:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier of the organization whose member information is being retrieved. This ID is necessary to specify which organization's data to access.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "organization_member_id",
+ "required": true,
+ "description": "ID of the organization member to retrieve information for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization member"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-organization-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/members/{member_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "member_id",
+ "tool_parameter_name": "organization_member_id",
+ "description": "id of the organization member",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization member"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMembers.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMembers.json
new file mode 100644
index 00000000..f205b299
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationMembers.json
@@ -0,0 +1,319 @@
+{
+ "name": "GetOrganizationMembers",
+ "fully_qualified_name": "MiroApi.GetOrganizationMembers@0.1.0",
+ "description": "Retrieve members of an organization in Miro.\n\nThis tool fetches members of a Miro organization using the organization ID or user emails. It requires the 'organizations:read' scope and is available only to Enterprise plan users with Company Admin roles. This should be used to obtain detailed information about organization members.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier of the organization to retrieve members from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "user_emails",
+ "required": false,
+ "description": "A comma-separated list of user emails to retrieve specific organization members.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "emails"
+ },
+ {
+ "name": "filter_by_role",
+ "required": false,
+ "description": "Specify the role to filter organization members by, such as 'organization_internal_admin' or 'organization_internal_user'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "organization_internal_admin",
+ "organization_internal_user",
+ "organization_external_user",
+ "organization_team_guest_user",
+ "unknown"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "role"
+ },
+ {
+ "name": "member_license_type",
+ "required": false,
+ "description": "Specify the license type of members to filter by. Accepts values: full, occasional, free, free_restricted, full_trial, or unknown.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "full",
+ "occasional",
+ "free",
+ "free_restricted",
+ "full_trial",
+ "unknown"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "license"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "A string used for paginating results. Allows fetching the next set of organization members.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ },
+ {
+ "name": "member_retrieval_limit",
+ "required": false,
+ "description": "Specify the maximum number of organization members to retrieve. This is used to limit the size of the results returned by the API.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "only_active_members",
+ "required": false,
+ "description": "Set to true to retrieve only active members. Filters based on member activity status.",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "active"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-organization-members'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/members",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "emails",
+ "tool_parameter_name": "user_emails",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "role",
+ "tool_parameter_name": "filter_by_role",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "organization_internal_admin",
+ "organization_internal_user",
+ "organization_external_user",
+ "organization_team_guest_user",
+ "unknown"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "license",
+ "tool_parameter_name": "member_license_type",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "full",
+ "occasional",
+ "free",
+ "free_restricted",
+ "full_trial",
+ "unknown"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "active",
+ "tool_parameter_name": "only_active_members",
+ "description": "",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "limit",
+ "tool_parameter_name": "member_retrieval_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationTeams.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationTeams.json
new file mode 100644
index 00000000..67842969
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetOrganizationTeams.json
@@ -0,0 +1,197 @@
+{
+ "name": "GetOrganizationTeams",
+ "fully_qualified_name": "MiroApi.GetOrganizationTeams@0.1.0",
+ "description": "Retrieve a list of teams in an enterprise organization.\n\nUse this tool to retrieve a list of teams within an existing enterprise organization on Miro. This is available only for Enterprise plan users with Company Admin roles. Ensure appropriate 'organizations:teams:read' scope access is granted.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the organization to retrieve teams for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "result_limit",
+ "required": false,
+ "description": "The maximum number of teams to return in the response. This controls the pagination of the results.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "page_cursor",
+ "required": false,
+ "description": "Indicator for the current page position. Leave empty for first page or use the value from the previous request's cursor for subsequent pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ },
+ {
+ "name": "team_name_filter",
+ "required": false,
+ "description": "Filters teams by name using a case insensitive partial match. For example, 'dev' will match both 'Developer's team' and 'Team for developers'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Name query. Filters teams by name using case insensitive partial match. A value \"dev\" will return both \"Developer's team\" and \"Team for developers\"."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "name"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-teams'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "result_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "page_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "name",
+ "tool_parameter_name": "team_name_filter",
+ "description": "Name query. Filters teams by name using case insensitive partial match. A value \"dev\" will return both \"Developer's team\" and \"Team for developers\".",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Name query. Filters teams by name using case insensitive partial match. A value \"dev\" will return both \"Developer's team\" and \"Team for developers\"."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMemberInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMemberInfo.json
new file mode 100644
index 00000000..b601bdef
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMemberInfo.json
@@ -0,0 +1,197 @@
+{
+ "name": "GetProjectMemberInfo",
+ "fully_qualified_name": "MiroApi.GetProjectMemberInfo@0.1.0",
+ "description": "Retrieve information for a specific project member.\n\nThis tool retrieves information about a specific member of a project for users with the Enterprise plan in Miro. It requires 'projects:read' scope and Company Admin rights. Use this tool to gain insights into project member roles and details in an enterprise setting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The unique identifier of the team to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_id",
+ "required": true,
+ "description": "The ID of the project to retrieve specific member information from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project from which you want to retrieve specific member information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ },
+ {
+ "name": "member_id",
+ "required": true,
+ "description": "ID of the member whose information you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the member for which you want to retrieve information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-project-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The ID of the team to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_id",
+ "description": "The ID of the project from which you want to retrieve specific member information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project from which you want to retrieve specific member information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "member_id",
+ "tool_parameter_name": "member_id",
+ "description": "The ID of the member for which you want to retrieve information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the member for which you want to retrieve information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMembers.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMembers.json
new file mode 100644
index 00000000..1bee07bc
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectMembers.json
@@ -0,0 +1,229 @@
+{
+ "name": "GetProjectMembers",
+ "fully_qualified_name": "MiroApi.GetProjectMembers@0.1.0",
+ "description": "Retrieve members of a specified project for Enterprise users.\n\nThis tool retrieves the list of members for a specific project in Miro, available exclusively for Enterprise plan users with the Company Admin role. It should be called when you need to know who is part of a particular project team.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The ID of the team to which the project belongs. This should be a string representing the unique identifier for the team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_id",
+ "required": true,
+ "description": "The unique identifier of the project for which to retrieve member details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the list of members."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ },
+ {
+ "name": "maximum_results_per_call",
+ "required": false,
+ "description": "The maximum number of project members to return in a single call. If exceeded, a cursor for pagination is provided.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of project members in the response is greater than the limit specified, the response returns the cursor parameter with a value."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "The cursor for pagination. Leave empty for the first page or use the value returned in the last call for subsequent pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-project-members'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_results_per_call",
+ "description": "The maximum number of results to return per call. If the number of project members in the response is greater than the limit specified, the response returns the cursor parameter with a value.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of results to return per call. If the number of project members in the response is greater than the limit specified, the response returns the cursor parameter with a value."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The ID of the team to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_id",
+ "description": "The ID of the project for which you want to retrieve the list of members.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the list of members."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectSettings.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectSettings.json
new file mode 100644
index 00000000..406c8049
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetProjectSettings.json
@@ -0,0 +1,165 @@
+{
+ "name": "GetProjectSettings",
+ "fully_qualified_name": "MiroApi.GetProjectSettings@0.1.0",
+ "description": "Retrieve settings for a specific project in an enterprise environment.\n\nThis tool retrieves the settings of a specified project within an enterprise environment. It is intended for use by users with the Company Admin role on Miro's Enterprise plan. The required API scope is 'projects:read', and it adheres to rate limiting level 1.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The ID of the team to which the project belongs for retrieving its settings.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_identifier",
+ "required": true,
+ "description": "The unique identifier for the project whose settings are to be retrieved. This ID is required to specify the exact project within the organization and team context.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the project settings."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-project-settings'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/settings",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The ID of the team to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_identifier",
+ "description": "The ID of the project for which you want to retrieve the project settings.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project for which you want to retrieve the project settings."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetShapeItemInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetShapeItemInfo.json
new file mode 100644
index 00000000..40974c68
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetShapeItemInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetShapeItemInfo",
+ "fully_qualified_name": "MiroApi.GetShapeItemInfo@0.1.0",
+ "description": "Retrieve details of a shape item from a Miro board.\n\nUse this tool to obtain detailed information about a specific shape item on a Miro board using its board ID and item ID.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the Miro board to retrieve a specific item from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier of the item to retrieve from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-shape-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/shapes/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetStickyNoteInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetStickyNoteInfo.json
new file mode 100644
index 00000000..53a31987
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetStickyNoteInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetStickyNoteInfo",
+ "fully_qualified_name": "MiroApi.GetStickyNoteInfo@0.1.0",
+ "description": "Retrieve details of a specific sticky note on a Miro board.\n\nUse this tool to get information about a specific sticky note item on a Miro board by providing the board ID and item ID. It requires 'boards:read' permissions and may be subject to rate limits.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "The unique ID of the Miro board containing the sticky note to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier of the sticky note item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-sticky-note-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/sticky_notes/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetSubscriptionInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetSubscriptionInfo.json
new file mode 100644
index 00000000..e347e411
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetSubscriptionInfo.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetSubscriptionInfo",
+ "fully_qualified_name": "MiroApi.GetSubscriptionInfo@0.1.0",
+ "description": "Retrieve information for a specific webhook subscription.\n\nUse this tool to get detailed information about a particular webhook subscription in Miro. It requires the 'boards:read' scope and is subject to Level 2 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "subscription_identifier",
+ "required": true,
+ "description": "Unique identifier of the subscription to retrieve information for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the subscription that you want to retrieve"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "subscription_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-subscription-by-id'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/webhooks/subscriptions/{subscription_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "subscription_id",
+ "tool_parameter_name": "subscription_identifier",
+ "description": "Unique identifier (ID) of the subscription that you want to retrieve",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the subscription that you want to retrieve"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTagsFromItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTagsFromItem.json
new file mode 100644
index 00000000..6aca0b63
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTagsFromItem.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetTagsFromItem",
+ "fully_qualified_name": "MiroApi.GetTagsFromItem@0.1.0",
+ "description": "Retrieve all tags from a specified item on a board.\n\nUse this tool to obtain all tags from a specific item on a Miro board. This is useful for organizing and categorizing items. Requires 'boards:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board containing the item whose tags need retrieval.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item whose tags you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the item from which to retrieve tags. Required to specify which item's tags you wish to get from a Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item whose tags you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-tags-from-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/items/{item_id}/tags",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board with the item whose tags you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item whose tags you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item whose tags you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item whose tags you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamDataClassificationSettings.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamDataClassificationSettings.json
new file mode 100644
index 00000000..d3672fa9
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamDataClassificationSettings.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetTeamDataClassificationSettings",
+ "fully_qualified_name": "MiroApi.GetTeamDataClassificationSettings@0.1.0",
+ "description": "Retrieve board classification settings for an enterprise team.\n\nUse this tool to get board classification settings for an existing team in an enterprise account. Only available for users with the Company Admin role in the Enterprise plan.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "ID of the organization to retrieve board classification settings for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique identifier of the team to retrieve classification settings for. Must be a string.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the team"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-dataclassification-team-settings-get'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/data-classification-settings",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "id of the team",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the team"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamMemberInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamMemberInfo.json
new file mode 100644
index 00000000..07d3537c
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamMemberInfo.json
@@ -0,0 +1,165 @@
+{
+ "name": "GetTeamMemberInfo",
+ "fully_qualified_name": "MiroApi.GetTeamMemberInfo@0.1.0",
+ "description": "Retrieve details of a team member using their ID.\n\nThis tool retrieves information about a team member by their ID. It requires enterprise-level access and the role of a Company Admin. It should be used to access specific member details within an organization.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The unique identifier for the team. This is required to retrieve the team member's details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "team_member_id",
+ "required": true,
+ "description": "The unique identifier for the team member whose information is to be retrieved.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team Member"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-team-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "member_id",
+ "tool_parameter_name": "team_member_id",
+ "description": "The id of the Team Member",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team Member"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamSettings.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamSettings.json
new file mode 100644
index 00000000..9b91ac1e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTeamSettings.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetTeamSettings",
+ "fully_qualified_name": "MiroApi.GetTeamSettings@0.1.0",
+ "description": "Retrieve team settings in an enterprise Miro account.\n\nThis tool retrieves the settings for a specific team within an enterprise Miro account. It is intended for users with the Company Admin role and requires access to the Enterprise plan. Use this when you need to access or verify the settings of a team in your organization's Miro account.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the organization in Miro.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique identifier for the team whose settings are to be retrieved.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-team-settings'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/settings",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTotalUsageMetrics.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTotalUsageMetrics.json
new file mode 100644
index 00000000..7e87602a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetTotalUsageMetrics.json
@@ -0,0 +1,101 @@
+{
+ "name": "GetTotalUsageMetrics",
+ "fully_qualified_name": "MiroApi.GetTotalUsageMetrics@0.1.0",
+ "description": "Retrieve total usage metrics for a specific app.\n\nThis tool returns the total usage metrics for a Miro app since its creation. It requires an app management API token with 'boards:read' scope. Ideal for monitoring app performance and usage over time.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "app_id",
+ "required": true,
+ "description": "The unique identifier of the Miro app to retrieve total usage metrics for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the app to get total metrics for."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "app_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-metrics-total'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/apps/{app_id}/metrics-total",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "app_id",
+ "tool_parameter_name": "app_id",
+ "description": "ID of the app to get total metrics for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "ID of the app to get total metrics for."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserAccessibleBoards.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserAccessibleBoards.json
new file mode 100644
index 00000000..2f4add67
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserAccessibleBoards.json
@@ -0,0 +1,305 @@
+{
+ "name": "GetUserAccessibleBoards",
+ "fully_qualified_name": "MiroApi.GetUserAccessibleBoards@0.1.0",
+ "description": "Retrieve boards accessible to the user with filtering options.\n\nFetches a list of boards accessible to the user using various filters like `team_id` or `project_id`. Allows Enterprise users with Content Admin permissions to fetch all boards, excluding private contents.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "team_id_filter",
+ "required": false,
+ "description": "Filter boards by a specific team ID to narrow down results. Useful for fetching boards associated with a specific team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_id",
+ "required": false,
+ "description": "Filter boards by project ID to narrow down the list to those associated with a specific project.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ },
+ {
+ "name": "filter_query",
+ "required": false,
+ "description": "A search term to filter boards by name or description. Accepts a string value.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "query"
+ },
+ {
+ "name": "owner_username",
+ "required": false,
+ "description": "Filter boards by the owner's username. Use this to fetch all boards created by a specific user.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "owner"
+ },
+ {
+ "name": "maximum_results_limit",
+ "required": false,
+ "description": "Specifies the maximum number of boards to return in a single response. This allows you to control pagination by limiting the number of results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_offset",
+ "required": false,
+ "description": "The number of boards to skip before starting to collect the result set. Used for pagination.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "offset"
+ },
+ {
+ "name": "sorting_preference",
+ "required": false,
+ "description": "Specifies how to sort the list of boards. Options are: 'default', 'last_modified', 'last_opened', 'last_created', 'alphabetically'.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "default",
+ "last_modified",
+ "last_opened",
+ "last_created",
+ "alphabetically"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "sort"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-boards'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id_filter",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_id",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "query",
+ "tool_parameter_name": "filter_query",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "owner",
+ "tool_parameter_name": "owner_username",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_results_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "offset",
+ "tool_parameter_name": "pagination_offset",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "sort",
+ "tool_parameter_name": "sorting_preference",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "default",
+ "last_modified",
+ "last_opened",
+ "last_created",
+ "alphabetically"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserWebhookSubscriptions.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserWebhookSubscriptions.json
new file mode 100644
index 00000000..b205bf89
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/GetUserWebhookSubscriptions.json
@@ -0,0 +1,133 @@
+{
+ "name": "GetUserWebhookSubscriptions",
+ "fully_qualified_name": "MiroApi.GetUserWebhookSubscriptions@0.1.0",
+ "description": "Retrieve webhook subscription details for a specific user.\n\nCall this tool to get information about all webhook subscriptions associated with a user. This is useful for managing webhook integrations. Requires 'boards:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "subscription_limit",
+ "required": false,
+ "description": "Specify the maximum number of webhook subscriptions to retrieve. Use integer values.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "A string used to paginate through large sets of webhook subscriptions. Use the cursor returned from a previous call to get the next set of results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-user-subscriptions'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/webhooks/subscriptions",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "subscription_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/ListBoardGroups.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/ListBoardGroups.json
new file mode 100644
index 00000000..f4d8ddde
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/ListBoardGroups.json
@@ -0,0 +1,165 @@
+{
+ "name": "ListBoardGroups",
+ "fully_qualified_name": "MiroApi.ListBoardGroups@0.1.0",
+ "description": "Retrieve all groups and their items from a board.\n\nUse this tool to get all the groups along with their items within a specified board on Miro. It supports cursor-based pagination for retrieving large sets of data. This tool is useful for those who need to manage or analyze board groups efficiently.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board to fetch its groups and items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "maximum_items_to_return",
+ "required": false,
+ "description": "Specify the maximum number of items to return in one call. Default is 10, and maximum is 50.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Cursor for fetching the next set of results in paginated requests. Use the cursor value received from the previous response to continue pagination.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-all-groups'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/groups",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_items_to_return",
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items to return at one time, default is 10, maximum is 50."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveBoardMember.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveBoardMember.json
new file mode 100644
index 00000000..a8695ee3
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveBoardMember.json
@@ -0,0 +1,133 @@
+{
+ "name": "RemoveBoardMember",
+ "fully_qualified_name": "MiroApi.RemoveBoardMember@0.1.0",
+ "description": "Remove a member from a Miro board.\n\nUse this tool to remove a specific member from a Miro board. Requires the board ID and member ID. Ensure you have the 'boards:write' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board from which you want to remove a member.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete an item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "board_member_id",
+ "required": true,
+ "description": "Unique identifier of the board member to remove.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board member whose role you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'remove-board-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/members/{board_member_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to delete an item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete an item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_member_id",
+ "tool_parameter_name": "board_member_id",
+ "description": "Unique identifier (ID) of the board member whose role you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board member whose role you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveConnectorFromBoard.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveConnectorFromBoard.json
new file mode 100644
index 00000000..0d8928b6
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveConnectorFromBoard.json
@@ -0,0 +1,133 @@
+{
+ "name": "RemoveConnectorFromBoard",
+ "fully_qualified_name": "MiroApi.RemoveConnectorFromBoard@0.1.0",
+ "description": "Remove a specific connector from the board using Miro API.\n\nUse this tool to delete a specified connector from a Miro board. It is necessary to have the required 'boards:write' scope to perform this action. Useful when managing or updating board elements.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id_for_connector_removal",
+ "required": true,
+ "description": "Unique identifier of the board from which you want to delete the connector.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the connector."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "connector_id",
+ "required": true,
+ "description": "Unique identifier of the connector to be deleted.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the connector that you want to delete."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "connector_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'delete-connector'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/connectors/{connector_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id_for_connector_removal",
+ "description": "Unique identifier (ID) of the board from which you want to delete the connector.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to delete the connector."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "connector_id",
+ "tool_parameter_name": "connector_id",
+ "description": "Unique identifier (ID) of the connector that you want to delete.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the connector that you want to delete."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveProjectMember.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveProjectMember.json
new file mode 100644
index 00000000..259acdf1
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveProjectMember.json
@@ -0,0 +1,197 @@
+{
+ "name": "RemoveProjectMember",
+ "fully_qualified_name": "MiroApi.RemoveProjectMember@0.1.0",
+ "description": "Remove a member from a Miro project.\n\nThis tool removes a specified member from a project within the Miro platform. Note that the member will still remain part of the team even after being removed from the project. This action requires enterprise-level access and can only be performed by a Company Admin.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization associated with the project.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The unique identifier for the team associated with the project from which a member is being removed.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "project_identifier",
+ "required": true,
+ "description": "The unique identifier of the project from which a member will be removed.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project from which you want to remove a member."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "project_id"
+ },
+ {
+ "name": "member_id",
+ "required": true,
+ "description": "The ID of the member to remove from the Miro project. This ID is necessary to specify which member will be removed.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the member that you want to remove from a project."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-delete-project-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The ID of the team to which the project belongs.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the team to which the project belongs."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "project_id",
+ "tool_parameter_name": "project_identifier",
+ "description": "The ID of the project from which you want to remove a member.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the project from which you want to remove a member."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "member_id",
+ "tool_parameter_name": "member_id",
+ "description": "The ID of the member that you want to remove from a project.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the member that you want to remove from a project."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTagFromItem.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTagFromItem.json
new file mode 100644
index 00000000..abf6de5b
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTagFromItem.json
@@ -0,0 +1,165 @@
+{
+ "name": "RemoveTagFromItem",
+ "fully_qualified_name": "MiroApi.RemoveTagFromItem@0.1.0",
+ "description": "Remove a specified tag from an item on a Miro board.\n\nUse this tool to remove a specific tag from an item on a Miro board. The tag will still exist on the board, but will no longer be attached to the item. Note that updates via the API will not reflect in real-time on the board; a refresh is required to see changes.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "tag_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the tag to be removed from the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to remove from the item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "tag_id"
+ },
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the board with the item from which you want to remove a tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item that you want to remove a tag from."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id_PlatformTags"
+ },
+ {
+ "name": "item_identifier",
+ "required": true,
+ "description": "Unique identifier of the item from which the tag will be removed on the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to remove the tag from."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'remove-tag-from-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id_PlatformTags}/items/{item_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "tag_id",
+ "tool_parameter_name": "tag_identifier",
+ "description": "Unique identifier (ID) of the tag that you want to remove from the item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to remove from the item."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id_PlatformTags",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board with the item that you want to remove a tag from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board with the item that you want to remove a tag from."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_identifier",
+ "description": "Unique identifier (ID) of the item that you want to remove the tag from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to remove the tag from."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTeamMember.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTeamMember.json
new file mode 100644
index 00000000..7dd2996e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RemoveTeamMember.json
@@ -0,0 +1,165 @@
+{
+ "name": "RemoveTeamMember",
+ "fully_qualified_name": "MiroApi.RemoveTeamMember@0.1.0",
+ "description": "Remove a team member from a Miro Enterprise plan team.\n\nThis tool deletes a specified team member by their ID from a team within the Miro Enterprise plan. It requires the 'organizations:teams:write' scope and is available only for users with the role of Company Admin. Suitable for managing team compositions within organizations.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization from which the team member will be removed.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique identifier for the team from which the member will be removed.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "team_member_id",
+ "required": true,
+ "description": "The ID of the team member to be removed from the team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team Member"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "member_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-delete-team-member'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "member_id",
+ "tool_parameter_name": "team_member_id",
+ "description": "The id of the Team Member",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team Member"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/ResetUserSessions.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/ResetUserSessions.json
new file mode 100644
index 00000000..eccdc9ad
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/ResetUserSessions.json
@@ -0,0 +1,101 @@
+{
+ "name": "ResetUserSessions",
+ "fully_qualified_name": "MiroApi.ResetUserSessions@0.1.0",
+ "description": "Reset all active user sessions immediately.\n\nThis tool is used by Enterprise plan Company Admins to reset all active sessions for a user, effectively requiring them to sign in again. It's useful for handling security concerns such as compromised credentials or suspicious account activity.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "user_email_to_reset_sessions",
+ "required": true,
+ "description": "Email ID of the user whose sessions need to be reset. This will sign the user out from all devices.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Email ID of the user whose sessions you want to reset. Note that this user will be signed out from all devices."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "email"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-post-user-sessions-reset'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/sessions/reset_all",
+ "http_method": "POST",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "email",
+ "tool_parameter_name": "user_email_to_reset_sessions",
+ "description": "Email ID of the user whose sessions you want to reset. Note that this user will be signed out from all devices.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Email ID of the user whose sessions you want to reset. Note that this user will be signed out from all devices."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardClassification.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardClassification.json
new file mode 100644
index 00000000..cda0e875
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardClassification.json
@@ -0,0 +1,165 @@
+{
+ "name": "RetrieveBoardClassification",
+ "fully_qualified_name": "MiroApi.RetrieveBoardClassification@0.1.0",
+ "description": "Retrieve board classification status from Miro.\n\nRetrieves the data classification of a specific board in Miro for Enterprise users. This tool is useful for Company Admins who need to access board classification details, requiring the 'boards:read' scope. It is subject to Level 2 rate limiting.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the organization whose board classification you wish to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique identifier of the team for which you want to retrieve the board classification.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the team"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "board_unique_identifier",
+ "required": true,
+ "description": "Unique identifier of the Miro board to retrieve classification details for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the board that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-dataclassification-board-get'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/boards/{board_id}/data-classification",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "id of the organization",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the organization"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "id of the team",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "id of the team"
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_unique_identifier",
+ "description": "Unique identifier of the board that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier of the board that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardConnectors.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardConnectors.json
new file mode 100644
index 00000000..b5072114
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardConnectors.json
@@ -0,0 +1,165 @@
+{
+ "name": "RetrieveBoardConnectors",
+ "fully_qualified_name": "MiroApi.RetrieveBoardConnectors@0.1.0",
+ "description": "Retrieve connectors from a specific Miro board.\n\nUse this tool to obtain a list of connectors from a specified Miro board. It supports cursor-based pagination to retrieve large datasets efficiently.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "The unique identifier of the Miro board from which to retrieve connectors.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a list of connectors."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "max_results_per_page",
+ "required": false,
+ "description": "Sets the maximum number of results to return per page. Use for pagination control.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "The cursor value for pagination to retrieve the next set of results. Use the cursor from the previous response.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-connectors'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/connectors",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "max_results_per_page",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a list of connectors.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a list of connectors."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardImageInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardImageInfo.json
new file mode 100644
index 00000000..8d4f503e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardImageInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveBoardImageInfo",
+ "fully_qualified_name": "MiroApi.RetrieveBoardImageInfo@0.1.0",
+ "description": "Retrieve information for a specific image item on a board.\n\nUse this tool to get details about an image item on a Miro board, such as its metadata and properties, using the board and item IDs.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier for the board to retrieve a specific image item from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "image_item_id",
+ "required": true,
+ "description": "The unique identifier of the image item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-image-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/images/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "image_item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardItems.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardItems.json
new file mode 100644
index 00000000..07688df7
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveBoardItems.json
@@ -0,0 +1,219 @@
+{
+ "name": "RetrieveBoardItems",
+ "fully_qualified_name": "MiroApi.RetrieveBoardItems@0.1.0",
+ "description": "Retrieve a list of items from a specific Miro board.\n\nThis tool retrieves a list of items for a specific board in Miro. It supports filtering to get all items, child items within a parent, or specific item types. Results are paginated using a cursor-based approach. Suitable for tasks requiring retrieval of board contents.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier for the Miro board to retrieve items from.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "limit_number_of_items",
+ "required": false,
+ "description": "Sets the maximum number of items to retrieve per API call. Useful for pagination and managing large datasets.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "item_type_filter",
+ "required": false,
+ "description": "Specify the type of items to retrieve from the board, such as text, shape, or image.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "text",
+ "shape",
+ "sticky_note",
+ "image",
+ "document",
+ "card",
+ "app_card",
+ "preview",
+ "frame",
+ "embed"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "type"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "The cursor value from a previous response to retrieve the next set of items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-items'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/items",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "limit_number_of_items",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "type",
+ "tool_parameter_name": "item_type_filter",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": [
+ "text",
+ "shape",
+ "sticky_note",
+ "image",
+ "document",
+ "card",
+ "app_card",
+ "preview",
+ "frame",
+ "embed"
+ ],
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveCaseInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveCaseInfo.json
new file mode 100644
index 00000000..da89930b
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveCaseInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveCaseInfo",
+ "fully_qualified_name": "MiroApi.RetrieveCaseInfo@0.1.0",
+ "description": "Retrieve detailed information about a specific case in an organization.\n\nThis tool is used to get detailed information about a case in an organization using Miro's API. It is suitable for Enterprise plan users with the Enterprise Guard add-on who have Company Admin and eDiscovery Admin roles. Useful for administrators managing cases and overseeing organizational operations.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique ID of the organization for retrieving case information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the case information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "case_id",
+ "required": true,
+ "description": "The unique identifier of the case to retrieve information for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "case_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-case'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization for which you want to retrieve the case information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the case information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "case_id",
+ "tool_parameter_name": "case_id",
+ "description": "The ID of the case you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEdiscoveryCases.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEdiscoveryCases.json
new file mode 100644
index 00000000..bc45578f
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEdiscoveryCases.json
@@ -0,0 +1,165 @@
+{
+ "name": "RetrieveEdiscoveryCases",
+ "fully_qualified_name": "MiroApi.RetrieveEdiscoveryCases@0.1.0",
+ "description": "Get the list of eDiscovery cases for an organization.\n\nUse this tool to retrieve all the eDiscovery cases available in an organization. It is specifically for Enterprise plan users with the Enterprise Guard add-on, requiring Company Admin and eDiscovery Admin roles.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "maximum_items_in_result_list",
+ "required": true,
+ "description": "Specify the maximum number of items to include in the result list of eDiscovery cases.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization to retrieve eDiscovery cases for.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of cases."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "Used to navigate pages of results. Leave empty for the first page; use value from previous response for subsequent pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-all-cases'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/cases",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_items_in_result_list",
+ "description": "The maximum number of items in the result list.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization for which you want to retrieve the list of cases.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of cases."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEmbedItemInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEmbedItemInfo.json
new file mode 100644
index 00000000..c9c49b89
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveEmbedItemInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveEmbedItemInfo",
+ "fully_qualified_name": "MiroApi.RetrieveEmbedItemInfo@0.1.0",
+ "description": "Retrieve information for a specific embed item on a board.\n\nUse this tool to get details about a specific embed item from a Miro board. It requires the board ID and item ID to retrieve the information. Useful for accessing embed details within a Miro board.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the Miro board to retrieve a specific embed item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "embed_item_id",
+ "required": true,
+ "description": "Unique identifier of the embed item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-embed-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/embeds/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "embed_item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHoldInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHoldInfo.json
new file mode 100644
index 00000000..b77b640e
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHoldInfo.json
@@ -0,0 +1,165 @@
+{
+ "name": "RetrieveLegalHoldInfo",
+ "fully_qualified_name": "MiroApi.RetrieveLegalHoldInfo@0.1.0",
+ "description": "Retrieve information about a legal hold in an organization's case.\n\nUse this tool to get details about a legal hold in a specific case within an organization, requiring organization:cases:management scope and applicable for Enterprise Guard users with specific admin roles.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique ID of the organization for which to retrieve legal hold data.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the legal hold information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "case_identifier",
+ "required": true,
+ "description": "The unique identifier for the case to retrieve the legal hold information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the legal hold information."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "case_id"
+ },
+ {
+ "name": "legal_hold_id",
+ "required": true,
+ "description": "The unique identifier for the legal hold to be retrieved.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the legal hold you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "legal_hold_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-legal-hold'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization for which you want to retrieve the legal hold information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the legal hold information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "case_id",
+ "tool_parameter_name": "case_identifier",
+ "description": "The ID of the case for which you want to retrieve the legal hold information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the legal hold information."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "legal_hold_id",
+ "tool_parameter_name": "legal_hold_id",
+ "description": "The ID of the legal hold you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the legal hold you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHolds.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHolds.json
new file mode 100644
index 00000000..c42ac2b5
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveLegalHolds.json
@@ -0,0 +1,197 @@
+{
+ "name": "RetrieveLegalHolds",
+ "fully_qualified_name": "MiroApi.RetrieveLegalHolds@0.1.0",
+ "description": "Retrieve all legal holds for a case in an organization.\n\nThis tool retrieves the list of all legal holds within a specified case for an organization. It is intended for Miro Enterprise plan users with the Enterprise Guard add-on, requiring Company Admin and eDiscovery Admin roles.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "maximum_items_in_result_list",
+ "required": true,
+ "description": "Specifies the maximum number of items to be included in the retrieved list of legal holds.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The ID of the organization for which to retrieve the list of legal holds within a case.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of legal holds within a case."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "case_id",
+ "required": true,
+ "description": "The unique ID of the case for which to retrieve the list of legal holds.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the list of legal holds."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "case_id"
+ },
+ {
+ "name": "page_cursor",
+ "required": false,
+ "description": "An indicator for paginating results. Leave empty for the first page or use the previous request's cursor for subsequent pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-all-legal-holds'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/cases/{case_id}/legal-holds",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "maximum_items_in_result_list",
+ "description": "The maximum number of items in the result list.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The maximum number of items in the result list."
+ },
+ "accepted_as": "query",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "page_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The ID of the organization for which you want to retrieve the list of legal holds within a case.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the organization for which you want to retrieve the list of legal holds within a case."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "case_id",
+ "tool_parameter_name": "case_id",
+ "description": "The ID of the case for which you want to retrieve the list of legal holds.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The ID of the case for which you want to retrieve the list of legal holds."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMindmapNodes.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMindmapNodes.json
new file mode 100644
index 00000000..ffd08d42
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMindmapNodes.json
@@ -0,0 +1,165 @@
+{
+ "name": "RetrieveMindmapNodes",
+ "fully_qualified_name": "MiroApi.RetrieveMindmapNodes@0.1.0",
+ "description": "Fetches mind map nodes from a specified board.\n\nUse this tool to retrieve a list of mind map nodes for a specific board in Miro. It supports cursor-based pagination for fetching large sets of nodes incrementally. Requires 'boards:read' scope.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "The unique identifier for the Miro board to retrieve mind map nodes from. Ensure this ID is valid and corresponds to an existing board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve mind map nodes."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "max_results_limit",
+ "required": false,
+ "description": "Specifies the maximum number of mind map nodes to return in a single call. Use it to control data page size.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Maximum number of results returned"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "pagination_cursor",
+ "required": false,
+ "description": "A string indicating the position in the paginated results to fetch the next set of mind map nodes. Use the value provided in the previous API response to continue fetching additional results.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Points to the next portion of the results set"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-mindmap-nodes-experimental'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/mindmap_nodes",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "max_results_limit",
+ "description": "Maximum number of results returned",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Maximum number of results returned"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "pagination_cursor",
+ "description": "Points to the next portion of the results set",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Points to the next portion of the results set"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve mind map nodes.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve mind map nodes."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroAppCardInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroAppCardInfo.json
new file mode 100644
index 00000000..c524281a
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroAppCardInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveMiroAppCardInfo",
+ "fully_qualified_name": "MiroApi.RetrieveMiroAppCardInfo@0.1.0",
+ "description": "Retrieve information for a specific Miro app card.\n\nThis tool retrieves details about an app card item on a Miro board, requiring 'boards:read' scope. It's useful for getting detailed information about app cards on a board to display or process further.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier of the Miro board for retrieving a specific app card item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the app card item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-app-card-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/app_cards/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroCardInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroCardInfo.json
new file mode 100644
index 00000000..f7d79bbb
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveMiroCardInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveMiroCardInfo",
+ "fully_qualified_name": "MiroApi.RetrieveMiroCardInfo@0.1.0",
+ "description": "Retrieve details for a specific Miro board card item.\n\nUse this tool to get detailed information about a specific card item on a Miro board. This tool is useful when you need to access and display information related to individual cards, such as during planning or collaboration tasks.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board from which to retrieve the specific card item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "card_item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the card item to retrieve from a Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-card-item'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/cards/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "card_item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveShapeDetails.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveShapeDetails.json
new file mode 100644
index 00000000..d34928f3
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveShapeDetails.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveShapeDetails",
+ "fully_qualified_name": "MiroApi.RetrieveShapeDetails@0.1.0",
+ "description": "Retrieve information for a specific shape item on a board.\n\nThis tool retrieves detailed information for a specific shape item on a Miro board. It should be called when you need to access data about a particular shape within a flowchart or other diagram. Requires board read access.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier of the board to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "shape_item_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the shape item to retrieve from the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "item_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-shape-item-flowchart'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2-experimental/boards/{board_id}/shapes/{item_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "item_id",
+ "tool_parameter_name": "shape_item_id",
+ "description": "Unique identifier (ID) of the item that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the item that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTagInfo.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTagInfo.json
new file mode 100644
index 00000000..c9c14f51
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTagInfo.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveTagInfo",
+ "fully_qualified_name": "MiroApi.RetrieveTagInfo@0.1.0",
+ "description": "Retrieve information for a specific tag on a Miro board.\n\nUse this tool to fetch details about a particular tag on a Miro board. Requires 'boards:write' scope. Intended for retrieving tag metadata to enhance user interactions with board contents.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_identifier",
+ "required": true,
+ "description": "Unique identifier (ID) of the board from which to retrieve a specific tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "tag_id",
+ "required": true,
+ "description": "Unique identifier of the tag to retrieve from the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to retrieve."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "tag_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'get-tag'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/tags/{tag_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_identifier",
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "tag_id",
+ "tool_parameter_name": "tag_id",
+ "description": "Unique identifier (ID) of the tag that you want to retrieve.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the tag that you want to retrieve."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamInformation.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamInformation.json
new file mode 100644
index 00000000..d0abbc35
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamInformation.json
@@ -0,0 +1,133 @@
+{
+ "name": "RetrieveTeamInformation",
+ "fully_qualified_name": "MiroApi.RetrieveTeamInformation@0.1.0",
+ "description": "Retrieve team information for an existing team in Enterprise plan.\n\nThis tool retrieves detailed information about a specific team within an organization. It's designed for Enterprise plan users who have Company Admin roles. The tool should be used when there's a need to access or confirm team details, ensuring you have the necessary permissions to execute this request.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the Organization. Required to retrieve team information.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_identifier",
+ "required": true,
+ "description": "The unique identifier for the team. Required to fetch specific team details.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-team'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_identifier",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamMembers.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamMembers.json
new file mode 100644
index 00000000..aece6953
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/RetrieveTeamMembers.json
@@ -0,0 +1,229 @@
+{
+ "name": "RetrieveTeamMembers",
+ "fully_qualified_name": "MiroApi.RetrieveTeamMembers@0.1.0",
+ "description": "Retrieve members of a specific Enterprise team.\n\nUse this tool to obtain a list of team members for a specified team in your organization. It's designed for Enterprise plan users with Company Admin roles. Ensure you have the necessary read permissions for organizations:teams:read.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "organization_id",
+ "required": true,
+ "description": "The unique identifier for the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "org_id"
+ },
+ {
+ "name": "team_id",
+ "required": true,
+ "description": "The ID of the team to retrieve members from. Must be a string.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "team_id"
+ },
+ {
+ "name": "results_limit",
+ "required": false,
+ "description": "Specifies the maximum number of team members to retrieve per request. Must be a positive integer.",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "limit"
+ },
+ {
+ "name": "page_cursor",
+ "required": false,
+ "description": "Indicator for the current page in the result set. Leave empty for first page; use value from previous response for next pages.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "cursor"
+ },
+ {
+ "name": "filter_by_role",
+ "required": false,
+ "description": "Filters members by their role in the team. Accepted values: \"member\", \"admin\", \"non_team\", \"team_guest\". Use full word match.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "\nRole query. Filters members by role using full word match. Accepted values are:\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n* \"non_team\": External user, non-team user.\n* \"team_guest\": Team-guest user, user with access only to a team without access to organization.\n"
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "role"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'enterprise-get-team-members'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/orgs/{org_id}/teams/{team_id}/members",
+ "http_method": "GET",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "limit",
+ "tool_parameter_name": "results_limit",
+ "description": "",
+ "value_schema": {
+ "val_type": "integer",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": ""
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "cursor",
+ "tool_parameter_name": "page_cursor",
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "role",
+ "tool_parameter_name": "filter_by_role",
+ "description": "\nRole query. Filters members by role using full word match. Accepted values are:\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n* \"non_team\": External user, non-team user.\n* \"team_guest\": Team-guest user, user with access only to a team without access to organization.\n",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "\nRole query. Filters members by role using full word match. Accepted values are:\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n* \"non_team\": External user, non-team user.\n* \"team_guest\": Team-guest user, user with access only to a team without access to organization.\n"
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "org_id",
+ "tool_parameter_name": "organization_id",
+ "description": "The id of the Organization.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Organization."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "team_id",
+ "tool_parameter_name": "team_id",
+ "description": "The id of the Team.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "The id of the Team."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/arcade_miro_api/wrapper_tools/UngroupItemsInMiro.json b/toolkits/miro_api/arcade_miro_api/wrapper_tools/UngroupItemsInMiro.json
new file mode 100644
index 00000000..3bf157cc
--- /dev/null
+++ b/toolkits/miro_api/arcade_miro_api/wrapper_tools/UngroupItemsInMiro.json
@@ -0,0 +1,165 @@
+{
+ "name": "UngroupItemsInMiro",
+ "fully_qualified_name": "MiroApi.UngroupItemsInMiro@0.1.0",
+ "description": "Ungroups items from a group in Miro boards.\n\nThis tool is used to ungroup items within a specified group on a Miro board. It requires the 'boards:write' scope and adheres to level 3 rate limiting. Use this tool when you need to separate items that have been grouped together in a Miro board.",
+ "toolkit": {
+ "name": "ArcadeMiroApi",
+ "description": null,
+ "version": "0.1.0"
+ },
+ "input": {
+ "parameters": [
+ {
+ "name": "board_id",
+ "required": true,
+ "description": "Unique identifier (ID) of the Miro board for ungrouping items.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "board_id"
+ },
+ {
+ "name": "group_identifier",
+ "required": true,
+ "description": "Unique identifier of the group to be ungrouped on the Miro board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "group_id"
+ },
+ {
+ "name": "delete_items_after_ungrouping",
+ "required": false,
+ "description": "Indicate whether items should be removed after ungrouping. Defaults to false.",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Indicates whether the items should be removed. By default, false."
+ },
+ "inferrable": true,
+ "http_endpoint_parameter_name": "delete_items"
+ }
+ ]
+ },
+ "output": {
+ "description": "Response from the API endpoint 'unGroup'.",
+ "available_modes": [
+ "value",
+ "error",
+ "null"
+ ],
+ "value_schema": {
+ "val_type": "json",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": null
+ }
+ },
+ "requirements": {
+ "authorization": {
+ "provider_id": "arcade-miro",
+ "provider_type": "oauth2",
+ "id": null,
+ "oauth2": null
+ },
+ "secrets": null,
+ "metadata": null
+ },
+ "deprecation_message": null,
+ "metadata": {
+ "object_type": "api_wrapper_tool",
+ "version": "1.0.0",
+ "description": "Tools that enable LLMs to interact directly with the miro API."
+ },
+ "http_endpoint": {
+ "metadata": {
+ "object_type": "http_endpoint",
+ "version": "1.0.0",
+ "description": ""
+ },
+ "url": "https://api.miro.com/v2/boards/{board_id}/groups/{group_id}",
+ "http_method": "DELETE",
+ "headers": {},
+ "parameters": [
+ {
+ "name": "delete_items",
+ "tool_parameter_name": "delete_items_after_ungrouping",
+ "description": "Indicates whether the items should be removed. By default, false.",
+ "value_schema": {
+ "val_type": "boolean",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Indicates whether the items should be removed. By default, false."
+ },
+ "accepted_as": "query",
+ "required": false,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "board_id",
+ "tool_parameter_name": "board_id",
+ "description": "Unique identifier (ID) of the board.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the board."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ },
+ {
+ "name": "group_id",
+ "tool_parameter_name": "group_identifier",
+ "description": "Unique identifier (ID) of the group.",
+ "value_schema": {
+ "val_type": "string",
+ "inner_val_type": null,
+ "enum": null,
+ "properties": null,
+ "inner_properties": null,
+ "description": "Unique identifier (ID) of the group."
+ },
+ "accepted_as": "path",
+ "required": true,
+ "deprecated": false,
+ "documentation_urls": []
+ }
+ ],
+ "documentation_urls": [],
+ "secrets": [
+ {
+ "arcade_key": "auth_token",
+ "parameter_name": "Authorization",
+ "accepted_as": "header",
+ "formatted_value": "Bearer {authorization}",
+ "description": "The OAuth token to use for authentication.",
+ "is_auth_token": true
+ }
+ ]
+ }
+}
diff --git a/toolkits/miro_api/pyproject.toml b/toolkits/miro_api/pyproject.toml
new file mode 100644
index 00000000..9aacde30
--- /dev/null
+++ b/toolkits/miro_api/pyproject.toml
@@ -0,0 +1,61 @@
+[build-system]
+requires = [ "hatchling",]
+build-backend = "hatchling.build"
+
+[project]
+name = "arcade_miro_api"
+version = "0.1.0"
+description = "Tools that enable LLMs to interact directly with the miro API."
+requires-python = ">=3.10"
+dependencies = [
+ "arcade-tdk>=2.0.0,<3.0.0",
+ "httpx[http2]>=0.27.2,<1.0.0",
+]
+[[project.authors]]
+email = "support@arcade.dev"
+
+
+[project.optional-dependencies]
+dev = [
+ "arcade-mcp[all]>=1.0.0rc2,<3.0.0",
+ "arcade-serve>=2.0.0,<3.0.0",
+ "pytest>=8.3.0,<8.4.0",
+ "pytest-cov>=4.0.0,<4.1.0",
+ "pytest-mock>=3.11.1,<3.12.0",
+ "pytest-asyncio>=0.24.0,<0.25.0",
+ "mypy>=1.5.1,<1.6.0",
+ "pre-commit>=3.4.0,<3.5.0",
+ "tox>=4.11.1,<4.12.0",
+ "ruff>=0.7.4,<0.8.0",
+ "httpx[http2]>=0.27.2,<1.0.0",
+]
+
+# Tell Arcade.dev that this package is a toolkit
+[project.entry-points.arcade_toolkits]
+toolkit_name = "arcade_miro_api"
+
+# Use local path sources for arcade libs when working locally
+[tool.uv.sources]
+arcade-ai = { path = "../../", editable = true }
+arcade-serve = { path = "../../libs/arcade-serve/", editable = true }
+arcade-tdk = { path = "../../libs/arcade-tdk/", editable = true }
+[tool.mypy]
+files = [ "arcade_miro_api/**/*.py",]
+python_version = "3.10"
+disallow_untyped_defs = "True"
+disallow_any_unimported = "True"
+no_implicit_optional = "True"
+check_untyped_defs = "True"
+warn_return_any = "True"
+warn_unused_ignores = "True"
+show_error_codes = "True"
+ignore_missing_imports = "True"
+
+[tool.pytest.ini_options]
+testpaths = [ "tests",]
+
+[tool.coverage.report]
+skip_empty = true
+
+[tool.hatch.build.targets.wheel]
+packages = [ "arcade_miro_api",]
diff --git a/toolkits/miro_api/tests/__init__.py b/toolkits/miro_api/tests/__init__.py
new file mode 100644
index 00000000..e69de29b