Documentation Index
Fetch the complete documentation index at: https://noorle.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Discover all available tools from plugins, builtins, and connectors.
Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "my_plugin_greet",
"description": "Greet a person by name",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Person's name"
}
},
"required": ["name"]
}
},
{
"name": "my_plugin_add",
"description": "Add two numbers",
"inputSchema": {
"type": "object",
"properties": {
"a": {"type": "number"},
"b": {"type": "number"}
},
"required": ["a", "b"]
}
},
{
"name": "web_search_query",
"description": "Search the web",
"inputSchema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"limit": {
"type": "integer",
"default": 10
}
},
"required": ["query"]
}
}
]
}
}
Response Fields
| Field | Type | Description |
|---|
tools | array | List of available tools |
tools[].name | string | Tool identifier (unique in gateway) |
tools[].description | string | Human-readable tool description |
tools[].inputSchema | object | JSON Schema defining parameters |
Tools follow naming conventions:
- Plugin tools:
{plugin_name}_{tool_name} (underscores)
- Built-in tools:
{builtin_name}_{operation} (underscores)
- Connector tools:
{connector_name}_{operation} (underscores)
Examples:
my_plugin_greet - from “my-plugin” plugin
web_search_query - from Web Search builtin
airtable_read_records - from Airtable connector
Each tool defines parameters using JSON Schema:
{
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"default": "celsius"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": ["city"]
}
}
Supported types:
string - Text
number - Float
integer - Whole number
boolean - True/false
array - List
object - Structured data
null - Null value
Example Usage
Python
import requests
response = requests.post(
"https://mcp-{gateway-id}.noorle.com/",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
)
tools = response.json()["result"]["tools"]
for tool in tools:
print(f"{tool['name']}: {tool['description']}")
print(f" Input: {tool['inputSchema']}")
JavaScript
const response = await fetch(
"https://mcp-{gateway-id}.noorle.com/",
{
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/list",
params: {}
})
}
);
const { result } = await response.json();
const tools = result.tools;
tools.forEach(tool => {
console.log(`${tool.name}: ${tool.description}`);
});
While tools/list returns all tools, filter client-side:
# Find tools from specific plugin
plugin_tools = [t for t in tools if t["name"].startswith("my_plugin_")]
# Find search-related tools
search_tools = [t for t in tools if "search" in t["name"].lower()]
Error Cases
No Authorization
{
"error": {
"code": -32603,
"message": "Unauthorized: Invalid or missing token"
}
}
Gateway Not Found
Internal Error
{
"error": {
"code": -32603,
"message": "Failed to list tools"
}
}