ToolBridge

activev0.1.0<50ms avg

Universal tool definition converter for multi-provider agents.

What it does

Convert tool definitions between OpenAI function calling, Anthropic tool use, MCP tool schema, and JSON Schema formats. Agents use ToolBridge to work across providers without manual format translation.

Try it live

POST/api/v1/toolbridge/convert
Click "Run" to see the response

Endpoints

POST
/api/v1/toolbridge/convert

Convert a tool definition between formats

POST
/api/v1/toolbridge/detect

Auto-detect the format of a tool definition

POST
/api/v1/toolbridge/batch

Convert up to 100 tool definitions at once

Request / Response Schema
Field
Type
Required
Description
data
object | array
Yes
The JSON data to process
schema
object
Response
Inferred JSON Schema
format
string
Optional
Output format (typescript, zod)

Examples

cURLbash
curl -X POST https://neverparse.com/api/v1/toolbridge/convert \
  -H &#39;Content-Type: application/json' \
  -d &#39;{"tool": {"type": "function", "function": {"name": "get_weather", "description": "Get weather", "parameters": {"type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"]}}}, "from": "openai", "to": "anthropic"}'
TypeScripttypescript
const res = await fetch(class="token-string">&#39;https:class="token-comment">//neverparse.com/api/v1/toolbridge/convert&#39;, {
  method: class="token-string">&#39;POST&#39;,
  headers: { class="token-string">&#39;Content-Type&#39;: class="token-string">&#39;application/json&#39; },
  body: JSON.stringify({
    tool: { type: class="token-string">&#39;function&#39;, function: { name: class="token-string">&#39;get_weather&#39;, description: class="token-string">&#39;Get weather&#39;, parameters: { type: class="token-string">&#39;object&#39;, properties: { location: { type: class="token-string">&#39;string&#39; } }, required: [class="token-string">&#39;location&#39;] } } },
    from: class="token-string">&#39;openai&#39;,
    to: class="token-string">&#39;anthropic&#39;
  })
});
const { result } = await res.json();
Pythonpython
import requests
res = requests.post(&class="token-comment">#39;https://neverparse.com/api/v1/toolbridge/convert&#39;,
  json={&class="token-comment">#39;toolclass="token-string">&#39;: {&#39;typeclass="token-string">&#39;: &#39;functionclass="token-string">&#39;, &#39;functionclass="token-string">&#39;: {&#39;nameclass="token-string">&#39;: &#39;get_weatherclass="token-string">&#39;, &#39;descriptionclass="token-string">&#39;: &#39;Get weatherclass="token-string">&#39;, &#39;parametersclass="token-string">&#39;: {&#39;typeclass="token-string">&#39;: &#39;objectclass="token-string">&#39;, &#39;propertiesclass="token-string">&#39;: {&#39;locationclass="token-string">&#39;: {&#39;typeclass="token-string">&#39;: &#39;stringclass="token-string">&#39;}}, &#39;requiredclass="token-string">&#39;: [&#39;locationclass="token-string">&#39;]}}}, &#39;fromclass="token-string">&#39;: &#39;openaiclass="token-string">&#39;, &#39;toclass="token-string">&#39;: &#39;anthropic&#39;})
result = res.json()[&class="token-comment">#39;result&#39;]

Get started with ToolBridge

Free tier available. No credit card required.

Documentation

Authentication

Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Rate Limits

Free
100 req/day
Pro
10,000 req/day
Enterprise
Unlimited

Error Codes

All errors return structured JSON with code, message, and details fields.

Error Responsejson
{
  "error": {
    "code": "INVALID_INPUT",
    "message": "The &#39;data&#39; field is required",
    "details": {
      "field": "data",
      "expected": "object | array"
    }
  }
}