{
  "topic": {
    "id": "precall-request",
    "name": "Precall: the request itself",
    "kind": "precall troubleshooting",
    "about": "When a pre-call check does not run at all, the refusal is one of two catalog errors, and the fix is in the request. The check takes the MCP server's URL and, optionally, one tool name to focus the answer on. The URL must be https — http is accepted only for a loopback address — and a URL naming a private, link-local or reserved address is not fetched. The tool name, when one is sent, must be a tool name of 200 characters or fewer. Both errors carry what to send instead, verbatim in the record below and at the error catalog.",
    "entry_points": {
      "precall": "https://www.rightshold.com/v1/security/precall",
      "errors": "https://www.rightshold.com/v1/errors",
      "spec": "https://www.rightshold.com/security/spec"
    },
    "checks": [
      "GET /v1/security/precall?url=<the MCP server's https URL> — the check itself; add &tool=<tool name> to focus the answer on one tool.",
      "GET /v1/errors/invalid_server_url and GET /v1/errors/invalid_precall — the two refusals, with their typical status and the action each names."
    ],
    "outcomes": [
      {
        "signal": "invalid_server_url (422)",
        "meaning": "The url was missing or malformed, was not https (http is accepted only for a loopback address), or named a private, link-local or reserved address, which this service does not fetch.",
        "next_step": "Send the remote MCP server's https URL (http only for a loopback address). URLs naming — or resolving to — private, link-local or reserved addresses are not fetched."
      },
      {
        "signal": "invalid_precall (422)",
        "meaning": "The request reached the check but the tool focus was not usable: a tool name must be a string of 200 characters or fewer.",
        "next_step": "Send ?url=<the MCP server's https URL> and optionally ?tool=<a tool name of 200 characters or fewer>."
      }
    ],
    "record": {
      "error_codes": [
        {
          "code": "invalid_server_url",
          "typical_status": 422,
          "retryable": false,
          "action": "Send the remote MCP server's https URL (http only for a loopback address). URLs naming — or resolving to — private, link-local or reserved addresses are not fetched."
        },
        {
          "code": "invalid_precall",
          "typical_status": 422,
          "retryable": false,
          "action": "Send ?url=<the MCP server's https URL> and optionally ?tool=<a tool name of 200 characters or fewer>."
        }
      ],
      "https_required": true,
      "tool_max_characters": 200
    },
    "record_url": "https://www.rightshold.com/diagnostics/precall-request"
  }
}