Skip to main content
Glama

Total cost of ownership

total_cost_of_ownership
Read-onlyIdempotent

Use this when the user compares the long-run cost of several names or extensions, at one registrar or the cheapest. Applies minimum terms and regular renewals; with transfer_after_year it also finds the cheapest registrar to move to later. Up to 20 domains or extensions in one call.

Input Schema

NameRequiredDescriptionDefault
tldsNo1-20 extensions
yearsNohorizon for totals, 1-10 years (default 3)
domainsNo1-20 domain names (their extensions are priced)
currencyNoISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`
registrarNoprice at this registrar; default: the cheapest to own
include_resellersNoinclude registrars whose prices are a reseller account's tier (pricing_tier reseller, e.g. eNom); default false
transfer_after_yearNoalso price moving to the cheapest renewing registrar after this many years
include_limited_promosNocount limited promotions (one per customer, first-time customers only) in totals and rankings; default false: they are listed and flagged promo_limited, but year 1 is priced at the regular price

Output Schema

NameRequiredDescriptionDefault
fxYesHow converted prices were converted; null when nothing needed converting.
rowsYes
as_ofYeswhen the newest price in this response was collected
yearsYes
currencyYesISO 4217

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / include_limited_promos
      Added value: +{
      +  "default": false,
      +  "description": "count limited promotions (one per customer, first-time customers only) in totals and rankings; default false: they are listed and flagged promo_limited, but year 1 is priced at the regular price",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_resellers
      Added value: +{
      +  "default": false,
      +  "description": "include registrars whose prices are a reseller account's tier (pricing_tier reseller, e.g. eNom); default false",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / rows / items / properties / registrar / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "id": {
      -        "examples": [
      -          "porkbun"
      -        ],
      -        "type": "string"
      -      },
      -      "name": {
      -        "examples": [
      -          "Porkbun"
      -        ],
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "the registrar's website (a plain link, no affiliate code)",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "name",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "id": {
      +        "examples": [
      +          "porkbun"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "examples": [
      +          "Porkbun"
      +        ],
      +        "type": "string"
      +      },
      +      "note": {
      +        "anyOf": [
      +          {
      +            "description": "A short, sourced note about the registrar's prices (not a price we rank by).",
      +            "properties": {
      +              "checked_on": {
      +                "anyOf": [
      +                  {
      +                    "examples": [
      +                      "2026-11-05"
      +                    ],
      +                    "format": "date",
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "text": {
      +                "examples": [
      +                  "NameSilo's free discount program prices .com at $12.00 (retail $19.99)."
      +                ],
      +                "type": "string"
      +              },
      +              "url": {
      +                "description": "where the note's facts come from",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "text",
      +              "url",
      +              "checked_on"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pricing_tier": {
      +        "description": "retail: anyone can buy at these prices; reseller: the prices are a reseller account's tier (eNom's Silver), left out of consumer rankings unless include_resellers=true",
      +        "enum": [
      +          "retail",
      +          "reseller"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "the registrar's website (a plain link, no affiliate code)",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "name",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / rows / items / properties / switch / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "after_year": {
      -        "type": "integer"
      -      },
      -      "saving": {
      -        "description": "total without the switch minus total with it",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      },
      -      "to": {
      -        "properties": {
      -          "id": {
      -            "examples": [
      -              "porkbun"
      -            ],
      -            "type": "string"
      -          },
      -          "name": {
      -            "examples": [
      -              "Porkbun"
      -            ],
      -            "type": "string"
      -          },
      -          "url": {
      -            "description": "the registrar's website (a plain link, no affiliate code)",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "name",
      -          "url"
      -        ],
      -        "type": "object"
      -      },
      -      "total": {
      -        "description": "register at `registrar`, transfer to `to` after `after_year` years, renew there",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      },
      -      "transfer": {
      -        "description": "An amount in major units (12.99), in `currency`.",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "after_year",
      -      "to",
      -      "transfer",
      -      "total",
      -      "saving"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "after_year": {
      +        "type": "integer"
      +      },
      +      "saving": {
      +        "description": "total without the switch minus total with it",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      },
      +      "to": {
      +        "properties": {
      +          "id": {
      +            "examples": [
      +              "porkbun"
      +            ],
      +            "type": "string"
      +          },
      +          "name": {
      +            "examples": [
      +              "Porkbun"
      +            ],
      +            "type": "string"
      +          },
      +          "note": {
      +            "anyOf": [
      +              {
      +                "description": "A short, sourced note about the registrar's prices (not a price we rank by).",
      +                "properties": {
      +                  "checked_on": {
      +                    "anyOf": [
      +                      {
      +                        "examples": [
      +                          "2026-11-05"
      +                        ],
      +                        "format": "date",
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "text": {
      +                    "examples": [
      +                      "NameSilo's free discount program prices .com at $12.00 (retail $19.99)."
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "description": "where the note's facts come from",
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "text",
      +                  "url",
      +                  "checked_on"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "pricing_tier": {
      +            "description": "retail: anyone can buy at these prices; reseller: the prices are a reseller account's tier (eNom's Silver), left out of consumer rankings unless include_resellers=true",
      +            "enum": [
      +              "retail",
      +              "reseller"
      +            ],
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "the registrar's website (a plain link, no affiliate code)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "total": {
      +        "description": "register at `registrar`, transfer to `to` after `after_year` years, renew there",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      },
      +      "transfer": {
      +        "description": "An amount in major units (12.99), in `currency`.",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "after_year",
      +      "to",
      +      "transfer",
      +      "total",
      +      "saving"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / rows / items / properties / totals / anyOf
      Previous value: -[
      -  {
      -    "description": "The cost of owning the domain for `years` years (packages/core computeTco).",
      -    "properties": {
      -      "breakdown": {
      -        "description": "year by year (in /v1/cheapest)",
      -        "items": {
      -          "properties": {
      -            "amount": {
      -              "description": "An amount in major units (12.99), in `currency`.",
      -              "properties": {
      -                "amount": {
      -                  "type": "number"
      -                },
      -                "currency": {
      -                  "description": "ISO 4217",
      -                  "examples": [
      -                    "USD"
      -                  ],
      -                  "pattern": "^[A-Z]{3}$",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "amount",
      -                "currency"
      -              ],
      -              "type": "object"
      -            },
      -            "kind": {
      -              "enum": [
      -                "register",
      -                "transfer",
      -                "renew"
      -              ],
      -              "type": "string"
      -            },
      -            "promo": {
      -              "type": "boolean"
      -            },
      -            "year": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "year",
      -            "amount",
      -            "kind",
      -            "promo"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "first_payment": {
      -        "description": "charged at checkout: year 1 (promotional price if one runs) plus the rest of the minimum term at the regular price",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      },
      -      "per_year": {
      -        "description": "total / years_paid",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      },
      -      "promo_applied": {
      -        "type": "boolean"
      -      },
      -      "start": {
      -        "enum": [
      -          "register",
      -          "transfer"
      -        ],
      -        "type": "string"
      -      },
      -      "total": {
      -        "description": "first payment plus every later year at the regular renew price",
      -        "properties": {
      -          "amount": {
      -            "type": "number"
      -          },
      -          "currency": {
      -            "description": "ISO 4217",
      -            "examples": [
      -              "USD"
      -            ],
      -            "pattern": "^[A-Z]{3}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amount",
      -          "currency"
      -        ],
      -        "type": "object"
      -      },
      -      "years": {
      -        "description": "the horizon asked for (?years=)",
      -        "type": "integer"
      -      },
      -      "years_paid": {
      -        "description": "years paid for: at least min_years when starting with a registration",
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "years",
      -      "years_paid",
      -      "start",
      -      "first_payment",
      -      "total",
      -      "per_year",
      -      "promo_applied"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "The cost of owning the domain for `years` years (packages/core computeTco).",
      +    "properties": {
      +      "breakdown": {
      +        "description": "year by year (in /v1/cheapest)",
      +        "items": {
      +          "properties": {
      +            "amount": {
      +              "description": "An amount in major units (12.99), in `currency`.",
      +              "properties": {
      +                "amount": {
      +                  "type": "number"
      +                },
      +                "currency": {
      +                  "description": "ISO 4217",
      +                  "examples": [
      +                    "USD"
      +                  ],
      +                  "pattern": "^[A-Z]{3}$",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "amount",
      +                "currency"
      +              ],
      +              "type": "object"
      +            },
      +            "kind": {
      +              "enum": [
      +                "register",
      +                "transfer",
      +                "renew"
      +              ],
      +              "type": "string"
      +            },
      +            "promo": {
      +              "type": "boolean"
      +            },
      +            "year": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "year",
      +            "amount",
      +            "kind",
      +            "promo"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "estimated": {
      +        "description": "a year whose regular price is unknown was priced at the regular renewal: the total is an estimate",
      +        "type": "boolean"
      +      },
      +      "first_payment": {
      +        "description": "charged at checkout: year 1 (promotional price if one runs) plus the rest of the minimum term at the regular price; for a transfer, the transfer price x its term",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      },
      +      "limited_promo_skipped": {
      +        "description": "a limited promotion runs (per customer, first-time customers) and was not counted: year 1 is the regular price",
      +        "type": "boolean"
      +      },
      +      "per_year": {
      +        "description": "total / years_paid",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      },
      +      "promo_applied": {
      +        "description": "year 1 is a promotional price",
      +        "type": "boolean"
      +      },
      +      "start": {
      +        "enum": [
      +          "register",
      +          "transfer"
      +        ],
      +        "type": "string"
      +      },
      +      "total": {
      +        "description": "first payment plus every later year at the regular renew price (never a renewal promotion)",
      +        "properties": {
      +          "amount": {
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "ISO 4217",
      +            "examples": [
      +              "USD"
      +            ],
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency"
      +        ],
      +        "type": "object"
      +      },
      +      "years": {
      +        "description": "the horizon asked for (?years=)",
      +        "type": "integer"
      +      },
      +      "years_paid": {
      +        "description": "years paid for: at least min_years when starting with a registration",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "years",
      +      "years_paid",
      +      "start",
      +      "first_payment",
      +      "total",
      +      "per_year",
      +      "promo_applied"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare a read-only, idempotent, non-destructive closed-world operation, so the safety profile is covered. The description adds genuinely useful mechanics beyond that: minimum terms and regular renewals are applied, and transfer_after_year changes the computation to include a later move. It does not disclose pricing caveats such as how promos or FX affect totals beyond what the schema already says.

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?

Three short sentences, front-loaded with the usage trigger, followed by the computational behavior and a size limit. The final "up to 20 domains or extensions" sentence largely restates maxItems in the schema, a small redundancy in an otherwise efficient description.

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

Completeness3/5

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

With an output schema present, the description need not explain return values, and all eight parameters are fully described in the schema. However, for a comparative costing tool with option-driven behavior, it omits how currency conversion, reseller tiers, and limited promos affect the comparison outcome — relevant caveats an agent would otherwise have to infer.

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 coverage is 100%, so every parameter including currency, include_resellers, and include_limited_promos is already documented in structured form. The description reinforces the semantics of the year horizon and transfer_after_year, but adds little that the schema does not already carry; baseline 3 applies.

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 description names a specific outcome — comparing long-run ownership cost across several names or extensions — and states the two modes (single registrar vs cheapest). It is clearly distinct from single-price siblings like compare_tld_prices or cheapest_registrar, though it never names an alternative 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?

"Use this when the user compares the long-run cost of several names or extensions" gives an explicit trigger condition, and the registrar/cheapest dichotomy scopes the two usage modes. It lacks a when-not clause or named alternative for single-domain or single-year lookups, which is the remaining gap.

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.

Resources