<!-- CURSOR_SUMMARY --> > [!NOTE] > Adds a typed `PagerDuty` OAuth2 provider and wires it through TDK/MCP exports, with tests and coordinated version/dependency bumps. > > - **Auth (core)**: > - Add typed OAuth2 provider `PagerDuty` (`provider_id="pagerduty"`) in `arcade_core/auth.py`. > - **TDK & MCP Server**: > - Re-export `PagerDuty` in `arcade_tdk/auth/__init__.py` and `arcade_mcp_server/auth/__init__.py`. > - **Tests**: > - Extend `test_tool_decorator.py` and `test_create_tool_definition.py` to cover `PagerDuty` success/failure and tool requirement generation. > - **Versioning/Deps**: > - Bump versions: `arcade-core`→`4.1.0`, `arcade-tdk`→`3.4.0`, `arcade-mcp-server`→`1.14.0`, root `arcade-mcp`→`1.7.1`. > - Update dependency ranges to require the bumped versions. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2b60261b1962586ea58831ccb6ea66e57053ac86. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Francisco Liberal <francisco@arcade.dev> |
||
|---|---|---|
| .. | ||
| arcade_tdk | ||
| pyproject.toml | ||
| README.md | ||
Arcade TDK (Toolkit Development Kit)
Toolkit Development Kit for building and testing Arcade tools.
Overview
Arcade TDK provides the essential tools and utilities for building Arcade tools:
- Tool Decorator: Simple
@tooldecorator for creating Arcade tools - Authentication: Auth providers and helpers for tool security
- Annotations: Type annotations and parameter validation
- Core Integration: Seamless integration with arcade-core components
Installation
pip install arcade-tdk
Usage
from typing import Annotated
from arcade_tdk import tool
@tool
def hello_world(name: Annotated[str, "The name of the person to greet"]) -> str:
"""Say hello to someone."""
return f"Hello, {name}!"
# The tool is automatically registered and available for use
Advanced Usage
from typing import Annotated
from arcade_tdk import tool, ToolCatalog, Toolkit
from arcade_tdk.auth import Reddit
# Create tools with auth requirement
@tool(requires_auth=Reddit(scopes=["read"]))
def get_posts_in_subreddit(
subreddit: Annotated[str, "The name of the subreddit"],
limit: Annotated[int, "The number of posts to return]
) -> dict:
"""Get posts from a specific subreddit"""
# TODO: Implement your Reddit tool
return {}
License
MIT License - see LICENSE file for details.