Remove tools from the arcade wrapper toolkit that should not pass data through an LLM (#680)

Co-authored-by: Francisco Liberal <francisco@arcade.dev>
Co-authored-by: jottakka <fjlimal@gmail.com>
This commit is contained in:
Evan Tahler 2025-11-06 13:55:52 -08:00 committed by GitHub
parent e53a87bfaa
commit 57f2608dbe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 22 additions and 4602 deletions

View file

@ -199,99 +199,6 @@ async def list_available_auth_providers(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def create_auth_provider(
context: ToolContext,
mode: Annotated[
ToolMode,
"Operation mode: 'get_request_schema' returns the OpenAPI spec "
"for the request body, 'execute' performs the actual operation",
],
request_body: Annotated[
str | None,
"Stringified JSON representing the request body. Required when "
"mode is 'execute', ignored when mode is 'get_request_schema'",
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'auth-providers-create'."]:
"""Create a new authentication provider.
This tool is used to create a new authentication provider for the system, allowing integration with different authentication services.
Note: Understanding the request schema is necessary to properly create
the stringified JSON input object for execution.
Modes:
- GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't
already have it. Do NOT call repeatedly if you already received
the schema.
- EXECUTE: Performs the operation with the provided request body
JSON.
If you need the schema, call with mode='get_request_schema' ONCE, then execute.
""" # noqa: E501
if mode == ToolMode.GET_REQUEST_SCHEMA:
return {
"request_body_schema": REQUEST_BODY_SCHEMAS["CREATEAUTHPROVIDER"],
"instructions": (
"Use the request_body_schema to construct a valid JSON object. "
"Once you have populated the object following the schema "
"structure and requirements, call this tool again with "
"mode='execute' and the stringified JSON as the "
"request_body parameter. "
"Do NOT call the schema mode again - you already have "
"the schema now."
),
}
# Mode is EXECUTE - validate parameters
# Validate request body is provided (not None or empty string)
# Note: Empty objects like {} are allowed - schema validation will check if valid
if request_body is None or request_body.strip() == "":
raise RetryableToolError(
message="Request body is required when mode is 'execute'",
developer_message="The request_body parameter was null or empty string",
additional_prompt_content=(
"The request body is required to perform this operation. "
"Use the schema below to construct a valid JSON object, "
"then call this tool again in execute mode with the "
"stringified JSON as the request_body parameter.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["CREATEAUTHPROVIDER"] + "\n```"
),
)
# Parse JSON
try:
request_data = json.loads(request_body)
except json.JSONDecodeError as e:
raise RetryableToolError(
message=f"Invalid JSON in request body: {e!s}",
developer_message=f"JSON parsing failed: {e!s}",
additional_prompt_content=(
f"The request body contains invalid JSON. Error: {e!s}\n\n"
"Please provide a valid JSON string that matches the schema "
"below, then call this tool again in execute mode.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["CREATEAUTHPROVIDER"] + "\n```"
),
) from e
response = await make_request_with_schema_validation(
url="https://api.arcade.dev/v1/admin/auth_providers",
method="POST",
request_data=request_data,
schema=json.loads(REQUEST_BODY_SCHEMAS["CREATEAUTHPROVIDER"]),
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def get_auth_provider_details(
context: ToolContext,
@ -338,121 +245,6 @@ async def delete_auth_provider(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def update_auth_provider(
context: ToolContext,
mode: Annotated[
ToolMode,
"Operation mode: 'get_request_schema' returns the OpenAPI spec "
"for the request body, 'execute' performs the actual operation",
],
request_body: Annotated[
str | None,
"Stringified JSON representing the request body. Required when "
"mode is 'execute', ignored when mode is 'get_request_schema'",
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'auth-providers-update'."]:
"""Update an existing authentication provider.
Use this tool to patch details of an existing authentication provider by providing its ID. This is useful when changes are needed in the authentication configuration.
Note: Understanding the request schema is necessary to properly create
the stringified JSON input object for execution.
Modes:
- GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't
already have it. Do NOT call repeatedly if you already received
the schema.
- EXECUTE: Performs the operation with the provided request body
JSON.
If you need the schema, call with mode='get_request_schema' ONCE, then execute.
""" # noqa: E501
if mode == ToolMode.GET_REQUEST_SCHEMA:
return {
"request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEAUTHPROVIDER"],
"instructions": (
"Use the request_body_schema to construct a valid JSON object. "
"Once you have populated the object following the schema "
"structure and requirements, call this tool again with "
"mode='execute' and the stringified JSON as the "
"request_body parameter. "
"Do NOT call the schema mode again - you already have "
"the schema now."
),
}
# Mode is EXECUTE - validate parameters
# Validate request body is provided (not None or empty string)
# Note: Empty objects like {} are allowed - schema validation will check if valid
if request_body is None or request_body.strip() == "":
raise RetryableToolError(
message="Request body is required when mode is 'execute'",
developer_message="The request_body parameter was null or empty string",
additional_prompt_content=(
"The request body is required to perform this operation. "
"Use the schema below to construct a valid JSON object, "
"then call this tool again in execute mode with the "
"stringified JSON as the request_body parameter.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["UPDATEAUTHPROVIDER"] + "\n```"
),
)
# Parse JSON
try:
request_data = json.loads(request_body)
except json.JSONDecodeError as e:
raise RetryableToolError(
message=f"Invalid JSON in request body: {e!s}",
developer_message=f"JSON parsing failed: {e!s}",
additional_prompt_content=(
f"The request body contains invalid JSON. Error: {e!s}\n\n"
"Please provide a valid JSON string that matches the schema "
"below, then call this tool again in execute mode.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["UPDATEAUTHPROVIDER"] + "\n```"
),
) from e
response = await make_request_with_schema_validation(
url="https://api.arcade.dev/v1/admin/auth_providers/{id}",
method="PATCH",
request_data=request_data,
schema=json.loads(REQUEST_BODY_SCHEMAS["UPDATEAUTHPROVIDER"]),
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def list_visible_secrets(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'secrets-list'."]:
"""Retrieve all secrets visible to the caller.
This tool fetches a list of all secrets that the caller has access to. It should be used when there is a need to view available secrets within the user's administrative scope.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/admin/secrets",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def delete_secret_by_id(
context: ToolContext,
@ -476,67 +268,6 @@ async def delete_secret_by_id(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def manage_secret(
context: ToolContext,
secret_key: Annotated[
str,
"The key of the secret to be created or updated in the storage system. It should be a unique identifier for the secret.", # noqa: E501
],
secret_value: Annotated[
str,
"The new or updated value of the secret to be stored. It should be a string containing the secret information.", # noqa: E501
],
secret_description: Annotated[
str | None,
"A description of the secret. Provide details about the secret's purpose or context.",
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'secrets-upsert'."]:
"""Create or update a stored secret key-value pair.
Use this tool to create a new secret or update an existing secret in the storage system. It should be called when secret management tasks are needed, such as adding new credentials or modifying existing ones.""" # noqa: E501
request_data = remove_none_values({"description": secret_description, "value": secret_value})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/admin/secrets/{secret_key}".format(secret_key=secret_key), # noqa: UP032
method="POST",
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def get_session_verification_settings(
context: ToolContext,
) -> Annotated[
dict[str, Any], "Response from the API endpoint 'session-verification-settings-get'."
]:
"""Retrieve current session verification settings.
Use this tool to obtain the latest session verification settings for your account or application. It's helpful for understanding the security measures currently in place for session verification.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/admin/settings/session_verification",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def update_session_verification_settings(
context: ToolContext,
@ -638,96 +369,6 @@ async def delete_user_auth_connection(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def start_authorization_process(
context: ToolContext,
user_id: Annotated[
str, "Unique identifier for the user. Required to start the authorization process."
],
authorization_provider_id: Annotated[
str | None, "The provider ID for authorization. One of ID or ProviderID must be set."
] = None,
authorization_provider_type: Annotated[
str | None,
"Specifies the type of authorization provider to be used, such as 'OAuth2', 'SAML', etc.",
] = None,
authorization_requirement_id: Annotated[
str | None,
"Set this ID for initiating authorization. Either this ID or the provider ID must be set.",
] = None,
oauth2_scopes: Annotated[
list[str] | None,
"A list of OAuth2 scopes that specify the level of access required for the authorization. Each scope should be provided as a string.", # noqa: E501
] = None,
redirection_uri_after_authorization: Annotated[
str | None,
"Optional URI to redirect the user after authorization. If provided, the user will be redirected to this specific address once the authorization process is complete.", # noqa: E501
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'initiate-authorization'."]:
"""Starts the authorization process for given requirements.
Use this tool to initiate the authorization process based on specified requirements. Ideal for cases where user authentication needs to be initiated or validated.""" # noqa: E501
request_data = remove_none_values({
"auth_requirement": {
"id": authorization_requirement_id,
"oauth2": {"scopes": oauth2_scopes},
"provider_id": authorization_provider_id,
"provider_type": authorization_provider_type,
},
"next_uri": redirection_uri_after_authorization,
"user_id": user_id,
})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/auth/authorize",
method="POST",
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def confirm_user_authentication(
context: ToolContext,
authorization_flow_id: Annotated[
str, "A unique identifier for the authorization flow to confirm the user's details."
],
user_identifier: Annotated[
str, "The unique identifier for the user to be confirmed during authentication."
],
) -> Annotated[dict[str, Any], "Response from the API endpoint 'confirm-user-auth-flow'."]:
"""Confirms a user's details during an authorization flow.
Use this tool to confirm a user's details as part of an authorization flow. It should be called when there's a need to verify user details during authentication processes.""" # noqa: E501
request_data = remove_none_values({
"flow_id": authorization_flow_id,
"user_id": user_identifier,
})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/auth/confirm_user",
method="POST",
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def check_auth_status(
context: ToolContext,
@ -756,121 +397,6 @@ async def check_auth_status(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def openai_chat_interaction(
context: ToolContext,
mode: Annotated[
ToolMode,
"Operation mode: 'get_request_schema' returns the OpenAPI spec "
"for the request body, 'execute' performs the actual operation",
],
request_body: Annotated[
str | None,
"Stringified JSON representing the request body. Required when "
"mode is 'execute', ignored when mode is 'get_request_schema'",
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'llm-chat'."]:
"""Engage with language models using OpenAI's chat API.
Use this tool to interact with language models via OpenAI's chat completions API, suitable for generating conversation responses.
Note: Understanding the request schema is necessary to properly create
the stringified JSON input object for execution.
Modes:
- GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't
already have it. Do NOT call repeatedly if you already received
the schema.
- EXECUTE: Performs the operation with the provided request body
JSON.
If you need the schema, call with mode='get_request_schema' ONCE, then execute.
""" # noqa: E501
if mode == ToolMode.GET_REQUEST_SCHEMA:
return {
"request_body_schema": REQUEST_BODY_SCHEMAS["OPENAICHATINTERACTION"],
"instructions": (
"Use the request_body_schema to construct a valid JSON object. "
"Once you have populated the object following the schema "
"structure and requirements, call this tool again with "
"mode='execute' and the stringified JSON as the "
"request_body parameter. "
"Do NOT call the schema mode again - you already have "
"the schema now."
),
}
# Mode is EXECUTE - validate parameters
# Validate request body is provided (not None or empty string)
# Note: Empty objects like {} are allowed - schema validation will check if valid
if request_body is None or request_body.strip() == "":
raise RetryableToolError(
message="Request body is required when mode is 'execute'",
developer_message="The request_body parameter was null or empty string",
additional_prompt_content=(
"The request body is required to perform this operation. "
"Use the schema below to construct a valid JSON object, "
"then call this tool again in execute mode with the "
"stringified JSON as the request_body parameter.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["OPENAICHATINTERACTION"] + "\n```"
),
)
# Parse JSON
try:
request_data = json.loads(request_body)
except json.JSONDecodeError as e:
raise RetryableToolError(
message=f"Invalid JSON in request body: {e!s}",
developer_message=f"JSON parsing failed: {e!s}",
additional_prompt_content=(
f"The request body contains invalid JSON. Error: {e!s}\n\n"
"Please provide a valid JSON string that matches the schema "
"below, then call this tool again in execute mode.\n\n"
"Schema:\n\n```json\n" + REQUEST_BODY_SCHEMAS["OPENAICHATINTERACTION"] + "\n```"
),
) from e
response = await make_request_with_schema_validation(
url="https://api.arcade.dev/v1/chat/completions",
method="POST",
request_data=request_data,
schema=json.loads(REQUEST_BODY_SCHEMAS["OPENAICHATINTERACTION"]),
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def get_engine_configuration(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'engine-config'."]:
"""Fetch the current engine configuration settings.
This tool retrieves the current configuration settings for the engine. It should be called when users need to access detailed information about the engine's setup or settings.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/config",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def retrieve_formatted_tools_list(
context: ToolContext,
@ -947,7 +473,7 @@ async def get_formatted_tool_specification(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
@tool()
async def check_arcade_engine_health(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'arcade-health'."]:
@ -960,51 +486,7 @@ async def check_arcade_engine_health(
url="https://api.arcade.dev/v1/health",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def get_model_context_protocol(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'mcp-endpoint'."]:
"""Fetch data from the Model Context Protocol endpoint.
This tool calls the Model Context Protocol (MCP) endpoint using a Streamable HTTP transport method. It should be used to retrieve information related to the MCP from the specified endpoint.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/mcp",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def model_context_protocol_stream(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'mcp-endpoint'."]:
"""Access the Model Context Protocol for streaming data.
This tool interacts with the Model Context Protocol endpoint using a streamable HTTP transport, allowing for real-time data communication. It's useful for scenarios where ongoing data exchange is necessary.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/mcp",
method="POST",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
headers=remove_none_values({}),
content=content,
)
try:
@ -1151,20 +633,22 @@ async def get_scheduled_tool_details(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def get_swagger_specification(
@tool()
async def get_openapi_specification(
context: ToolContext,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'swagger'."]:
"""Retrieve the Swagger JSON specification for the API.
) -> Annotated[
dict[str, Any], "Response from the API endpoint 'openapi' (returns OpenAPI 3.0 specification)."
]:
"""Get the OpenAPI 3.0 specification in JSON format.
Use this tool to access the Swagger JSON specification, which provides detailed information about the API's available endpoints and their usage.""" # noqa: E501
Use this tool to retrieve the OpenAPI 3.0 specification for the Arcade Engine API, which provides detailed information about all available endpoints and their usage.""" # noqa: E501
request_data = remove_none_values({})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/swagger",
url="https://api.arcade.dev/v1/openapi",
method="GET",
params=remove_none_values({}),
headers=remove_none_values({"Authorization": context.get_secret("ARCADE_API_KEY")}),
headers=remove_none_values({}),
content=content,
)
try:
@ -1583,68 +1067,6 @@ async def delete_worker(
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def update_worker_details(
context: ToolContext,
worker_id: Annotated[str, "Unique identifier for the worker to be updated."],
enable_worker: Annotated[
bool | None, "Set to 'true' to enable the worker or 'false' to disable it."
] = None,
http_retry_attempts: Annotated[
int | None, "Specify the number of retry attempts for HTTP requests."
] = None,
http_timeout_duration: Annotated[
int | None,
"The duration in seconds for the HTTP request timeout for updating a worker. Use an integer to specify the time limit.", # noqa: E501
] = None,
http_webhook_secret: Annotated[
str | None,
"The secret key for authenticating HTTP webhook requests. It should be a secure string shared between sender and receiver.", # noqa: E501
] = None,
mcp_retry_attempts: Annotated[
int | None, "Set the number of retry attempts for the MCP connection during update."
] = None,
mcp_timeout_duration: Annotated[
int | None, "Set the MCP request timeout duration in seconds. Expect an integer value."
] = None,
mcp_uri: Annotated[
str | None,
"The URI for the MCP (Message Control Protocol) endpoint to interact with the worker's messaging system.", # noqa: E501
] = None,
worker_http_uri: Annotated[
str | None, "The HTTP URI for the worker's endpoint. Provide a valid URI string."
] = None,
) -> Annotated[dict[str, Any], "Response from the API endpoint 'workers-update'."]:
"""Update or modify details of a specific worker.
Use this tool to update the information of a worker by specifying their unique ID. Ideal for scenarios where worker data needs modification or correction.""" # noqa: E501
request_data = remove_none_values({
"enabled": enable_worker,
"http": {
"retry": http_retry_attempts,
"secret": http_webhook_secret,
"timeout": http_timeout_duration,
"uri": worker_http_uri,
},
"mcp": {"retry": mcp_retry_attempts, "timeout": mcp_timeout_duration, "uri": mcp_uri},
})
content = json.dumps(request_data) if request_data else None
response = await make_request(
url="https://api.arcade.dev/v1/workers/{id}".format(id=worker_id), # noqa: UP032
method="PATCH",
params=remove_none_values({}),
headers=remove_none_values({
"Content-Type": "application/json",
"Authorization": context.get_secret("ARCADE_API_KEY"),
}),
content=content,
)
try:
return {"response_json": response.json()}
except Exception:
return {"response_text": response.text}
@tool(requires_secrets=["ARCADE_API_KEY"])
async def authorize_worker(
context: ToolContext,

View file

@ -10,8 +10,5 @@ BE OVERWRITTEN BY THE TRANSPILER.
from typing import Any
REQUEST_BODY_SCHEMAS: dict[str, Any] = {
"CREATEAUTHPROVIDER": '{"required": ["id"], "type": "object", "properties": {"description": {"maxLength": 1000, "type": "string"}, "external_id": {"maxLength": 50, "type": "string", "description": "The unique external ID for the auth provider"}, "id": {"maxLength": 100, "type": "string"}, "oauth2": {"required": ["client_id"], "type": "object", "properties": {"authorize_request": {"required": ["endpoint"], "type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "client_id": {"maxLength": 1000, "type": "string"}, "client_secret": {"maxLength": 1000, "type": "string"}, "pkce": {"type": "object", "properties": {"code_challenge_method": {"type": "string"}, "enabled": {"type": "boolean"}}}, "refresh_request": {"required": ["endpoint"], "type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "scope_delimiter": {"type": "string", "enum": [",", " "]}, "token_introspection_request": {"required": ["endpoint", "triggers"], "type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}, "triggers": {"type": "object", "properties": {"on_token_grant": {"type": "boolean"}, "on_token_refresh": {"type": "boolean"}}}}}, "token_request": {"required": ["endpoint"], "type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "user_info_request": {"required": ["endpoint", "triggers"], "type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}, "triggers": {"type": "object", "properties": {"on_token_grant": {"type": "boolean"}, "on_token_refresh": {"type": "boolean"}}}}}}}, "provider_id": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}}', # noqa: E501
"UPDATEAUTHPROVIDER": '{"type": "object", "properties": {"description": {"maxLength": 1000, "type": "string"}, "id": {"maxLength": 100, "type": "string"}, "oauth2": {"type": "object", "properties": {"authorize_request": {"type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "client_id": {"maxLength": 1000, "type": "string"}, "client_secret": {"maxLength": 1000, "type": "string"}, "pkce": {"type": "object", "properties": {"code_challenge_method": {"type": "string"}, "enabled": {"type": "boolean"}}}, "refresh_request": {"type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "scope_delimiter": {"type": "string", "enum": [",", " "]}, "token_request": {"type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}}}, "user_info_request": {"type": "object", "properties": {"auth_method": {"type": "string"}, "endpoint": {"maxLength": 1000, "type": "string"}, "method": {"type": "string"}, "params": {"type": "object", "additionalProperties": {"type": "string"}}, "request_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_content_type": {"type": "string", "enum": ["application/x-www-form-urlencoded", "application/json"]}, "response_map": {"type": "object", "additionalProperties": {"type": "string"}}, "triggers": {"type": "object", "properties": {"on_token_grant": {"type": "boolean"}, "on_token_refresh": {"type": "boolean"}}}}}}}, "provider_id": {"type": "string"}, "status": {"type": "string"}, "type": {"type": "string"}}}', # noqa: E501
"OPENAICHATINTERACTION": '{"type": "object", "properties": {"frequency_penalty": {"type": "number"}, "logit_bias": {"type": "object", "additionalProperties": {"type": "integer"}, "description": "LogitBias is must be a token id string (specified by their token ID in the tokenizer), not a word string.\nincorrect: `"logit_bias":{"You": 6}`, correct: `"logit_bias":{"1639": 6}`\nrefs: https://platform.openai.com/docs/api-reference/chat/create#chat/create-logit_bias"}, "logprobs": {"type": "boolean", "description": "LogProbs indicates whether to return log probabilities of the output tokens or not.\nIf true, returns the log probabilities of each output token returned in the content of message.\nThis option is currently not available on the gpt-4-vision-preview model."}, "max_tokens": {"type": "integer"}, "messages": {"type": "array", "items": {"required": ["content", "role"], "type": "object", "properties": {"content": {"type": "string", "description": "The content of the message."}, "name": {"type": "string", "description": "tool Name"}, "role": {"type": "string", "description": "The role of the author of this message. One of system, user, tool, or assistant."}, "tool_call_id": {"type": "string", "description": "tool_call_id"}, "tool_calls": {"type": "array", "description": "tool calls if any", "items": {"type": "object", "properties": {"function": {"type": "object", "properties": {"arguments": {"type": "string"}, "name": {"type": "string"}}}, "id": {"type": "string"}, "type": {"type": "string", "enum": ["function"], "x-enum-varnames": ["ToolTypeFunction"]}}}}}}}, "model": {"type": "string"}, "n": {"type": "integer"}, "parallel_tool_calls": {"type": "boolean", "description": "Disable the default behavior of parallel tool calls by setting it: false."}, "presence_penalty": {"type": "number"}, "response_format": {"type": "object", "properties": {"type": {"type": "string", "enum": ["json_object", "text"], "x-enum-varnames": ["ResponseFormatJSON", "ResponseFormatText"]}}}, "seed": {"type": "integer"}, "stop": {"type": "array", "items": {"type": "string"}}, "stream": {"type": "boolean"}, "stream_options": {"type": "object", "description": "Options for streaming response. Only set this when you set stream: true.", "allOf": [{"type": "object", "properties": {"include_usage": {"type": "boolean", "description": "If set, an additional chunk will be streamed before the data: [DONE] message.\nThe usage field on this chunk shows the token usage statistics for the entire request,\nand the choices field will always be an empty array.\nAll other chunks will also include a usage field, but with a null value."}}}]}, "temperature": {"type": "number"}, "tool_choice": {"type": "object", "description": "This can be either a string or an ToolChoice object."}, "tools": {"type": "object"}, "top_logprobs": {"type": "integer", "description": "TopLogProbs is an integer between 0 and 5 specifying the number of most likely tokens to return at each\ntoken position, each with an associated log probability.\nlogprobs must be set to true if this parameter is used."}, "top_p": {"type": "number"}, "user": {"type": "string"}}}', # noqa: E501
"EXECUTETOOL": '{"required": ["tool_name"], "type": "object", "properties": {"include_error_stacktrace": {"type": "boolean", "description": "Whether to include the error stacktrace in the response. If not provided, the error stacktrace is not included."}, "input": {"type": "object", "description": "JSON input to the tool, if any", "allOf": [{"type": "object", "additionalProperties": true}]}, "run_at": {"type": "string", "description": "The time at which the tool should be run (optional). If not provided, the tool is run immediately. Format ISO 8601: YYYY-MM-DDTHH:MM:SS"}, "tool_name": {"type": "string"}, "tool_version": {"type": "string", "description": "The tool version to use (optional). If not provided, any version is used"}, "user_id": {"type": "string"}}}', # noqa: E501
}

View file

@ -28,11 +28,7 @@
},
"requirements": {
"authorization": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"secrets": [],
"metadata": null
},
"deprecation_message": null,
@ -52,16 +48,7 @@
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"secrets": [],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false

View file

@ -1,137 +0,0 @@
{
"name": "ConfirmUserAuthentication",
"fully_qualified_name": "EngineApi.ConfirmUserAuthentication@0.1.0",
"description": "Confirms a user's details during an authorization flow.\n\nUse this tool to confirm a user's details as part of an authorization flow. It should be called when there's a need to verify user details during authentication processes.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": [
{
"name": "authorization_flow_id",
"required": true,
"description": "A unique identifier for the authorization flow to confirm the user's details.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "flow_id"
},
{
"name": "user_identifier",
"required": true,
"description": "The unique identifier for the user to be confirmed during authentication.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "user_id"
}
]
},
"output": {
"description": "Response from the API endpoint 'confirm-user-auth-flow'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/auth/confirm_user",
"http_method": "POST",
"headers": {},
"parameters": [
{
"name": "flow_id",
"tool_parameter_name": "authorization_flow_id",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "user_id",
"tool_parameter_name": "user_identifier",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
}
],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": "{\n \"description\": \"User confirmation request\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"required\": [\n \"flow_id\",\n \"user_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"flow_id\": {\n \"type\": \"string\"\n },\n \"user_id\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"required\": true\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,69 +0,0 @@
{
"name": "GetEngineConfiguration",
"fully_qualified_name": "EngineApi.GetEngineConfiguration@0.1.0",
"description": "Fetch the current engine configuration settings.\n\nThis tool retrieves the current configuration settings for the engine. It should be called when users need to access detailed information about the engine's setup or settings.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'engine-config'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/config",
"http_method": "GET",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,69 +0,0 @@
{
"name": "GetModelContextProtocol",
"fully_qualified_name": "EngineApi.GetModelContextProtocol@0.1.0",
"description": "Fetch data from the Model Context Protocol endpoint.\n\nThis tool calls the Model Context Protocol (MCP) endpoint using a Streamable HTTP transport method. It should be used to retrieve information related to the MCP from the specified endpoint.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'mcp-endpoint'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/mcp",
"http_method": "GET",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,7 +1,7 @@
{
"name": "GetSwaggerSpecification",
"fully_qualified_name": "EngineApi.GetSwaggerSpecification@0.1.0",
"description": "Retrieve the Swagger JSON specification for the API.\n\nUse this tool to access the Swagger JSON specification, which provides detailed information about the API's available endpoints and their usage.",
"name": "GetOpenAPISpecification",
"fully_qualified_name": "EngineApi.GetOpenAPISpecification@0.1.0",
"description": "Get the OpenAPI 3.0 specification in JSON format.\n\nUse this tool to retrieve the OpenAPI 3.0 specification for the Arcade Engine API, which provides detailed information about all available endpoints and their usage.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
@ -11,12 +11,8 @@
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'swagger'.",
"available_modes": [
"value",
"error",
"null"
],
"description": "Response from the API endpoint 'openapi' (returns OpenAPI 3.0 specification).",
"available_modes": ["value", "error", "null"],
"value_schema": {
"val_type": "json",
"inner_val_type": null,
@ -28,11 +24,7 @@
},
"requirements": {
"authorization": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"secrets": [],
"metadata": null
},
"deprecation_message": null,
@ -47,21 +39,12 @@
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/swagger",
"url": "https://api.arcade.dev/v1/openapi",
"http_method": "GET",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"secrets": [],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false

View file

@ -1,69 +0,0 @@
{
"name": "GetSessionVerificationSettings",
"fully_qualified_name": "EngineApi.GetSessionVerificationSettings@0.1.0",
"description": "Retrieve current session verification settings.\n\nUse this tool to obtain the latest session verification settings for your account or application. It's helpful for understanding the security measures currently in place for session verification.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'session-verification-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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/admin/settings/session_verification",
"http_method": "GET",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,69 +0,0 @@
{
"name": "ListVisibleSecrets",
"fully_qualified_name": "EngineApi.ListVisibleSecrets@0.1.0",
"description": "Retrieve all secrets visible to the caller.\n\nThis tool fetches a list of all secrets that the caller has access to. It should be used when there is a need to view available secrets within the user's administrative scope.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'secrets-list'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/admin/secrets",
"http_method": "GET",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,170 +0,0 @@
{
"name": "ManageSecret",
"fully_qualified_name": "EngineApi.ManageSecret@0.1.0",
"description": "Create or update a stored secret key-value pair.\n\nUse this tool to create a new secret or update an existing secret in the storage system. It should be called when secret management tasks are needed, such as adding new credentials or modifying existing ones.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": [
{
"name": "secret_key",
"required": true,
"description": "The key of the secret to be created or updated in the storage system. It should be a unique identifier for the secret.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The key of the secret to upsert"
},
"inferrable": true,
"http_endpoint_parameter_name": "secret_key"
},
{
"name": "secret_value",
"required": true,
"description": "The new or updated value of the secret to be stored. It should be a string containing the secret information.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "value"
},
{
"name": "secret_description",
"required": false,
"description": "A description of the secret. Provide details about the secret's purpose or context.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "description"
}
]
},
"output": {
"description": "Response from the API endpoint 'secrets-upsert'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/admin/secrets/{secret_key}",
"http_method": "POST",
"headers": {},
"parameters": [
{
"name": "secret_key",
"tool_parameter_name": "secret_key",
"description": "The key of the secret to upsert",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The key of the secret to upsert"
},
"accepted_as": "path",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "description",
"tool_parameter_name": "secret_description",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "value",
"tool_parameter_name": "secret_value",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
}
],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": "{\n \"description\": \"The secret to upsert\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"required\": [\n \"value\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"maxLength\": 1000,\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"required\": true\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,69 +0,0 @@
{
"name": "ModelContextProtocolStream",
"fully_qualified_name": "EngineApi.ModelContextProtocolStream@0.1.0",
"description": "Access the Model Context Protocol for streaming data.\n\nThis tool interacts with the Model Context Protocol endpoint using a streamable HTTP transport, allowing for real-time data communication. It's useful for scenarios where ongoing data exchange is necessary.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": []
},
"output": {
"description": "Response from the API endpoint 'mcp-endpoint'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/mcp",
"http_method": "POST",
"headers": {},
"parameters": [],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -1,269 +0,0 @@
{
"name": "StartAuthorizationProcess",
"fully_qualified_name": "EngineApi.StartAuthorizationProcess@0.1.0",
"description": "Starts the authorization process for given requirements.\n\nUse this tool to initiate the authorization process based on specified requirements. Ideal for cases where user authentication needs to be initiated or validated.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": [
{
"name": "user_id",
"required": true,
"description": "Unique identifier for the user. Required to start the authorization process.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "user_id"
},
{
"name": "authorization_requirement_id",
"required": false,
"description": "Set this ID for initiating authorization. Either this ID or the provider ID must be set.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "one of ID or ProviderID must be set"
},
"inferrable": true,
"http_endpoint_parameter_name": "auth_requirement.id"
},
{
"name": "oauth2_scopes",
"required": false,
"description": "A list of OAuth2 scopes that specify the level of access required for the authorization. Each scope should be provided as a string.",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "auth_requirement.oauth2.scopes"
},
{
"name": "authorization_provider_id",
"required": false,
"description": "The provider ID for authorization. One of ID or ProviderID must be set.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "one of ID or ProviderID must be set"
},
"inferrable": true,
"http_endpoint_parameter_name": "auth_requirement.provider_id"
},
{
"name": "authorization_provider_type",
"required": false,
"description": "Specifies the type of authorization provider to be used, such as 'OAuth2', 'SAML', etc.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "auth_requirement.provider_type"
},
{
"name": "redirection_uri_after_authorization",
"required": false,
"description": "Optional URI to redirect the user after authorization. If provided, the user will be redirected to this specific address once the authorization process is complete.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Optional: if provided, the user will be redirected to this URI after authorization"
},
"inferrable": true,
"http_endpoint_parameter_name": "next_uri"
}
]
},
"output": {
"description": "Response from the API endpoint 'initiate-authorization'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/auth/authorize",
"http_method": "POST",
"headers": {},
"parameters": [
{
"name": "auth_requirement.id",
"tool_parameter_name": "authorization_requirement_id",
"description": "one of ID or ProviderID must be set",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "one of ID or ProviderID must be set"
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "auth_requirement.oauth2.scopes",
"tool_parameter_name": "oauth2_scopes",
"description": "",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "auth_requirement.provider_id",
"tool_parameter_name": "authorization_provider_id",
"description": "one of ID or ProviderID must be set",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "one of ID or ProviderID must be set"
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "auth_requirement.provider_type",
"tool_parameter_name": "authorization_provider_type",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "next_uri",
"tool_parameter_name": "redirection_uri_after_authorization",
"description": "Optional: if provided, the user will be redirected to this URI after authorization",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Optional: if provided, the user will be redirected to this URI after authorization"
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "user_id",
"tool_parameter_name": "user_id",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
}
],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": "{\n \"description\": \"Authorization request\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"required\": [\n \"auth_requirement\",\n \"user_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"auth_requirement\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"one of ID or ProviderID must be set\"\n },\n \"oauth2\": {\n \"type\": \"object\",\n \"properties\": {\n \"scopes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"provider_id\": {\n \"type\": \"string\",\n \"description\": \"one of ID or ProviderID must be set\"\n },\n \"provider_type\": {\n \"type\": \"string\"\n }\n }\n },\n \"next_uri\": {\n \"type\": \"string\",\n \"description\": \"Optional: if provided, the user will be redirected to this URI after authorization\"\n },\n \"user_id\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"required\": true\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,368 +0,0 @@
{
"name": "UpdateWorkerDetails",
"fully_qualified_name": "EngineApi.UpdateWorkerDetails@0.1.0",
"description": "Update or modify details of a specific worker.\n\nUse this tool to update the information of a worker by specifying their unique ID. Ideal for scenarios where worker data needs modification or correction.",
"toolkit": {
"name": "ArcadeEngineApi",
"description": null,
"version": "0.1.0"
},
"input": {
"parameters": [
{
"name": "worker_id",
"required": true,
"description": "Unique identifier for the worker to be updated.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Worker ID"
},
"inferrable": true,
"http_endpoint_parameter_name": "id"
},
{
"name": "http_retry_attempts",
"required": false,
"description": "Specify the number of retry attempts for HTTP requests.",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "http.retry"
},
{
"name": "http_webhook_secret",
"required": false,
"description": "The secret key for authenticating HTTP webhook requests. It should be a secure string shared between sender and receiver.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "http.secret"
},
{
"name": "http_timeout_duration",
"required": false,
"description": "The duration in seconds for the HTTP request timeout for updating a worker. Use an integer to specify the time limit.",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "http.timeout"
},
{
"name": "worker_http_uri",
"required": false,
"description": "The HTTP URI for the worker's endpoint. Provide a valid URI string.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "http.uri"
},
{
"name": "mcp_retry_attempts",
"required": false,
"description": "Set the number of retry attempts for the MCP connection during update.",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "mcp.retry"
},
{
"name": "mcp_timeout_duration",
"required": false,
"description": "Set the MCP request timeout duration in seconds. Expect an integer value.",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "mcp.timeout"
},
{
"name": "mcp_uri",
"required": false,
"description": "The URI for the MCP (Message Control Protocol) endpoint to interact with the worker's messaging system.",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "mcp.uri"
},
{
"name": "enable_worker",
"required": false,
"description": "Set to 'true' to enable the worker or 'false' to disable it.",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"inferrable": true,
"http_endpoint_parameter_name": "enabled"
}
]
},
"output": {
"description": "Response from the API endpoint 'workers-update'.",
"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": null,
"secrets": [
{
"key": "ARCADE_API_KEY"
}
],
"metadata": null
},
"deprecation_message": null,
"metadata": {
"object_type": "api_wrapper_tool",
"version": "1.1.0",
"description": "Tools that enable LLMs to interact directly with the engine API."
},
"http_endpoint": {
"metadata": {
"object_type": "http_endpoint",
"version": "1.2.0",
"description": ""
},
"url": "https://api.arcade.dev/v1/workers/{id}",
"http_method": "PATCH",
"headers": {},
"parameters": [
{
"name": "id",
"tool_parameter_name": "worker_id",
"description": "Worker ID",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Worker ID"
},
"accepted_as": "path",
"required": true,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "enabled",
"tool_parameter_name": "enable_worker",
"description": "",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "http.retry",
"tool_parameter_name": "http_retry_attempts",
"description": "",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "http.secret",
"tool_parameter_name": "http_webhook_secret",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "http.timeout",
"tool_parameter_name": "http_timeout_duration",
"description": "",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "http.uri",
"tool_parameter_name": "worker_http_uri",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "mcp.retry",
"tool_parameter_name": "mcp_retry_attempts",
"description": "",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "mcp.timeout",
"tool_parameter_name": "mcp_timeout_duration",
"description": "",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
},
{
"name": "mcp.uri",
"tool_parameter_name": "mcp_uri",
"description": "",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"accepted_as": "body",
"required": false,
"deprecated": false,
"default": null,
"documentation_urls": []
}
],
"documentation_urls": [],
"secrets": [
{
"arcade_key": "ARCADE_API_KEY",
"parameter_name": "Authorization",
"accepted_as": "header",
"formatted_value": null,
"description": "",
"is_auth_token": false
}
],
"request_body_spec": "{\n \"description\": \"Worker configuration to update\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"http\": {\n \"type\": \"object\",\n \"properties\": {\n \"retry\": {\n \"maximum\": 10,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"secret\": {\n \"maxLength\": 100,\n \"type\": \"string\"\n },\n \"timeout\": {\n \"maximum\": 4000,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"uri\": {\n \"maxLength\": 100,\n \"type\": \"string\"\n }\n }\n },\n \"mcp\": {\n \"type\": \"object\",\n \"properties\": {\n \"retry\": {\n \"maximum\": 10,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"maximum\": 4000,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"uri\": {\n \"maxLength\": 100,\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false
}
}

View file

@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "arcade_arcade_engine_api"
version = "0.2.0"
version = "1.0.0"
description = "Tools that enable LLMs to interact directly with the engine API."
requires-python = ">=3.10"
dependencies = [