Skip to main content
Glama

Server Details

Find IANA ports, MIME types, HTTP codes/fields, URI schemes, PENs, BCP 47 tags, RFCs, any registry.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/iana-registries-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/iana-registries-mcp-server

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct IANA registry or resource, with clear parameter signatures and no overlaps. An agent can easily distinguish between unrelated lookups like http_field, http_status, port, and media_type.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with the 'iana_' prefix and a clear verb_noun structure (get_, lookup_, search_), making the set predictable and easy to navigate.

Tool Count5/5

With 10 tools, the set is well-scoped: it provides specific lookups for major IANA registries plus a general registry access and search tool, avoiding bloat while covering key use cases.

Completeness4/5

The toolset offers comprehensive read access to many IANA registries, including search and retrieval, but lacks tools for bulk operations or mutations (which are not applicable) and may miss some niche registries, though the generic get_registry_records covers those.

Available Tools

10 tools
iana_get_registry_recordsRead IANA registry recordsA
Read-onlyIdempotent
Inspect

Read records from any IANA XML registry by id, e.g. registry "tls-parameters" with subregistry "tls-parameters-4" (TLS Cipher Suites), "protocol-numbers", "http-methods", or "cbor-tags"; an iana.org/assignments URL also works. Filter with value (exact match on the key column, or on the column field names; digits compare by number with a cell of digits ("0443" finds "443") and one 0x token with a one-token 0x cell ("0x5" finds "0x05"), each also matching its own kind of range row ("105-199", "0x11-0xff"); other 0x forms compare their digits as written, in any comma, space, or brace spelling) and contains (words in any field; records with a field equal to the words come first). When a registry has several sub-registries and none is given, the response lists them instead of records; a table that nests tables lists them too. Field names are the registry's XML element names (e.g. "rec" is the Recommended column). Large registries page through cursor. Find ids with iana_search_registries.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNoColumn for value to match instead of the key column, case-insensitive, one of the names in columns: e.g. "type" for a DNS RR type mnemonic, or "name" for every row of a service name. Ignored without value.
limitNoMaximum number of results to return, 1–100. Default 25.
valueNoExact match on the key column named by value_field (value, else number, else the first column), or on field when set; case and whitespace are ignored. A value of digits compares by number with a cell of digits, so "0443" finds "443", and also matches range rows such as "105-199"; it never matches a 0x cell. One 0x token compares by number with a one-token 0x cell, so "0x5" finds "0x05", and also matches range rows such as "0x11-0xff". Any other pair of 0x forms compares the digits as written: "0x1301", "{0x13,0x01}", and "0x13 0x01" all find "0x13,0x01", while "0x13" never finds "0x00,0x13".
cursorNonext_cursor from the previous page; reuse it only with the same registry, subregistry, value, field, and contains.
containsNoWords matched as whole tokens against every field and reference id, e.g. "chacha20". Records with a field equal to the words come first.
registryYesRegistry id, e.g. "tls-parameters", or its https://www.iana.org/assignments/<id> URL (a #fragment selects the sub-registry when subregistry is unset).
subregistryNoSub-registry id, case-insensitive, e.g. "tls-parameters-4". Omit to read the only sub-registry, or to list them when there are several.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
errorNoPresent when the call failed. Absent on success.
notesNoNotes of the table read (of the registry, when listing), first page only. With registry_notes: the first 25 and 4,000 characters at most, these first.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
offsetNoMatching records before this page, on pages after the first.
sourceNoProvenance and freshness of the answer.
columnsNoField (XML element) names seen, first-seen order, the first 50.
recordsNoRecords in registry order (with contains, records with a field equal to the words first), up to limit and a 48,000-character page budget.
truncatedNoTrue when more matches exist than were returned.
referencesNoThe documents that define the table read, the first 25.
totalCountNoMatches before the limit was applied.
descriptionNoDescription of the table read, or of the registry when listing; a YANG module registry names its module file here. At most 2,000 characters.
next_cursorNoPass as cursor, with the same filters, for the next page.
registry_idNoRegistry id.
value_fieldNoThe table's key column: each record's value comes from it, and the value filter matches it unless field names another.
subregistriesNoTables to read next, the first 250: every sub-registry when one must be chosen (records is then empty), or the tables nested directly in the table read, on its first page.
registry_notesNoThe registry root's notes and footnotes, on the first page of a sub-registry read; records cite them by anchor. Shares the notes caps, after notes.
registry_titleNoRegistry title.
subregistry_idNoId of the sub-registry the records come from.
notes_truncatedNoTrue when notes or registry_notes were cut at 4,000 characters.
subregistry_titleNoTitle of that sub-registry.
registration_rangesNoAllocation ranges, when the table defines them: the first 25, each text at most 2,000 characters.
registration_procedureNoRegistration rule of the table read, or of the registry when listing; at most 2,000 characters.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, openWorldHint), but the description adds real behavior the annotations do not: sub-registry listing when none is specified, nested-table listing, field names being XML element names, and cursor-based paging for large registries.

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

Conciseness3/5

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

The core purpose is front-loaded, but the body is a single dense paragraph carrying long parenthetical matching rules that duplicate the schema. Much of the middle is redundant with structured fields and could be trimmed without loss.

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

Completeness5/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-value shape need not be explained. Given that, the description covers the remaining edge cases an agent needs: sub-registry listing, nested tables, pagination cursor reuse constraints, and the search sibling for id lookup.

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% and the value-matching prose in the description largely restates the schema's own text, including the digit/0x range semantics. The added value is mostly the worked examples, which do not go meaningfully beyond what the schema already documents, so the baseline 3 applies.

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

Purpose5/5

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

Opens with a specific verb+resource ("Read records from any IANA XML registry by id") and grounds it with concrete examples (tls-parameters, protocol-numbers, http-methods, cbor-tags). It is clearly distinguishable from the narrow iana_lookup_* siblings and explicitly hands off id discovery to iana_search_registries.

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?

It routes the agent to iana_search_registries for finding ids and explains the fallback behavior when no subregistry is given. However, with nine siblings in the namespace, it never states when to prefer a specialized tool such as iana_lookup_port or iana_lookup_media_type over this generic reader.

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

iana_get_rfc_statusGet RFC, Internet-Draft, and series statusA
Read-onlyIdempotent
Inspect

Get the current status of up to 10 RFCs, Internet-Drafts, or BCP/STD/FYI series in one call. Accepts "RFC 9110", "rfc9110", "9110", draft names with or without a revision suffix ("draft-ietf-httpbis-semantics-19"), series numbers ("BCP 14"), RFC and draft file names ("rfc9110.txt"), the URL of an RFC or draft on datatracker.ietf.org, tools.ietf.org, or ietf.org or of an RFC on rfc-editor.org, and a series URL at rfc-editor.org/info/ or datatracker.ietf.org/doc/ ("https://datatracker.ietf.org/doc/bcp14/"). RFCs return current and as-published status, stream, working group, obsoletes/obsoleted-by and updates/updated-by relations, the series they belong to, and the errata page; drafts return their state, IESG state, intended status, expiry, the document that replaced them, and the RFC they became; a series returns its member RFCs. Unknown ids return found: false. A call makes at most 20 Datatracker requests, retries included (an RFC or a series needs one, plus one per call for the RFCs' series; a draft three, or four with a revision suffix): each id is taken in request order if its requests still fit, and the others come back in failed with reason request_limit, to pass in another call.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesUp to 10 RFCs, Internet-Drafts, or series, e.g. ["RFC 9110", "BCP 14", "draft-ietf-httpbis-semantics-19"]. One comma-, semicolon-, or newline-separated string is also accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
failedNoIds whose lookup failed upstream or was cut by the call's request limit; the rest of the batch still answered.
noticeNoSet when ids were left unresolved at the call's Datatracker request limit, or when Datatracker fields (stream and group, or series membership) were unavailable for some RFCs.
documentsNoOne entry per distinct requested id, in request order, excluding ids in failed.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover readOnly/idempotent/openWorld, so the description is freed to disclose what annotations cannot: per-call request budget (max 20 Datatracker requests), retry-inclusive accounting, exact per-id request costs, partial-failure semantics ('failed with reason request_limit'), and 'Unknown ids return found: false.' These are genuinely useful operational details. It stops short of 5 only because pagination/ordering of results across a batch isn't fully spelled out.

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

Conciseness3/5

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

The description is front-loaded correctly with the core purpose, but the middle sentence is a run-on enumeration of accepted formats that could be trimmed, and the final sentence on request accounting is dense. It earns its length given the tool's complexity, but structure is somewhat heavy for a one-parameter tool.

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?

Given a single parameter, full schema coverage, and an output schema, the description supplies the operational context an agent needs: batch limit, accepted input forms, partial-failure behavior, and per-type return shapes. It's complete enough to invoke correctly, with only minor gaps in cross-batch result ordering.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by enumerating accepted identifier forms (bare number, 'RFC 9110', 'rfc9110', draft with/without revision, 'BCP 14', file name, URLs on specific hosts) and the 10-item batch cap, but this largely duplicates the schema's own item description. Marginal lift above baseline.

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

Purpose5/5

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

The description opens with a precise verb+resource+scope: 'Get the current status of up to 10 RFCs, Internet-Drafts, or BCP/STD/FYI series in one call.' This cleanly distinguishes it from sibling tools like iana_lookup_pen or iana_search_registries, which target different IANA resources. An agent can tell immediately this is the RFC/draft/series status tool.

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 description gives rich input-format guidance (what strings are accepted) and explains the request-limit retry behavior ('failed with reason request_limit, to pass in another call'), which tells the agent when to re-invoke. It does not explicitly name sibling alternatives or state when NOT to use this tool, keeping it out of the 5 range.

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

iana_lookup_http_fieldLook up an HTTP field nameA
Read-onlyIdempotent
Inspect

Look up a registered HTTP field (header or trailer) name. Pass exactly one of name (case-insensitive, e.g. "Cache-Status") or keyword (words matched against field names and comments). Returns the registration status — permanent, provisional, deprecated, or obsoleted — the Structured Field type when registered, and the defining reference. Many widely used headers are unregistered; a miss means only that IANA has no entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoExact field name, case-insensitive, e.g. "Content-Type" (a trailing ":" is ignored). Pass this or keyword, not both.
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
statusNoKeep only fields with this registration status. Applies to both modes.
keywordNoWords matched as whole tokens against field names and registry comments, e.g. "cache". Pass this or name, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a registered field matched.
shownNoResults returned.
fieldsNoMatching fields: exact name hits first, then registry order.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
next_offsetNoPass as offset for the next page; absent on the last.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral note — that a miss means only that IANA has no entry, not that the header is invalid — but otherwise restates return content that the output schema already carries.

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

Conciseness5/5

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

Three sentences, front-loaded with the purpose, then the argument constraint, then the caveat about misses. No filler and nothing that fails to earn its place.

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?

With an output schema present, the description need not enumerate return fields, and the annotations cover safety. The mutual-exclusion constraint and the false-negative caveat are the two things an agent most needs, and both appear. Pagination mechanics are left entirely to the schema, which is acceptable but a minor gap.

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 name, keyword, status, limit, and offset are all documented in the schema, including the mutual-exclusion rule in each property. The description reinforces but does not extend that (case-insensitivity and keyword token matching are both already in the schema), so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Look up a registered HTTP field (header or trailer) name") and names the exact identifier spaces it searches. It is clearly separable from siblings like iana_lookup_media_type or iana_lookup_http_status based on the resource alone.

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?

Gives the key operational rule — "Pass exactly one of name or keyword" — and explains when keyword mode applies ("words matched against field names and comments"). It also warns that many widely used headers are unregistered, which guides result interpretation. No explicit routing against siblings such as iana_search_registries, so it falls short of a 5.

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

iana_lookup_http_statusLook up an HTTP status codeA
Read-onlyIdempotent
Inspect

Look up an HTTP status code in the IANA registry, or search reason phrases. Pass exactly one of code (100–599) or keyword (e.g. "too many"). Returns the registered phrase, its class, defining reference with section, and whether it is temporary, obsoleted, or unused; an unassigned code returns found: false with the unassigned range it falls in.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoStatus code to look up, 100–599 (a digit string such as "429" also works). Pass this or keyword, not both.
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
keywordNoWords matched as whole tokens against registered reason phrases, e.g. "too many" or "gateway". Pass this or code, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a registered status matched.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
statusesNoMatching status codes: exact phrase hits first, then registry order.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
next_offsetNoPass as offset for the next page; absent on the last.
unassigned_rangeNoFor an unassigned code, the registry range it falls in, e.g. "432-450".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower. The description still adds real behavior beyond them: the specific fields returned (phrase, class, reference with section, temporary/obsoleted/unused flags) and the important edge case that an unassigned code returns found: false with its unassigned range.

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

Conciseness5/5

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

Two tightly packed sentences, front-loaded with the primary purpose, with zero filler. Every clause carries information: lookup mode, search mode, exclusivity constraint, and the return/edge-case behavior.

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?

With an output schema present, the description need not enumerate return values, yet it still adds the useful unassigned-code edge case. The only gap is that it doesn't position itself relative to the many sibling lookup tools, which matters in a family of nine similarly named tools.

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 all four parameters are already documented with ranges, defaults, and the mutual-exclusion note. The description restates the code/keyword exclusivity but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (look up / search) and resource (HTTP status code in the IANA registry), plus the secondary mode of searching reason phrases. An agent can distinguish it from iana_lookup_http_field or iana_get_rfc_status purely from the text.

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?

Explicitly states the code-vs-keyword selection rule ('Pass exactly one of'), which tells the agent how to invoke it correctly. It does not, however, contrast this tool against siblings like iana_search_registries or iana_lookup_http_field, so there is no explicit alternative routing.

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

iana_lookup_language_tagValidate a BCP 47 language tagA
Read-onlyIdempotent
Inspect

Parse and validate a BCP 47 language tag against the IANA Language Subtag Registry, or search subtags by description. Pass exactly one of tag (e.g. "zh-Hant-TW", "sr-Latn", "en_US") or description (e.g. "Swiss German"). A tag is split into language, extlang, script, region, variant, extension, and private-use parts; each part is checked, deprecated subtags report their preferred value, and a canonical tag is returned when the tag is valid. A single subtag registered under several types (e.g. "TW") lists the other types.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoA language tag to validate, e.g. "zh-Hant-TW", "sr-Latn", "i-klingon". Underscores are read as hyphens ("en_US" → "en-US"); matching ignores case. Pass this or description, not both.
limitNoMaximum number of description matches to return, 1–100. Default 25. Tag mode always returns every part of the tag.
offsetNoNumber of description matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
descriptionNoWords matched as whole tokens against subtag descriptions, e.g. "Swiss German" or "Cyrillic". Pass this or tag, not both.
subtag_typeNoDescription mode only: return only records of this Type.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
shownNoResults returned.
validNoTag mode: true when well-formed, every subtag is registered and correctly placed, and no variant or singleton repeats.
issuesNoTag mode: findings; empty for a clean tag.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
matchesNoDescription mode: matching records, exact description matches first, then registry order.
subtagsNoTag mode: the parts in order, after any whole-tag record; parsing stops at the first part the syntax cannot place.
tag_inputNoTag mode: the tag as read, after underscores became hyphens.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
next_offsetNoPass as offset for the next page; absent on the last.
well_formedNoTag mode: true when the tag follows RFC 5646 syntax or is grandfathered.
canonical_tagNoTag mode, valid tags only: canonical form (preferred values applied, extlang reduced, case normalized).
also_registered_asNoTag mode, single-subtag input: records of other types under the same subtag, e.g. region "TW" beside language "tw".

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the burden is light, and the description still adds substantive behavior: the tag is decomposed into language/extlang/script/region/variant/extension/private-use, deprecated subtags report their preferred value, and a canonical tag is returned. That is meaningful context beyond the annotations.

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 dense sentences with the core action front-loaded and supporting behavior (canonicalization, deprecation, multi-type subtags) following in logical order. No padding, though the final subtag-type sentence is a niche detail.

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 not be spelled out, yet the description still sketches the response (parts checked, preferred value for deprecated subtags, canonical tag, alternate types). Combined with a fully documented schema, an agent has everything needed to call it correctly.

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 all five parameters (including the subtag_type enum and limit/offset pagination) are already documented in the schema. The description restates the mutually exclusive tag/description rule and gives examples, but adds little syntax or unit information the schema lacks.

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

Purpose5/5

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

The description opens with a specific verb pair and resource: parse/validate a BCP 47 language tag against the IANA Language Subtag Registry, plus search subtags by description. This clearly separates it from the iana_lookup_http_field / lookup_media_type siblings, which address entirely different registries.

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?

It states the mode-selection rule explicitly — pass exactly one of `tag` or `description` — and illustrates each mode with examples. It does not name a sibling as an alternative or state when-not-to-use, but for a self-contained dual-mode lookup that guidance is adequate.

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

iana_lookup_media_typeLook up a media typeA
Read-onlyIdempotent
Inspect

Look up registered media (MIME) types. Pass exactly one of type (a full name such as "application/json"; parameters after ";" are ignored) or keyword (words matched against registered type names and status annotations, e.g. "geo json"; never against file extensions). An exact type lookup also reads the registration template and returns its file-extension, intended-usage, and deprecated-alias statements as written, each only when the template has it. Some registered types have no registration template (template.available: false); their references are the defining documents. Deprecated and obsoleted types are reported with their replacement when the registry names one. Unregistered "x-" types are not in the registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFull media type, case-insensitive, e.g. "application/json" ("; charset=utf-8" and other parameters are dropped). Pass this or keyword, not both.
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
keywordNoWords matched as whole tokens against registered type names and status annotations, e.g. "geo json". File extensions are not searched: look up the expected type with type to read its template's file-extension statement, when the template has one. Pass this or type, not both.
top_levelNoKeep only types under this top-level type, e.g. "image". Keyword mode only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a registered media type matched.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
media_typesNoMatching media types: exact name hits first, then registry order.
next_offsetNoPass as offset for the next page; absent on the last.
normalized_typeNoType mode: the type looked up, lowercased, parameters removed.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/openWorld/idempotent, yet the description adds meaningful behavior: exact `type` lookups read the registration template and surface file-extension, intended-usage, and deprecated-alias statements, the template.available:false case, and replacement reporting for deprecated/obsoleted types. This is real context beyond the safety hints.

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?

Front-loads the core purpose, then layers mode selection and return behavior in dense but purposeful sentences. No filler, though the paragraph grows long and could be broken for scannability.

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?

For a five-parameter read tool with an output schema and full annotations, the description covers input modes, matching semantics, and edge cases (no template, deprecated types, unregistered 'x-' types). An agent has enough to call it correctly; only sibling routing is unaddressed.

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 schema already documents every parameter including the enum, bounds, and mutual-exclusion rule. The description reinforces the type-vs-keyword choice but adds no syntax or format detail the schema lacks, so the 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?

States a specific verb ('Look up') and resource ('registered media (MIME) types'), so the agent immediately knows what the tool does. It does not, however, explicitly contrast itself with the sibling iana_lookup_* tools, relying on the resource noun alone for differentiation.

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?

Clearly instructs to pass exactly one of `type` or `keyword`, explains keyword matching semantics (tokens against names/status annotations, never file extensions), and warns that unregistered 'x-' types are absent. It lacks explicit when-to-use-vs-sibling-alternative routing but covers the operational boundaries well.

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

iana_lookup_penLook up a Private Enterprise NumberA
Read-onlyIdempotent
Inspect

Look up a Private Enterprise Number (PEN). Pass exactly one of pen (a number such as 32473, or an OID under 1.3.6.1.4.1 such as 1.3.6.1.4.1.32473.1.2) or organization (words matched against organization names). Returns the organization and its OID prefix. Arcs below the enterprise number are assigned by the enterprise, not IANA. Contact details are not returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
penNoEnterprise number, e.g. "32473", or an OID under 1.3.6.1.4.1 naming it, e.g. "1.3.6.1.4.1.32473.1.2" (a leading dot and the iso.org.dod.internet.private.enterprise prefix are accepted). Pass this or organization, not both.
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of organization matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
organizationNoWords matched as whole tokens against the names of assigned entries, e.g. "cisco systems"; look up a number with pen to see a reserved or unassigned one. Pass this or pen, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a returned number is assigned to an organization.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
sub_arcsNoArcs below the enterprise number, e.g. "1.2"; the enterprise assigns these.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
enterprisesNoMatching entries: exact organization-name hits first, then number order.
next_offsetNoPass as offset for the next page; absent on the last.
requested_oidNoThe OID as requested, when it named arcs below the enterprise number.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the bar is lower. The description adds genuinely useful context beyond them: that arcs below the enterprise number are assigned by the enterprise (not IANA) and that contact details are not returned, preventing false expectations about output completeness.

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

Conciseness5/5

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

Four sentences, front-loaded with the purpose and the parameter-selection rule, then the return value and two caveats. No redundant or filler text.

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

Completeness5/5

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

An output schema exists, yet the description still succinctly notes what is returned and what is not (contact details). Combined with full schema coverage and clear annotations, an agent has everything needed to call this correctly.

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 schema already documents all four parameters, including the pen number/OID forms and the limit/offset pagination. The description reinforces the mutually exclusive pen/organization rule but adds little format detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Look up') and resource ('Private Enterprise Number (PEN)'), and the name/title distinguish it cleanly from siblings like iana_lookup_port or iana_lookup_media_type. The description even clarifies the returned resource (organization and OID prefix).

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?

Explicitly says to pass exactly one of `pen` or `organization`, which is the key usage constraint. It lacks an explicit 'when not to use' or a pointer to an alternative sibling, but the either/or selection rule is clearly stated.

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

iana_lookup_portLook up a port assignmentA
Read-onlyIdempotent
Inspect

Look up IANA service name and transport protocol port assignments. Pass exactly one of port (a number, 0–65535), service (an exact service name such as "postgresql"), or keyword (words matched against service names and descriptions). Results list every transport (tcp, udp, sctp, dccp) separately, report the registry range row containing an unassigned port, and classify the port as System (0–1023), User (1024–49151), or Dynamic/Private (49152–65535). Service names registered without a port (DNS-SD names) appear with no port.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort number, 0–65535 (a digit string such as "443" also works). Returns every row for that port plus the range row containing it. Pass exactly one of port, service, or keyword.
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
keywordNoWords matched as whole tokens against service names and descriptions, e.g. "network time". Pass exactly one of port, service, or keyword.
serviceNoExact service name, case-insensitive, up to 15 characters, e.g. "postgresql" or "whois++". Pass exactly one of port, service, or keyword.
transportNoKeep only rows for this transport protocol. Rows without a transport (most range rows and every service name without a port) are always kept. Applies to every mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a returned row has a registered service name.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
truncatedNoTrue when more matches exist than were returned.
port_classNoPort mode: the requested port's class.
totalCountNoMatches before the limit was applied.
assignmentsNoMatching rows. Port mode: exact rows, then range rows containing the port. Other modes: ascending by port, port-less rows last.
next_offsetNoPass as offset for the next page; absent on the last.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description goes further by disclosing output behavior: per-transport rows, range rows for unassigned ports, System/User/Dynamic classification bands, and DNS-SD names appearing without a port. It adds real context, though some of it overlaps the output schema.

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

Conciseness5/5

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

Front-loaded with the core action, then the mode-selection rule, then result semantics and an edge case. Every sentence carries information an agent would otherwise have to infer; there is no filler.

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

Completeness5/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 not be re-explained, all six parameters are documented at 100% coverage, and the description supplies the one thing the schema cannot — how the three mutually exclusive modes behave and what the result set looks like. Nothing needed to call it correctly is missing.

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 mutual-exclusivity rule and port bounds that each schema property already documents, adding little semantic meaning beyond the structured fields.

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

Purpose5/5

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

States a specific verb and resource ('Look up IANA service name and transport protocol port assignments') and is instantly distinguishable from siblings covering other registries (HTTP status, media type, PEN, URI scheme, language tag). An agent can pick this tool without opening any schema.

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?

Gives clear selection rules for the three lookup modes ('Pass exactly one of port, service, or keyword') and explains how keyword matches work. It does not, however, mention when to prefer this over the sibling iana_search_registries or state exclusions, so it stops short of a full 5.

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

iana_lookup_uri_schemeLook up a URI schemeA
Read-onlyIdempotent
Inspect

Look up a registered URI scheme. Pass exactly one of scheme (e.g. "mailto"; a trailing ":" or "://" is ignored) or keyword (words matched against scheme names and descriptions). Returns the status — permanent, provisional, or historical — description, references, and well-known URI support.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return, 1–100. Default 25.
offsetNoNumber of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.
schemeNoExact scheme name, case-insensitive, e.g. "https" (a trailing ":" or "://" is ignored). Pass this or keyword, not both.
statusNoKeep only schemes with this registration status. Applies to both modes.
keywordNoWords matched as whole tokens against scheme names and descriptions, e.g. "websocket". Pass this or scheme, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
modeNoWhich lookup ran.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a registered scheme matched.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
schemesNoMatching schemes: exact scheme hits first, then registry order.
truncatedNoTrue when more matches exist than were returned.
totalCountNoMatches before the limit was applied.
next_offsetNoPass as offset for the next page; absent on the last.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety/idempotency profile is covered. The description adds little behavioral context beyond input normalization; it does not discuss pagination behavior or any other trait not already implied by the annotations and output schema.

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 compact, front-loaded sentences: purpose, invocation constraint, and return contents. Zero waste overall, though the closing 'Returns…' sentence partially duplicates what the output schema already documents.

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?

With full schema coverage, annotations, and an output schema, the description supplies enough to invoke the tool correctly (mode selection, normalization, return shape). Pagination via offset/next_offset is left entirely to the schema, a minor gap for a paginated lookup.

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 all five parameters are documented in the schema itself, including the ':'/'://' normalization and the scheme-or-keyword mutual exclusion. The description largely restates these facts and adds no meaning about limit, offset, or status beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (look up a registered URI scheme), and the resource is distinct from every sibling (http field, http status, language tag, media type, pen, port, registry records). An agent can identify the right tool from the description alone without opening the schema.

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?

Clearly specifies the two operating modes and the constraint 'Pass exactly one of `scheme` or `keyword`', with examples for each. It does not, however, contrast this tool with alternatives such as iana_search_registries, so no explicit when-not guidance is offered.

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

iana_search_registriesSearch IANA registriesA
Read-onlyIdempotent
Inspect

Find IANA protocol registries and sub-registries by keyword over their titles and protocol categories, e.g. "tls cipher", "dns resource record", "protocol numbers". Returns the registry and sub-registry ids that iana_get_registry_records reads, with registration procedure and defining documents. Covers every registry linked from the IANA protocol registries index.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return, 1–50. Default 15.
queryYesWords matched as whole tokens, singular or plural, against registry titles, categories, and ids, e.g. "tls cipher". An exact registry or sub-registry id ranks first, then the closest titles.
offsetNoNumber of matches to skip; pass the next_offset of the previous response to get the next page. Default 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit applied.
errorNoPresent when the call failed. Absent on success.
shownNoResults returned.
noticeNoGuidance on a miss, a cut list, or another condition.
sourceNoProvenance and freshness of the answer.
truncatedNoTrue when more matches exist than were returned.
registriesNoMatching index entries: exact id hits first, then the closest titles.
totalCountNoMatches before the limit was applied.
next_offsetNoPass as offset for the next page; absent on the last.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is handled. The description adds that results include registration procedure and defining documents and that it covers the full IANA protocol registries index, which is useful behavioral context. However, it doesn't describe ranking beyond what the query schema already says, nor any limitations.

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

Conciseness5/5

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

Three efficient sentences: purpose and examples first, then return values and registry coverage. No filler or repetition.

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?

For a search tool with annotations covering safety and an output schema (though not shown in detail), the description provides enough – what it searches, examples, return contents, and scope. It could mention pagination via offset/limit, but that is already in the schema. Minor gap in not stating result ordering beyond what the query parameter already describes.

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 the query, limit, and offset parameters are fully documented in the schema. The description just restates that it searches titles and categories, adding no extra syntax or format details beyond the schema.

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

Purpose5/5

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

States a specific verb (Find) and resource (IANA protocol registries and sub-registries) with matching scope (titles and protocol categories). It also names the downstream sibling iana_get_registry_records whose inputs it produces, clearly distinguishing it from the lookup_* tools that resolve specific values.

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 description implies when to use it (to discover registries by keyword) and examples like 'tls cipher' show how to query. It mentions the relationship with iana_get_registry_records but doesn't explicitly say when not to use it or describe cases where a direct lookup tool would be better.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • First observediana_get_registry_records
    • First observediana_get_rfc_status
    • First observediana_lookup_http_field
    • First observediana_lookup_http_status
    • First observediana_lookup_language_tag
    • First observediana_lookup_media_type
    • First observediana_lookup_pen
    • First observediana_lookup_port
    • First observediana_lookup_uri_scheme
    • First observediana_search_registries

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables retrieval of full RFC text, metadata, errata, and BCP/STD mappings from rfc-editor.org, plus substring search across the RFC index.
    185 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query registry RDAP services for domain, IP, ASN, entity, and nameserver registration records — including ccTLDs that IANA's bootstrap omits — with unregistered domains returned as answers rather than errors. Requires no authentication or API key.
    185 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.