List Tools
Returns a flat, sorted list of every tool available across all providers, in provider.tool format. Use this endpoint to discover available capabilities for agent routing, prompt construction, or UI tool-pickers — without querying each provider individually.
Endpoint #
Authorization: Bearer ab_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accepts both API key and JWT authentication. No request body required.
Response #
Returns a JSON array of strings. Each string is a fully-qualified tool identifier in provider.tool format. The list is sorted alphabetically.
[
{ "name": "discord.send_message", "description": "Send a message to a Discord channel" },
{ "name": "github.create_issue", "description": "Create a new issue in a GitHub repository" },
{ "name": "github.create_pr", "description": "Open a pull request in a GitHub repository" },
{ "name": "github.get_file", "description": "Retrieve a file from a GitHub repository" },
{ "name": "github.list_repos", "description": "List repositories for the authenticated user" },
{ "name": "gmail.send_email", "description": "Send an email via Gmail" },
{ "name": "hubspot.create_contact", "description": "Create a new contact in HubSpot CRM" },
{ "name": "notion.create_page", "description": "Create a new page in a Notion database or page" },
{ "name": "slack.send_message", "description": "Send a message to a Slack channel" },
{ "name": "zoho-crm.create_contact", "description": "Create a new contact in Zoho CRM" },
// ... all tools sorted alphabetically
]
The provider.tool format is the same string you pass directly to POST /api/mcp/execute as the tool field — no separate provider field needed. See Execute shorthand format.
Common Use Cases #
Agent Tool Routing #
Fetch all tools at agent startup, then pass the list to your LLM as the available tool set. The provider.tool strings are readable enough to use directly as function names for the model.
import { AgentBridge } from 'agentbridge-sdk';
const bridge = new AgentBridge(process.env.AGENTBRIDGE_API_KEY!);
// Discover all tools at startup
const tools = await bridge.getTools();
// [
// { name: "github.create_issue", description: "Create a new issue in a GitHub repository" },
// { name: "gmail.send_email", description: "Send an email via Gmail" },
// ...
// ]
// Pass to your LLM as the tool list — then execute whatever it picks
const chosen = "github.create_issue"; // name returned by LLM
const result = await bridge.execute({
tool: chosen, // "provider.tool" shorthand — no provider field needed
params: {
repo: "acme/backend",
title: "Fix memory leak",
body: "Worker grows unbounded after 24h.",
},
});
console.log(result.data); // { id: 2048319, number: 157, url: '...' }
Python #
from agentbridge import AgentBridge
client = AgentBridge(api_key="ab_live_...")
# Discover all tools
tools = client.get_tools()
# [
# {"name": "github.create_issue", "description": "Create a new issue in a GitHub repository"},
# {"name": "gmail.send_email", "description": "Send an email via Gmail"},
# ...
# ]
# Execute using shorthand format
result = client.execute(
tool="github.create_issue",
params={
"repo": "acme/backend",
"title": "Fix memory leak",
"body": "Worker grows unbounded after 24h.",
},
)
print(result["data"])
curl #
curl https://agentbridge.in/api/mcp/tools \
-H "Authorization: Bearer ab_live_xxxx"
Relation to Execute Shorthand #
Every string returned by GET /mcp/tools can be passed verbatim to POST /mcp/execute as the tool field. You do not need to split it or specify a separate provider:
{
"tool": "github.create_issue",
"params": {
"repo": "acme/backend",
"title": "Fix memory leak"
}
}
This is equivalent to the explicit form:
{
"provider": "github",
"tool": "create_issue",
"params": { "repo": "acme/backend", "title": "Fix memory leak" }
}