MCP Server Framework and Tool Development library for building custom capabilities into agents.
Find a file
Eric Gustin 1e0def78df
CrewAI Arcade (#253)
# CrewAI Integration
crewai-arcade enables you to add Arcade tools and Arcade Auth into your
CrewAI applications. Just create an `ArcadeToolManager` and add your
tools to your CrewAI Agent/Tasks.

## Initializing the ArcadeToolManager
There are two main ways to initialize your `ArcadeToolManager`
1. Default handling of tool authorization and execution:
    ```py
    """
    When you provide a user id to the ArcadeToolManger, 
    it will handle the tool authorization and tool execution for you
    """
manager = ArcadeToolManager(default_user_id="me@example.com,
api_key="...")
    ```
2. Custom handling of tool authorization and execution
    ```py
    """
    Provide a callback function to the `ArcadeToolManager` that handles 
tool authorization and tool execution. The callback function will be
called whenever your CrewAI
    application wants to call a tool.
    """
    
    
    def custom_tool_executor(
manager: ArcadeToolManager, tool_name: str, **tool_input: dict[str, Any]
    ) -> Any:
        """Custom tool executor for the ArcadeToolManager
    
ArcadeToolManager's default executor handles authorization and tool
execution.
This function overrides the default executor to handle authorization and
tool execution
        in a custom way.
        """
        # Your custom tool auth logic goes here
        # Your custom tool execution logic goes here
        ...
    
manager = ArcadeToolManager(executor=custom_tool_executor,
api_key="...")
    ```

## Tool Registration
1. Initialize the tools in the manager
    ```py
    """
Clears any existing tools in the manager and replaces them with tools
and toolkits that are provided.
    """
    manager.init_tools(tools=["Google.ListEmails"], toolkits=["Slack"])
    ```
2. Add tools to the manager
    ```py
    """
    Adds tools and toolkits to the manager's internal tool list.
    """
    manager.add_tools(tools=["Google.ListEmails"], toolkits=["Slack"])
    ```
3. Retrieve tools and toolkits from the manager
    ```py
    """
    Retrieves the provided tools and toolkits as CrewAI StructuredTools.
    """
    manager.get_tools(tools=["Google.ListEmails"], toolkits=["Slack"])
    ```
    
 ## Auth Helpers
The `ArcadeToolManager` provides multiple helper methods for when you
need to create
a custom auth flow.
1. `authorize_tool` handles the whole authorization flow for you. This
is used internally when a custom auth flow is not needed.
2. `requires_auth(tool_name)` checks if the provided tool has
authorization requirements.
3. `authorize(tool_name, user_id)` authorizes the use of the provided
tool for the provided user ID
4. `is_authorized(tool_name, user_id)` checks if a tool is authorized
for use by the provided user ID
5. `wait_for_auth(auth_response)` waits for an authorization process to
complete before returning

## Tool Execution Helpers
1. `execute_tool` handles the whole tool execution flow for you. This is
used internally when a custom tool execution flow is not needed.

---------

Co-authored-by: lgesuellip <lgesuellipinto@uade.edu.ar>
Co-authored-by: lpetralli <123559656+lpetralli@users.noreply.github.com>
Co-authored-by: lgesuellip <102637283+lgesuellip@users.noreply.github.com>
Co-authored-by: “lgesuellip” <“lgesuellipinto@uade.edu.ar”>
2025-02-19 15:02:42 -08:00
.github Give release permissions (#245) 2025-02-10 16:07:25 -08:00
.vscode Make fastapi a regular dependency (#243) 2025-02-10 15:30:51 -08:00
arcade Add @tool.deprecated (#247) 2025-02-18 13:27:49 -08:00
contrib CrewAI Arcade (#253) 2025-02-19 15:02:42 -08:00
docker Make fastapi a regular dependency (#243) 2025-02-10 15:30:51 -08:00
examples CrewAI Arcade (#253) 2025-02-19 15:02:42 -08:00
schemas/preview Update auth provider_id (#173) 2025-01-17 11:38:06 -08:00
toolkits Slack tools to retrieve messages & metadata from multi-person DM conversation (#254) 2025-02-19 16:51:45 -03:00
.editorconfig Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.gitignore Remove toml (#210) 2025-01-17 09:56:43 -08:00
.pre-commit-config.yaml Add arcade new Improvements (#156) 2024-12-02 17:44:09 -08:00
.prettierignore Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.prettierrc.toml Fix ruff (#64) 2024-09-25 09:47:30 -07:00
.ruff.toml Toolkit lint cleanup (#72) 2024-10-01 10:41:38 -07:00
CONTRIBUTING.md Update Examples & Various Renames (#233) 2025-01-28 17:17:29 -08:00
cspell.config.yaml Replace arcade.client with arcadepy (#119) 2024-10-23 15:29:02 -07:00
LICENSE Update README and LICENSE (#220) 2025-01-23 19:43:48 -08:00
Makefile Make fastapi a regular dependency (#243) 2025-02-10 15:30:51 -08:00
README.md Update README (#257) 2025-02-18 13:53:34 -08:00

DocsToolkitsModel ProvidersAuth ProvidersExamples

What is Arcade?

Arcade provides developer-focused tooling and APIs designed to improve the capabilities of LLM applications and agents.

By removing the complexity of connecting agentic applications with your users' data and services, Arcade enables developers to focus on building their agentic applications.

To learn more, check out our documentation.

Pst. hey, you, give us a star if you like it!

GitHub stars

Quickstart

Requirements

  1. An Arcade account
  2. Python 3.10+ and pip

Installation

Install the package:

pip install arcade-ai

Log in to your account via the CLI:

arcade login

This opens a browser window for authentication.

Verify Installation with arcade chat

Use the arcade chat CLI app to test tools:

arcade chat

This connects to the Arcade Cloud Engine (api.arcade.dev) with all pre-built Arcade tools.

For example, try:

User (dev@arcade.dev):
> star the ArcadeAI/arcade-ai repo on Github

Arcade will prompt you to authorize with GitHub and will star the ArcadeAI/arcade-ai repo on your behalf.

You'll see:

Assistant (gpt-4o):
I starred the ArcadeAI/arcade-ai repo on Github for you!

Press Ctrl-C to exit the chat.

Arcade Cloud

Arcade Cloud is a hosted version of the Arcade engine that hosts a number of prebuilt toolkits for interacting with a variety of services.

Prebuilt Toolkits

Arcade offers a number of prebuilt toolkits that can be used by agents to interact with a variety of services.

Service Auth Type Toolkit Documentation
GitHub OAuth Github GitHub Toolkit Docs
Gmail OAuth Google Gmail Toolkit Docs
Google Calendar OAuth Google Google Calendar Toolkit Docs
Google Docs OAuth Google Google Docs Toolkit Docs
Google Drive OAuth Google Google Drive Toolkit Docs
Search API Key Search Search Toolkit Docs
Slack OAuth Slack Slack Toolkit Docs
Spotify OAuth Spotify Spotify Toolkit Docs
Web API Key Web Web Toolkit Docs
Twitter OAuth X X Toolkit Docs

Supported Auth Providers

Provider Name Documentation
GitHub github GitHub Auth Docs
Google google Google Auth Docs
LinkedIn linkedin LinkedIn Auth Docs
Microsoft microsoft Microsoft Auth Docs
Slack slack Slack Auth Docs
Spotify spotify Spotify Auth Docs
X x X Auth Docs
Zoom zoom Zoom Auth Docs
OAuth 2.0 oauth2 Generic OAuth2 Auth Docs

Supported Language Models

The LLM API supports a variety of language models. Currently, the ones supported in Arcade Cloud are OpenAI, Anthropic, Ollama, and Groq.

Model Provider Documentation
OpenAI OpenAI OpenAI Models Docs
Anthropic Anthropic Anthropic Models Docs
Ollama Ollama Ollama Models Docs
Groq Groq Groq Models Docs

For more information, refer to the supported models documentation.

Get Started with Arcade

To get started with Arcade, check out our quickstart guide.

Building Your Own Tools

Learn how to build your own tools by following our creating a custom toolkit guide.

Evaluating Tools

Arcade enables you to evaluate your custom tools to ensure they function correctly with the AI assistant, including defining evaluation cases and using different critics.

Learn how to evaluate your tools by following our evaluating tools guide.

Contributing

We love contributions! Please read our contributing guide before submitting a pull request. If you'd like to self-host, refer to the self-hosting documentation.

↑ Back to Top ↑