HomeFAQ

Frequently Asked Questions

What if I need a Tool that Arcade doesn’t have?

Arcade makes it easy to build your own tools! You can fork our existing tools, or build your own from scratch. Learn more about building your own toolkit.

How do I contribute back a Tool to the Registry?

We’re always looking for new tools and toolkits! If you have a tool that you think would be useful to others, please let us know. You can contribute a tool by submitting a pull request to the Arcade GitHub repository.

What is the difference between the Arcade CLI and the Arcade Clients?

The Arcade CLI is a command line tool that makes it easy to build, test, and deploy your own tools to production. The Arcade Client libraries are what you will use within your own agents and applications to call the tools.

How does Arcade.dev relate to the Model Context Protocol (MCP)?

The Arcade.dev engine both speaks MCP and extends it with an authentication-first architecture. This means that you can use Arcade.dev to build tools that can be called by any LLM that supports MCP, while also providing a secure and easy way to authenticate users and manage access to those tools. Learn more about Arcade.dev and MCP.

Auth FAQ

What is the difference between adding an included provider and adding a custom provider?

This is an important observation. Technically, both included and custom providers are OAuth providers. However, when you add an included provider, the Arcade Engine requires less information from you to configure the provider, because it can use the values defined by that provider on their official documentation. Also, most importantly, the Engine will automatically route tools so they connect to the added provider.

Can my users connect multiple accounts of the same provider?

Today this is possible if you assign multiple Arcade user_ids to the same user on your system. You will need to manage the mapping between users in your system and the different Arcade user_ids assigned to them.

Can I authenticate multiple tools at once?

Yes, as long as they are from the same OAuth provider. You need to collect all the scopes required by the tools you need, and then authenticate with that provider with all these scopes. For example, for Google Tools, you can use this code to authenticate once:

from arcadepy import Arcade
 
client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
USER_ID = "you@example.com"
 
# get the list of tools
tools = client.tools.list(toolkit="Google")
 
# collect the scopes
scopes = set()
for tool in tools:
    if tool.requirements.authorization.oauth2.scopes:
        scopes |= set(tool.requirements.authorization.oauth2.scopes)
 
# start auth
auth_response = client.auth.start(user_id=USER_ID, scopes=list(scopes), provider="google")
 
 
# show the url to the user if needed
if auth_response.status != "complete":
    print(f"Please click here to authorize: {auth_response.url}")
    # Wait for the authorization to complete
    client.auth.wait_for_completion(auth_response)