A tool is the core building block of GetMCP. When an AI client wants to take an action (fetch data, create a record, send a message), it calls a tool. Each tool maps to a specific HTTP API endpoint.
Tools are defined by:
- A name and description that help the AI decide when to use the tool
- An endpoint URL and HTTP method to call
- An input schema defining what parameters the AI can pass
- Authentication credentials for the target API
- Parameter mapping that controls where arguments go in the request
When an AI client calls a tool, the request flows through this pipeline:
MCP Request (JSON-RPC tools/call)
→ StreamableHttp transport
→ JsonRpcRouter
→ ToolsCallHandler (validate args against schema)
→ ToolExecutor
→ ParameterResolver (map args → HTTP request)
→ AuthInjector (inject credentials)
→ HttpClient (call external API)
→ ResponseTransformer (API response → MCP content)
← MCP Response
| Property | Description |
|---|
| Name | Machine-readable identifier used by AI clients to call the tool (e.g., get_weather) |
| Description | Human-readable explanation; AI uses this to decide when to call the tool |
| Endpoint URL | The HTTP URL to call (supports {param} path placeholders) |
| HTTP Method | GET, POST, PUT, PATCH, or DELETE |
| Input Schema | JSON Schema defining accepted parameters |
| Auth Type | Authentication for the outbound API call |
| Parameter Mapping | Where to inject each input parameter |
| Headers | Custom HTTP headers to include in the request |
| Cache TTL | Cache response for N seconds (0 = no cache) |
| Timeout | Maximum request wait time in seconds (default: 30) |
| Retry Count | Number of retries on failure |
| Status | active or paused |
Tools use JSON Schema to define their inputs. This lets AI clients understand what parameters to pass and enables automatic validation.
Example input schema:
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city name"
},
"units": {
"type": "string",
"enum": ["metric", "imperial"],
"default": "metric",
"description": "Temperature units"
}
},
"required": ["city"]
}
Parameter Mapping
Each input parameter can be mapped to a different part of the HTTP request:
| Mapping | Description | Example |
|---|
| Path | Replaces {param} in the URL | https://api.example.com/users/{user_id} |
| Query | Appends as ?param=value | https://api.example.com/search?q=value |
| Body | Included in the JSON request body | POST/PUT requests |
| Header | Sent as a custom HTTP header | X-Custom-Header: value |
Authentication
Each tool can have its own outbound authentication, or inherit from the server’s test credentials. Supported auth types:
| Type | Description |
|---|
none | No authentication (public APIs) |
api-key | API key sent in a header, query param, or custom location |
bearer | Authorization: Bearer <token> |
basic | Base64-encoded username:password |
oauth2 | Client credentials flow with automatic token refresh |
All credentials are encrypted at rest using libsodium and decrypted only in memory during execution.
Naming Conventions
Tool names follow MCP conventions and are typically snake_case. Good examples:
get_user — fetch a user record
create_invoice — create a new invoice
search_products — search a product catalog
send_email — send an email message
Write detailed, specific descriptions. The AI uses your description to decide when and how to call the tool. Vague descriptions lead to incorrect or missed tool calls.
Use the built-in test panel to verify tool behavior before connecting AI clients:
- Click the Test button on any tool
- Enter sample argument values as a JSON object
- Click Run Test to execute against the real API
- Review the response, status code, and response time
cURL Import
Already have a working API request? Import it directly:
- Copy a
curl command from your terminal or API docs
- Click Import from cURL in the tool editor
- GetMCP parses the URL, method, headers, and body automatically
See the cURL Import guide for details.
Drag & Drop Reordering
Tools are presented to AI clients in the order defined in GetMCP. Use drag-and-drop to control which tools appear first in the tools/list response.