From 7892532df20ae1230810df2a73425cbbfcb58760 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 18 Dec 2025 01:24:32 +0000 Subject: [PATCH 1/7] Adding overview page for frameworks and MCP clients --- app/en/home/_meta.tsx | 3 + .../home/agent-frameworks-overview/page.mdx | 155 ++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 app/en/home/agent-frameworks-overview/page.mdx diff --git a/app/en/home/_meta.tsx b/app/en/home/_meta.tsx index 056b3d3dc..f66b9463c 100644 --- a/app/en/home/_meta.tsx +++ b/app/en/home/_meta.tsx @@ -68,6 +68,9 @@ export const meta: MetaRecord = { type: "separator", title: "Agent Frameworks and MCP", }, + "agent-frameworks-overview": { + title: "Overview", + }, "mcp-clients": { title: "MCP Clients", }, diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx new file mode 100644 index 000000000..f1798aaae --- /dev/null +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -0,0 +1,155 @@ +# Arcade with with Agent Frameworks and MCP Clients + +Arcade seamlessly integrates with your favorite agent frameworks and MCP clients, making it easy to add powerful tool-calling capabilities to your AI applications. + +## Agent Frameworks + +
+
+
+
+
+ LangChain logo +
+
+
+ + +

LangChain

+
+
+
+
+ +
+
+
+
+ CrewAI logo +
+
+
+ + +

CrewAI

+
+
+
+
+ +
+
+
+
+ OpenAI logo +
+
+
+ + +

OpenAI Agents

+
+
+
+
+ +
+
+
+
+ Google logo +
+
+
+ + +

Google ADK

+
+
+
+
+ +
+
+
+
+ Mastra logo +
+
+
+ + +

Mastra

+
+
+
+
+ +
+
+
+
+ Vercel logo +
+
+
+ + +

Vercel AI

+
+
+
+
+
+ +## MCP Clients + +
+
+
+
+
+ Claude Desktop logo +
+
+
+ + +

Claude Desktop

+
+
+
+
+ +
+
+
+
+ Cursor logo +
+
+
+ + +

Cursor

+
+
+
+
+ +
+
+
+
+ VS Code logo +
+
+
+ + +

VS Code

+
+
+
+
+
From fee9a23f8c183947b8eabba48e43ddb6e3c18938 Mon Sep 17 00:00:00 2001 From: "RL \"Nearest\" Nabors" <236306+nearestnabors@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:47:47 +0000 Subject: [PATCH 2/7] Update app/en/home/agent-frameworks-overview/page.mdx Co-authored-by: vfanelle --- app/en/home/agent-frameworks-overview/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx index f1798aaae..21254c942 100644 --- a/app/en/home/agent-frameworks-overview/page.mdx +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -1,4 +1,4 @@ -# Arcade with with Agent Frameworks and MCP Clients +# Arcade with Agent Frameworks and MCP Clients Arcade seamlessly integrates with your favorite agent frameworks and MCP clients, making it easy to add powerful tool-calling capabilities to your AI applications. From 53890aefb08ee7e21fd043f566414ae8a68e746f Mon Sep 17 00:00:00 2001 From: jottakka Date: Thu, 18 Dec 2025 15:00:36 -0300 Subject: [PATCH 3/7] Pagerduty documentation (#600) * Pagerduty documentation * merge * update docs --------- Co-authored-by: Francisco Liberal --- app/en/home/auth-providers/pagerduty/page.mdx | 44 +- app/en/mcp-servers/customer-support/_meta.tsx | 3 + .../customer-support/pagerduty/page.mdx | 597 ++++++++++++++++++ ...get_escalation_policy_example_call_tool.js | 23 + ...get_escalation_policy_example_call_tool.py | 22 + .../get_incident_example_call_tool.js | 23 + .../get_incident_example_call_tool.py | 22 + .../get_service_example_call_tool.js | 23 + .../get_service_example_call_tool.py | 22 + .../pagerduty/get_team_example_call_tool.js | 23 + .../pagerduty/get_team_example_call_tool.py | 22 + ...t_escalation_policies_example_call_tool.js | 24 + ...t_escalation_policies_example_call_tool.py | 23 + .../list_incidents_example_call_tool.js | 30 + .../list_incidents_example_call_tool.py | 29 + .../list_log_entries_example_call_tool.js | 29 + .../list_log_entries_example_call_tool.py | 28 + .../list_oncalls_example_call_tool.js | 30 + .../list_oncalls_example_call_tool.py | 29 + .../list_schedules_example_call_tool.js | 25 + .../list_schedules_example_call_tool.py | 24 + .../list_services_example_call_tool.js | 25 + .../list_services_example_call_tool.py | 24 + .../pagerduty/list_teams_example_call_tool.js | 24 + .../pagerduty/list_teams_example_call_tool.py | 23 + .../pagerduty/list_users_example_call_tool.js | 24 + .../pagerduty/list_users_example_call_tool.py | 23 + .../search_users_example_call_tool.js | 24 + .../search_users_example_call_tool.py | 23 + .../pagerduty/whoami_example_call_tool.js | 19 + .../pagerduty/whoami_example_call_tool.py | 18 + 31 files changed, 1299 insertions(+), 23 deletions(-) create mode 100644 app/en/mcp-servers/customer-support/pagerduty/page.mdx create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.py create mode 100644 public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.js create mode 100644 public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.py diff --git a/app/en/home/auth-providers/pagerduty/page.mdx b/app/en/home/auth-providers/pagerduty/page.mdx index 992dcb5ed..fefab4e14 100644 --- a/app/en/home/auth-providers/pagerduty/page.mdx +++ b/app/en/home/auth-providers/pagerduty/page.mdx @@ -4,6 +4,10 @@ import { Tabs, Callout, Steps } from "nextra/components"; The PagerDuty auth provider enables tools and agents to call [PagerDuty APIs](https://developer.pagerduty.com/api-reference/) on behalf of a user using OAuth 2.0 authentication. + +Arcade currently supports **Classic** PagerDuty OAuth apps only. Choose Classic and select either **read-only** or **read/write** access. Newer Web App or other models are not supported. See [PagerDuty OAuth functionality](https://developer.pagerduty.com/docs/oauth-functionality). + + Want to quickly get started with PagerDuty in your agent or AI app? The pre-built [Arcade PagerDuty MCP @@ -56,10 +60,10 @@ To integrate with PagerDuty's API using OAuth 2.0, you'll need to register an ap #### Configure OAuth settings -1. Choose **Scoped OAuth** as the authorization method -2. Select the required **permission scopes** based on your application's needs: - - Common scopes include: `read`, `write`, `analytics.read`, `users.read`, `teams.read`, etc. -3. Add the **Redirect URL** generated by Arcade (see configuration section below) to your app's redirect URLs +1. Choose **Classic** OAuth and select the permission level: + - **Read-only** (recommended; all current MCP tools only read data) + - Or **Read/Write** if you plan custom tools that modify data +2. Add the **Redirect URL** generated by Arcade (see configuration section below) to your app's redirect URLs #### Save your credentials @@ -68,7 +72,7 @@ To integrate with PagerDuty's API using OAuth 2.0, you'll need to register an ap -For detailed instructions, refer to PagerDuty's [OAuth 2.0 guide](https://www.pagerduty.com/blog/insights/build-sophisticated-apps-for-your-pagerduty-environment-using-oauth-2-0-and-api-scopes/) and [OAuth documentation](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-o-auth-2-functionality). +For detailed instructions, refer to PagerDuty's [OAuth 2.0 guide](https://www.pagerduty.com/blog/insights/build-sophisticated-apps-for-your-pagerduty-environment-using-oauth-2-0-and-api-scopes/) and [OAuth documentation](https://developer.pagerduty.com/docs/oauth-functionality). Next, add the PagerDuty app to Arcade. @@ -143,7 +147,7 @@ Edit the `engine.yaml` file and add a new item to the `auth.providers` section: ```yaml auth: providers: - - id: arcade-pagerduty + - id: pagerduty description: PagerDuty OAuth 2.0 provider enabled: true type: oauth2 @@ -195,8 +199,8 @@ user_id = "{arcade_user_id}" # Start the authorization process auth_response = client.auth.start( user_id=user_id, - provider="arcade-pagerduty", - scopes=["read", "write"] + provider="pagerduty", + scopes=[] ) if auth_response.status != "completed": @@ -222,10 +226,7 @@ const client = new Arcade(); const userId = "{arcade_user_id}"; // Start the authorization process -const authResponse = await client.auth.start(userId, "arcade-pagerduty", [ - "read", - "write", -]); +const authResponse = await client.auth.start(userId, "pagerduty", []); if (authResponse.status !== "completed") { console.log("Please complete the authorization challenge in your browser:"); @@ -249,21 +250,18 @@ You can use the pre-built [Arcade PagerDuty MCP Server](/mcp-servers/development If the pre-built tools in the PagerDuty MCP Server don't meet your needs, you can author your own [custom tools](/home/build-tools/create-a-mcp-server) that interact with the PagerDuty API. -Use the `OAuth2()` auth class to specify that a tool requires authorization with PagerDuty. The `context.authorization.token` field will be automatically populated with the user's PagerDuty token: +Use the `PagerDuty()` auth class to specify that a tool requires authorization with PagerDuty. The `context.authorization.token` field will be automatically populated with the user's PagerDuty token: ```python {8-12,22} from typing import Annotated import httpx from arcade_tdk import ToolContext, tool -from arcade_tdk.auth import OAuth2 +from arcade_tdk.auth import PagerDuty @tool( - requires_auth=OAuth2( - provider_id="arcade-pagerduty", - scopes=["read"] - ) + requires_auth=PagerDuty() ) async def get_current_user( context: ToolContext, @@ -283,11 +281,11 @@ async def get_current_user( return dict(response.json()) ``` -## Available Scopes +## Permissions -PagerDuty uses a simplified scope system with the following scopes: +PagerDuty Classic apps use two permission levels: -- `read` - Read-only access to PagerDuty resources -- `write` - Full read and write access to PagerDuty resources +- **read** — Read-only access to PagerDuty resources (recommended; all current MCP tools are read-only) +- **write** — Full read/write access (only needed if you add custom write tools) -For more details about PagerDuty's OAuth scopes and permissions, refer to the [PagerDuty OAuth Scopes documentation](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-o-auth-2-functionality#scopes). +For more details about PagerDuty’s OAuth permissions, refer to the [PagerDuty OAuth functionality docs](https://developer.pagerduty.com/docs/oauth-functionality#scopes). diff --git a/app/en/mcp-servers/customer-support/_meta.tsx b/app/en/mcp-servers/customer-support/_meta.tsx index 192bec491..c05c04093 100644 --- a/app/en/mcp-servers/customer-support/_meta.tsx +++ b/app/en/mcp-servers/customer-support/_meta.tsx @@ -14,6 +14,9 @@ const meta: MetaRecord = { pylon: { title: "Pylon", }, + pagerduty: { + title: "PagerDuty", + }, }; export default meta; diff --git a/app/en/mcp-servers/customer-support/pagerduty/page.mdx b/app/en/mcp-servers/customer-support/pagerduty/page.mdx new file mode 100644 index 000000000..a7e7cb10e --- /dev/null +++ b/app/en/mcp-servers/customer-support/pagerduty/page.mdx @@ -0,0 +1,597 @@ +# PagerDuty + +import ToolInfo from "@/app/_components/tool-info"; +import Badges from "@/app/_components/badges"; +import TabbedCodeBlock from "@/app/_components/tabbed-code-block"; +import TableOfContents from "@/app/_components/table-of-contents"; +import ToolFooter from "@/app/_components/tool-footer"; +import { Callout } from "nextra/components"; + + + + + +The PagerDuty MCP Server lets agents list and inspect incidents, on-calls, services, teams, users, schedules, log entries, and escalation policies. Follows the Linear-style docs with code snippets in Python and JavaScript. + + + Arcade supports Classic PagerDuty apps. Select **read-only** access; all tools + in this MCP Server only read data. (Use read/write only if you add custom + write tools.) See [PagerDuty OAuth + functionality](https://developer.pagerduty.com/docs/oauth-functionality). + + + + Configure PagerDuty OAuth in the [PagerDuty auth + provider](/home/auth-providers/pagerduty) before using these tools. + + +## Available tools + + + + + If you need a tool that's not listed, [contact us](mailto:contact@arcade.dev) + or [build your own](/home/build-tools/create-a-mcp-server). + + + + - `readOnlyHint` — reads data only - `openWorldHint` — calls PagerDuty's + external API - `destructiveHint` — none of these tools delete data - + `idempotentHint` — repeating the same read call returns the same data + + +--- + +## User context + +### PagerDuty.WhoAmI + +Get the authenticated user's profile plus current on-call info. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** +None. + +**API calls:** GET `/users/me`, GET `/oncalls` + +--- + +## Incident tools + +### PagerDuty.ListIncidents + +List incidents with filters (status, urgency, services, teams, time window). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **status** (`enum`, _optional_) Filter by status. +- **urgency** (`enum`, _optional_) Filter by urgency. +- **service_ids** (`array`, _optional_) Filter by service IDs. +- **team_ids** (`array`, _optional_) Filter by team IDs. +- **since** / **until** (`string`, _optional_) ISO-8601 time range. +- **limit** (`integer`, _optional_) 1-50, default 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/incidents` + +--- + +### PagerDuty.GetIncident + +Get a single incident by ID. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **incident_id** (`string`, **required**) Incident ID. + +**API calls:** GET `/incidents/{id}` + +--- + +### PagerDuty.ListLogEntries + +List account log entries (activity feed). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **since** / **until** (`string`, _optional_) ISO-8601 time range. +- **team_ids** (`array`, _optional_) Filter by team IDs. +- **time_zone** (`string`, _optional_) IANA time zone. +- **is_overview** (`boolean`, _optional_) Compact mode. Default: `true`. +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/log_entries` + +--- + +## Escalation policy tools + +### PagerDuty.ListEscalationPolicies + +List escalation policies. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/escalation_policies` + +--- + +### PagerDuty.GetEscalationPolicy + +Get escalation policy details. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **escalation_policy_id** (`string`, **required**) Escalation policy ID. + +**API calls:** GET `/escalation_policies/{id}` + +--- + +## Service tools + +### PagerDuty.ListServices + +List services (optional name search). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **query** (`string`, _optional_) Search by name. +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/services` + +--- + +### PagerDuty.GetService + +Get service details. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **service_id** (`string`, **required**) Service ID. + +**API calls:** GET `/services/{id}` + +--- + +## Schedule tools + +### PagerDuty.ListSchedules + +List schedules with optional time zone and pagination. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. +- **time_zone** (`string`, _optional_) IANA time zone. + +**API calls:** GET `/schedules` + +--- + +## On-call tools + +### PagerDuty.ListOnCalls + +List on-call entries with filters (schedule, escalation policy, team, time). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **schedule_ids** (`array`, _optional_) Filter by schedules. +- **escalation_policy_ids** (`array`, _optional_) Filter by escalation policies. +- **team_ids** (`array`, _optional_) Filter by teams. +- **time_zone** (`string`, _optional_) IANA time zone. +- **since** / **until** (`string`, _optional_) ISO times. +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/oncalls` + +--- + +## User tools + +### PagerDuty.ListUsers + +List users with pagination. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/users` + +--- + +### PagerDuty.SearchUsers + +Search users by name/email (fuzzy). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **query** (`string`, **required**) Name or email fragment. +- **auto_accept_matches** (`boolean`, _optional_) Auto-accept above confidence threshold. Default: `false`. + +**API calls:** GET `/users` (fuzzy match locally) + +--- + +## Team tools + +### PagerDuty.ListTeams + +List teams with pagination. + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **limit** (`integer`, _optional_) 1-50. Default: 10. +- **offset** (`integer`, _optional_) Pagination offset. + +**API calls:** GET `/teams` + +--- + +### PagerDuty.GetTeam + +Get team details (members, linked services/policies). + + + - `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls + PagerDuty’s external API - `destructiveHint: false` — no destructive + operations - `idempotentHint: true` — same request returns same data + + + + +**Parameters** + +- **team_id** (`string`, **required**) Team ID. + +**API calls:** GET `/teams/{id}` + +--- + +## Auth + +PagerDuty requires OAuth2. Configure the PagerDuty auth provider and request the scopes shown above per tool. Tokens are passed as Bearer auth: + +``` +Authorization: Bearer +``` + +See PagerDuty auth docs: [PagerDuty API Authentication](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTYz-authentication). + + diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.js new file mode 100644 index 000000000..5d8013549 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.js @@ -0,0 +1,23 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.GetEscalationPolicy"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + escalation_policy_id: "", +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.py new file mode 100644 index 000000000..b55f648f6 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_escalation_policy_example_call_tool.py @@ -0,0 +1,22 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.GetEscalationPolicy" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "escalation_policy_id": "", +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.js new file mode 100644 index 000000000..bea0b6be9 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.js @@ -0,0 +1,23 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.GetIncident"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + incident_id: "", +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.py new file mode 100644 index 000000000..0da8360f8 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_incident_example_call_tool.py @@ -0,0 +1,22 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.GetIncident" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "incident_id": "", +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.js new file mode 100644 index 000000000..e4ca91dde --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.js @@ -0,0 +1,23 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.GetService"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + service_id: "", +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.py new file mode 100644 index 000000000..c18d58372 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_service_example_call_tool.py @@ -0,0 +1,22 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.GetService" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "service_id": "", +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.js new file mode 100644 index 000000000..6121d4a97 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.js @@ -0,0 +1,23 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.GetTeam"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + team_id: "", +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.py new file mode 100644 index 000000000..9594a47ce --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/get_team_example_call_tool.py @@ -0,0 +1,22 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.GetTeam" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "team_id": "", +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.js new file mode 100644 index 000000000..87ad9d982 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.js @@ -0,0 +1,24 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListEscalationPolicies"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.py new file mode 100644 index 000000000..34ec9873d --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_escalation_policies_example_call_tool.py @@ -0,0 +1,23 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListEscalationPolicies" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.js new file mode 100644 index 000000000..6576caa5a --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.js @@ -0,0 +1,30 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListIncidents"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + status: null, + urgency: null, + service_ids: null, + team_ids: null, + since: null, + until: null, + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.py new file mode 100644 index 000000000..8c2a5cd8c --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_incidents_example_call_tool.py @@ -0,0 +1,29 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListIncidents" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "status": None, + "urgency": None, + "service_ids": None, + "team_ids": None, + "since": None, + "until": None, + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.js new file mode 100644 index 000000000..b7db7970d --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.js @@ -0,0 +1,29 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListLogEntries"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + since: null, + until: null, + team_ids: null, + time_zone: null, + is_overview: true, + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.py new file mode 100644 index 000000000..1363fb0e8 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_log_entries_example_call_tool.py @@ -0,0 +1,28 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListLogEntries" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "since": None, + "until": None, + "team_ids": None, + "time_zone": None, + "is_overview": True, + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.js new file mode 100644 index 000000000..803ea2faf --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.js @@ -0,0 +1,30 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListOnCalls"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + schedule_ids: null, + escalation_policy_ids: null, + team_ids: null, + time_zone: null, + since: null, + until: null, + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.py new file mode 100644 index 000000000..59ccf3612 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_oncalls_example_call_tool.py @@ -0,0 +1,29 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListOnCalls" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "schedule_ids": None, + "escalation_policy_ids": None, + "team_ids": None, + "time_zone": None, + "since": None, + "until": None, + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.js new file mode 100644 index 000000000..81bc11fab --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.js @@ -0,0 +1,25 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListSchedules"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + limit: 10, + offset: null, + time_zone: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.py new file mode 100644 index 000000000..8930baa67 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_schedules_example_call_tool.py @@ -0,0 +1,24 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListSchedules" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "limit": 10, + "offset": None, + "time_zone": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.js new file mode 100644 index 000000000..ec8c8ea70 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.js @@ -0,0 +1,25 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListServices"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + query: null, + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.py new file mode 100644 index 000000000..5303d632e --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_services_example_call_tool.py @@ -0,0 +1,24 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListServices" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "query": None, + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.js new file mode 100644 index 000000000..914118ecf --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.js @@ -0,0 +1,24 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListTeams"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.py new file mode 100644 index 000000000..92e532959 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_teams_example_call_tool.py @@ -0,0 +1,23 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListTeams" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.js new file mode 100644 index 000000000..077a5a5f2 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.js @@ -0,0 +1,24 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.ListUsers"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + limit: 10, + offset: null, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.py new file mode 100644 index 000000000..e7e24f7d6 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/list_users_example_call_tool.py @@ -0,0 +1,23 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.ListUsers" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "limit": 10, + "offset": None, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.js new file mode 100644 index 000000000..e8f59ff56 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.js @@ -0,0 +1,24 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.SearchUsers"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + query: "Alex", + auto_accept_matches: false, +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.py new file mode 100644 index 000000000..a62cdbfe3 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/search_users_example_call_tool.py @@ -0,0 +1,23 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.SearchUsers" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +tool_input = { + "query": "Alex", + "auto_accept_matches": False, +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.js b/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.js new file mode 100644 index 000000000..9e0b7d02d --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.js @@ -0,0 +1,19 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "PagerDuty.WhoAmI"; + +const authResponse = await client.tools.authorize({ tool_name: TOOL_NAME, user_id: USER_ID }); +if (authResponse.status !== "completed") { + console.log(`Authorize here: ${authResponse.url}`); +} +await client.auth.waitForCompletion(authResponse); + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: {}, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.py b/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.py new file mode 100644 index 000000000..fec657a13 --- /dev/null +++ b/public/examples/integrations/mcp-servers/pagerduty/whoami_example_call_tool.py @@ -0,0 +1,18 @@ +import json +from arcadepy import Arcade + +client = Arcade() +USER_ID = "{arcade_user_id}" +TOOL_NAME = "PagerDuty.WhoAmI" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID) +if auth_response.status != "completed": + print(f"Authorize here: {auth_response.url}") +client.auth.wait_for_completion(auth_response) + +response = client.tools.execute( + tool_name=TOOL_NAME, + input={}, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) From 8a516a6c27265c3c90f28648650ca2f8c241ff68 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 18 Dec 2025 18:42:06 +0000 Subject: [PATCH 4/7] Finesse the design of the framework tiles --- app/_components/framework-card.tsx | 60 ++++++ .../home/agent-frameworks-overview/page.mdx | 198 ++++-------------- 2 files changed, 104 insertions(+), 154 deletions(-) create mode 100644 app/_components/framework-card.tsx diff --git a/app/_components/framework-card.tsx b/app/_components/framework-card.tsx new file mode 100644 index 000000000..a9907ab88 --- /dev/null +++ b/app/_components/framework-card.tsx @@ -0,0 +1,60 @@ +"use client"; +import { Badge, Card, CardHeader, CardTitle } from "@arcadeai/design-system"; +import { cn } from "@arcadeai/design-system/lib/utils"; +import Link from "next/link"; +import type React from "react"; + +type FrameworkCardProps = { + name: string; + icon: string; + link: string; + languages?: Array<"TypeScript" | "Python">; +}; + +export const FrameworkCard: React.FC = ({ + name, + icon, + link, + languages = [], +}) => { + const showLanguageBadges = languages.length > 0; + + const cardContent = ( + + +
+
+ {`${name} +
+
+ + {name} + +
+ Agent Framework +
+
+
+ {showLanguageBadges && ( +
+ {languages.map((language) => ( + + {language} + + ))} +
+ )} +
+
+ ); + + return {cardContent}; +}; diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx index 21254c942..4a0c56c2e 100644 --- a/app/en/home/agent-frameworks-overview/page.mdx +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -1,155 +1,45 @@ -# Arcade with Agent Frameworks and MCP Clients - -Arcade seamlessly integrates with your favorite agent frameworks and MCP clients, making it easy to add powerful tool-calling capabilities to your AI applications. - -## Agent Frameworks - -
-
-
-
-
- LangChain logo -
-
- -
-
- -
-
-
-
- CrewAI logo -
-
- -
-
- -
-
-
-
- OpenAI logo -
-
- -
-
- -
-
-
-
- Google logo -
-
- -
-
- -
-
-
-
- Mastra logo -
-
- -
-
- -
-
-
-
- Vercel logo -
-
- -
-
-
- -## MCP Clients - -
-
-
-
-
- Claude Desktop logo -
-
- -
-
- -
-
-
-
- Cursor logo -
-
- -
-
- -
-
-
-
- VS Code logo -
-
- -
-
+import { FrameworkCard } from "@/app/_components/framework-card"; + +# Arcade with Agent Frameworks + +Arcade seamlessly integrates with your favorite agent frameworks, making it easy to add powerful tool-calling capabilities to your AI applications. + + +
+ + + + + +
From 3d5cfd9a4d1512c983bd22935d9b50016d6ab823 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 18 Dec 2025 20:35:28 +0000 Subject: [PATCH 5/7] adding a universal tile for future use. Adding bak MCP clients --- .../{framework-card.tsx => platform-card.tsx} | 8 ++-- .../home/agent-frameworks-overview/page.mdx | 47 +++++++++++++++---- 2 files changed, 43 insertions(+), 12 deletions(-) rename app/_components/{framework-card.tsx => platform-card.tsx} (93%) diff --git a/app/_components/framework-card.tsx b/app/_components/platform-card.tsx similarity index 93% rename from app/_components/framework-card.tsx rename to app/_components/platform-card.tsx index a9907ab88..02bb5a5f1 100644 --- a/app/_components/framework-card.tsx +++ b/app/_components/platform-card.tsx @@ -4,17 +4,19 @@ import { cn } from "@arcadeai/design-system/lib/utils"; import Link from "next/link"; import type React from "react"; -type FrameworkCardProps = { +type PlatformCardProps = { name: string; icon: string; link: string; + type: "Agent Framework" | "MCP Client"; languages?: Array<"TypeScript" | "Python">; }; -export const FrameworkCard: React.FC = ({ +export const PlatformCard: React.FC = ({ name, icon, link, + type, languages = [], }) => { const showLanguageBadges = languages.length > 0; @@ -35,7 +37,7 @@ export const FrameworkCard: React.FC = ({ {name}
- Agent Framework + {type}
diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx index 4a0c56c2e..dc8110852 100644 --- a/app/en/home/agent-frameworks-overview/page.mdx +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -1,45 +1,74 @@ -import { FrameworkCard } from "@/app/_components/framework-card"; +import { PlatformCard } from "@/app/_components/platform-card"; -# Arcade with Agent Frameworks +# Arcade with Agent Frameworks and MCP Clients -Arcade seamlessly integrates with your favorite agent frameworks, making it easy to add powerful tool-calling capabilities to your AI applications. +Arcade seamlessly integrates with your favorite agent frameworks and MCP clients, making it easy to add powerful tool-calling capabilities to your AI applications.
- - - - - -
+ +## MCP Clients + +
+ + + +
From c526ae609150815ddbdcefd54e97889ede79370d Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Fri, 19 Dec 2025 01:07:42 +0000 Subject: [PATCH 6/7] puts tabs in --- app/_components/platform-card.tsx | 21 +--- .../home/agent-frameworks-overview/page.mdx | 110 ++++++++++-------- 2 files changed, 65 insertions(+), 66 deletions(-) diff --git a/app/_components/platform-card.tsx b/app/_components/platform-card.tsx index 02bb5a5f1..50950139e 100644 --- a/app/_components/platform-card.tsx +++ b/app/_components/platform-card.tsx @@ -1,5 +1,5 @@ "use client"; -import { Badge, Card, CardHeader, CardTitle } from "@arcadeai/design-system"; +import { Card, CardHeader, CardTitle } from "@arcadeai/design-system"; import { cn } from "@arcadeai/design-system/lib/utils"; import Link from "next/link"; import type React from "react"; @@ -9,7 +9,6 @@ type PlatformCardProps = { icon: string; link: string; type: "Agent Framework" | "MCP Client"; - languages?: Array<"TypeScript" | "Python">; }; export const PlatformCard: React.FC = ({ @@ -17,10 +16,7 @@ export const PlatformCard: React.FC = ({ icon, link, type, - languages = [], }) => { - const showLanguageBadges = languages.length > 0; - const cardContent = ( = ({ )} > -
+
{`${name}
@@ -41,19 +37,6 @@ export const PlatformCard: React.FC = ({
- {showLanguageBadges && ( -
- {languages.map((language) => ( - - {language} - - ))} -
- )}
); diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx index dc8110852..ced9968f9 100644 --- a/app/en/home/agent-frameworks-overview/page.mdx +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -1,71 +1,87 @@ import { PlatformCard } from "@/app/_components/platform-card"; +import { Tabs } from "nextra/components"; # Arcade with Agent Frameworks and MCP Clients Arcade seamlessly integrates with your favorite agent frameworks and MCP clients, making it easy to add powerful tool-calling capabilities to your AI applications. +## Agent Frameworks -
- - - - - - -
+ + +
+ + + + +
+
+ +
+ + + + +
+
+
## MCP Clients
- - - Date: Fri, 19 Dec 2025 01:25:50 +0000 Subject: [PATCH 7/7] swapping tabs --- .../home/agent-frameworks-overview/page.mdx | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/en/home/agent-frameworks-overview/page.mdx b/app/en/home/agent-frameworks-overview/page.mdx index ced9968f9..fd49a55fc 100644 --- a/app/en/home/agent-frameworks-overview/page.mdx +++ b/app/en/home/agent-frameworks-overview/page.mdx @@ -17,21 +17,21 @@ Arcade seamlessly integrates with your favorite agent frameworks and MCP clients type="Agent Framework" />
@@ -45,21 +45,21 @@ Arcade seamlessly integrates with your favorite agent frameworks and MCP clients type="Agent Framework" />