Sitelet https://github.com/hostinger/api-mcp-server/issues/72
Skip to content

DNS_deleteDNSRecordsV1 can't delete anything: filters is not exposed and DELETE params are sent as query string (API requires a JSON body) #72

Open

Description

@agroman1993

Summary

DNS_deleteDNSRecordsV1 always fails with HTTP 422. There is no way to tell the tool which record to delete, and even if there were, the parameter would not reach the API in the right place.

Tested with @hostinger/mcp 1.63.3 (latest) and with the hosted connector at mcp.hostinger.com (same behavior).

Steps to reproduce

  1. Have a domain with at least one record, e.g. an A record named gw.
  2. Call DNS_deleteDNSRecordsV1 with { "domain": "example.com" } (the only parameter the schema allows).
  3. The API answers 422. Passing an extra filters argument also fails (it is not in the schema, and it would be sent as query string anyway).

Root cause (two parts)

  1. Schema: in src/core/tools/all.js (and dns.js), the inputSchema of DNS_deleteDNSRecordsV1 only declares domain. The request body defined by the API is not included.
  2. Transport: in src/core/runtime.js, executeApiCall does:
    if (["GET", "DELETE"].includes(method)) {
      config.params = { ...(config.params || {}), ...requestParams }; // query string
    }
    so any non-path parameter of a DELETE goes to the

Activity

  1. stjepandumancic-design commented on Oct 29, 2026

    @stjepandumancic-design

    Confirmed on the hosted OAuth MCP server (https://mcp.hostinger.com) on 2026-10-29, using Codex CLI. This also affects the current search/execute operation interface.

    • search returns operation dns_records_delete with an input schema containing only domain (required). No filters property is exposed.
    • dns_records_list succeeds in the same authenticated session.
    • Calling execute with operation: "dns_records_delete" and params containing both domain and explicit name/type filters returns HTTP 422: The filters field is required.
    • A subsequent read confirmed that the intended records were still present; no DNS deletion succeeded.

    Sanitized request shape (example domain only):

    {
      "operation": "dns_records_delete",
      "params": {
        "domain": "example.com",
        "filters": [
          {"name": "shop", "type": "A"},
          {"name": "shop", "type": "AAAA"}
        ]
      }
    }

    Please expose the filters array in the hosted operation schema and ensure it reaches the DNS DELETE endpoint as a JSON request body. The current failure is observable; the exact internal transport behavior of the hosted server has not been inspected in this confirmation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions