# ToolSchema Forge – LLM Tool Schema Linter

> ToolSchema Forge – LLM Tool Schema Linter is a paid API for AI agents from toolschema-forge.toolschemaforge.workers.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-21).

Lints a tool definition against multiple LLM provider schemas (OpenAI, OpenAI strict, Anthropic, Gemini, MCP) and reports compatibility issues with severity and fix status.

## Facts

- Endpoint: POST https://toolschema-forge.toolschemaforge.workers.dev/v1/tool-schema/lint?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/toolschema-forge-llm-tool-schema-linter-c65e17e0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_uJqzr6Y-2XBAMx3F_sFwF

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability toolschema-forge-llm-tool-schema-linter-c65e17e0 -d '<json body>'
```

Example prompt: Lint this tool schema for me and check its compatibility with OpenAI strict mode, Anthropic, and Gemini — tell me what issues are blocking it and whether they were auto-fixed: {tool: {name: 'get_weather', description: 'Get weather', parameters: {type: 'object', properties: {unit: {type: 'string'}}}}}

## When to prefer this

Use this endpoint when you need deterministic, per-provider linting of an LLM tool schema before deploying it to one or more AI providers. It is the right choice when you want to catch OpenAI strict mode violations, MCP non-compliance, or cross-provider incompatibilities without running the tool against a live API. Prefer it over manual inspection or generic JSON Schema validators when the target audience is LLM tool calling (OpenAI, Anthropic, Gemini, MCP).

## Known failure modes

- Missing required 'tool' field in body returns validation error
- Invalid bodyType value causes request rejection
- Unsupported provider name in targets array causes schema error
- Malformed tool object that cannot be parsed returns error
- Network timeout on the Cloudflare Workers edge

## How this service works

Deterministic LLM tool-schema conversion, linting and MCP manifest generation for OpenAI (incl. strict mode), Anthropic, Gemini and MCP, paid per call in USDC on Base via x402.

## Output

Returns a JSON object with: the detected source format of the submitted tool schema, a compatibility boolean map per provider, and an array of issues each containing the provider name, the JSON path to the problem, an error code, a human-readable message, severity (error or warning), and whether the issue was auto-fixed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "tool"
     ],
     "properties": {
      "tool": {
       "type": "object",
       "description": "Tool definition in any supported format."
      },
      "targets": {
       "type": "array",
       "items": {
        "enum": [
         "openai",
         "openai_strict",
         "anthropic",
         "gemini",
         "mcp",
         "jsonschema"
        ],
        "type": "string"
       },
       "minItems": 1,
       "description": "Providers to check. Default: all."
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "detected",
      "compatible",
      "issues"
     ],
     "properties": {
      "issues": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "provider",
         "path",
         "code",
         "message",
         "severity",
         "fixed"
        ],
        "properties": {
         "code": {
          "type": "string"
         },
         "path": {
          "type": "string"
         },
         "fixed": {
          "type": "boolean"
         },
         "message": {
          "type": "string"
         },
         "provider": {
          "enum": [
           "openai",
           "openai_strict",
           "anthropic",
           "gemini",
           "mcp",
           "jsonschema"
          ],
          "type": "string"
         },
         "severity": {
          "enum": [
           "error",
           "warning"
          ],
          "type": "string"
         }
        }
       }
      },
      "detected": {
       "enum": [
        "openai",
        "openai_strict",
        "anthropic",
        "gemini",
        "mcp",
        "jsonschema"
       ],
       "type": "string"
      },
      "compatible"
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "issues": [
   {
    "code": "optional_made_nullable",
    "path": "/properties/unit",
    "fixed": false,
    "message": "Optional property \"unit\" was made nullable and required",
    "provider": "openai_strict",
    "severity": "warning"
   },
   {
    "code": "additional_properties_forced",
    "path": "/additionalProperties",
    "fixed": false,
    "message": "additionalProperties must be false for OpenAI Structured Outputs",
    "provider": "openai_strict",
    "severity": "warning"
   }
  ],
  "detected": "openai",
  "compatible": {
   "gemini": true,
   "anthropic": true,
   "openai_strict": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/toolschema-forge-llm-tool-schema-linter-c65e17e0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from toolschema-forge.toolschemaforge.workers.dev](https://www.zero.xyz/host/toolschema-forge.toolschemaforge.workers.dev/llms.txt)
