Skip to main content
Glama

Check a name across extensions

check_availability_batch

Check one name across up to 20 extensions, reusing shared evidence. Enrichment stops once availability is known, so premium can remain null. Partial failures keep the answers received plus retry guidance, without automatic retries. cachedOnly makes no provider calls. No selected-registrar fallback, fresh mode, prices or purchases.

Input Schema

NameRequiredDescriptionDefault
nameYesOne ASCII domain label without the extension, such as myproject. Price and link tools only build links from it; availability and popularity tools send the exact domain to their providers.
tldsYesOne to 20 distinct ASCII top-level extensions separated by commas, for the same name. Optional leading dots are accepted. No whole-catalog scans.
cachedOnlyNoReturn only existing fresh availability evidence, without provider calls, lookup admission, claims or retries. Cache misses remain Not confirmed.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "AvailabilityAttempt": {
      +      "properties": {
      +        "availability": {
      +          "enum": [
      +            "available",
      +            "unavailable",
      +            "unknown"
      +          ]
      +        },
      +        "checkedAt": {
      +          "format": "date-time",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "expiresAt": {
      +          "format": "date-time",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "outcome": {
      +          "description": "Whether this stage returned an answer, failed before confirming evidence, or is still in progress. Optional for older responses.",
      +          "enum": [
      +            "answered",
      +            "failed",
      +            "pending"
      +          ]
      +        },
      +        "premium": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "provider": {
      +          "properties": {
      +            "documentation": {
      +              "format": "uri",
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "name",
      +            "documentation"
      +          ],
      +          "type": "object"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "retryAfterSeconds": {
      +          "description": "Suggested wait after a failed stage; never an evidence lifetime.",
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "provider",
      +        "availability",
      +        "premium",
      +        "reason",
      +        "checkedAt",
      +        "expiresAt"
      +      ],
      +      "type": "object"
      +    },
      +    "AvailabilityBatch": {
      +      "properties": {
      +        "apiVersion": {
      +          "type": "string"
      +        },
      +        "cachedOnly": {
      +          "type": "boolean"
      +        },
      +        "error": {
      +          "description": "Partial failure: retain successful facts and wait before another explicit request. A confirmed Cloudflare-specific rate denial may continue through admitted fallback providers. Caller or shared-storage failure with no returned results uses the ordinary HTTP/MCP error envelope.",
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "domains": {
      +              "description": "When present, only these domains have a paused fallback.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "maxItems": 20,
      +              "type": "array"
      +            },
      +            "retryAfterSeconds": {
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "retryAfterSeconds"
      +          ],
      +          "type": "object"
      +        },
      +        "results": {
      +          "items": {
      +            "$ref": "#/$defs/AvailabilityEvidence"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        },
      +        "service": {
      +          "$ref": "#/$defs/ServiceInformation"
      +        },
      +        "unconfirmedDomains": {
      +          "description": "Domains with unknown availability, not taken domains. Premium must be inspected separately even when this list is empty.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "apiVersion",
      +        "service",
      +        "results",
      +        "unconfirmedDomains",
      +        "cachedOnly"
      +      ],
      +      "type": "object"
      +    },
      +    "AvailabilityEvidence": {
      +      "properties": {
      +        "attempts": {
      +          "items": {
      +            "$ref": "#/$defs/AvailabilityAttempt"
      +          },
      +          "maxItems": 5,
      +          "type": "array"
      +        },
      +        "availability": {
      +          "description": "Registration status; independent of premium classification.",
      +          "enum": [
      +            "available",
      +            "unavailable",
      +            "unknown"
      +          ]
      +        },
      +        "checkedAt": {
      +          "description": "Successful provider response time; null when no reliable result was obtained.",
      +          "format": "date-time",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "domain": {
      +          "type": "string"
      +        },
      +        "expiresAt": {
      +          "description": "Recheck after this time; never a reservation or guarantee until expiry.",
      +          "format": "date-time",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "fallback": {
      +          "properties": {
      +            "reason": {
      +              "type": "string"
      +            },
      +            "registrar": {
      +              "type": "string"
      +            },
      +            "state": {
      +              "enum": [
      +                "used",
      +                "unavailable"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "registrar",
      +            "state",
      +            "reason"
      +          ],
      +          "type": "object"
      +        },
      +        "listEnrichmentComplete": {
      +          "description": "Batch results: true when availability is known or every configured fallback stage has answered for this name. False means a later explicit request may add facts; it never means taken.",
      +          "type": "boolean"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "premium": {
      +          "description": "Null means not confirmed, never standard tier.",
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "provider": {
      +          "properties": {
      +            "documentation": {
      +              "format": "uri",
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "name",
      +            "documentation"
      +          ],
      +          "type": "object"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "registrar": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "enum": [
      +            "available",
      +            "unavailable",
      +            "premium",
      +            "unsupported",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "domain",
      +        "status",
      +        "reason",
      +        "message",
      +        "provider",
      +        "checkedAt",
      +        "expiresAt"
      +      ],
      +      "type": "object"
      +    },
      +    "Error": {
      +      "properties": {
      +        "apiVersion": {
      +          "type": "string"
      +        },
      +        "error": {
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            },
      +            "retryAfterSeconds": {
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "apiVersion",
      +        "error"
      +      ],
      +      "type": "object"
      +    },
      +    "ServiceInformation": {
      +      "description": "Cheapest Domains identity and optional setup links, separate from upstream evidence. Does not establish client installation or provider health.",
      +      "properties": {
      +        "name": {
      +          "const": "Cheapest Domains"
      +        },
      +        "pluginUrl": {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "setupUrl": {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "url": {
      +          "format": "uri",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "url",
      +        "setupUrl",
      +        "pluginUrl"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/AvailabilityBatch"
      +    },
      +    {
      +      "$ref": "#/$defs/Error"
      +    }
      +  ],
      +  "description": "Successful results are AvailabilityBatch, the REST 200 response; results with isError: true are Error.",
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false) the description discloses real behavior: enrichment halts once availability is known so premium may stay null, partial failures return received answers plus retry guidance with no automatic retries, and cachedOnly performs zero provider calls. It does not explain cost or latency implications of a 20-extension open-world call, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the core action and scope, followed by limits and exclusions. The telegraphic style is dense but each clause carries information; minor fragmentation is the only cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the description covers limits, nullability of premium, partial-failure handling and the cached mode. It is nearly complete for a 3-parameter batch tool; only provider-cost/latency expectations for open-world calls are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the 20-extension cap from the tlds schema and echoes cachedOnly's 'no provider calls' semantics already stated in the property description, adding little new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource with scope: 'Check one name across up to 20 extensions, reusing shared evidence.' That scope alone separates it from the single-domain check_availability sibling, though the sibling is never named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing clause 'No selected-registrar fallback, fresh mode, prices or purchases' functions as an explicit when-not list that routes agents away from estimate_cost, get_tld_prices and get_registrar_link. It lacks a positive 'use this instead of X' statement, but the exclusions are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.