Servidor MCP

iana-registries-mcp-server

io.github.cyanheads/iana-registries-mcp-server

Qué hace este MCP

Looks up IANA protocol registry records, ports, MIME types, HTTP fields and status codes, URI schemes, language tags, PENs, and RFC statuses.

iana_get_registry_records
Read IANA registry records
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['registry'], 'properties': {'field': {'type': 'string', 'maxLength': 100, 'description': 'Column 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.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'value': {'type': 'string', 'maxLength': 100, 'description': 'Exact 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".'}, 'cursor': {'type': 'string', 'maxLength': 1000, 'description': 'next_cursor from the previous page; reuse it only with the same registry, subregistry, value, field, and contains.'}, 'contains': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against every field and reference id, e.g. "chacha20". Records with a field equal to the words come first.'}, 'registry': {'type': 'string', 'pattern': '^(?:[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}|https?:\\/\\/(?:www\\.)?iana\\.org\\/assignments\\/[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}(?:\\/[^\\s#]*)?(?:#[A-Za-z0-9_][A-Za-z0-9_.-]{0,99})?)$', 'maxLength': 200, 'description': 'Registry id, e.g. "tls-parameters", or its https://www.iana.org/assignments/<id> URL (a #fragment selects the sub-registry when subregistry is unset).'}, 'subregistry': {'type': 'string', 'pattern': '^[A-Za-z0-9_][A-Za-z0-9_.-]{0,99}$', 'description': 'Sub-registry id, case-insensitive, e.g. "tls-parameters-4". Omit to read the only sub-registry, or to list them when there are several.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['registry_id', 'registry_title', 'notes', 'columns', 'records', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['unknown_registry', 'unknown_subregistry', 'unknown_field', 'non_xml_registry', 'invalid_cursor', 'cursor_mismatch', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `unknown_registry`: The registry XML returns 404 and no case-insensitive index match exists, or the index is unavailable. `unknown_subregistry`: The subregistry id is not in this registry. `unknown_field`: The field, given with value, is not a column of the table read. `non_xml_registry`: The registry, or the sub-registry read, holds no XML records and points at a file published separately, such as plain text or a MIB module. `invalid_cursor`: The cursor is not one this tool returned: malformed, corrupted, or carrying an offset or limit that is not a whole number of zero or more. `cursor_mismatch`: The cursor was minted for a different registry, subregistry, value, field, or contains. `upstream_unreadable`: The registry XML could not be read, was not XML, or was larger than this server accepts. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Note text.'}, 'title': {'type': 'string', 'description': 'Note title, e.g. "WARNING".'}, 'anchor': {'type': 'string', 'description': 'Anchor that note references point at.'}}, 'description': 'One registry note.', 'additionalProperties': False}, 'description': 'Notes 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.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'offset': {'type': 'number', 'description': 'Matching records before this page, on pages after the first.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Field (XML element) names seen, first-seen order, the first 50.'}, 'records': {'type': 'array', 'items': {'type': 'object', 'required': ['fields', 'references'], 'properties': {'value': {'type': 'string', 'description': "The record's value_field cell; absent when the record has none."}, 'fields': {'type': 'object', 'description': 'Values keyed by XML element name, each capped at 2,000 characters.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'cut_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Fields cut at 2,000 characters (ending in â\x80¦) or past the 16-field cap, the first 32.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'References on the record, the first 25.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}}, 'description': 'One registry record.', 'additionalProperties': False}, 'description': 'Records in registry order (with contains, records with a field equal to the words first), up to limit and a 48,000-character page budget.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'The documents that define the table read, the first 25.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'description': {'type': 'string', 'description': 'Description 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_cursor': {'type': 'string', 'description': 'Pass as cursor, with the same filters, for the next page.'}, 'registry_id': {'type': 'string', 'description': 'Registry id.'}, 'value_field': {'type': 'string', 'description': "The table's key column: each record's value comes from it, and the value filter matches it unless field names another."}, 'subregistries': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'record_count'], 'properties': {'id': {'type': 'string', 'description': 'Pass as subregistry.'}, 'title': {'type': 'string', 'description': 'Sub-registry title.'}, 'record_count': {'type': 'number', 'description': 'Records it holds.'}}, 'description': 'One sub-registry.', 'additionalProperties': False}, 'description': 'Tables 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_notes': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Note text.'}, 'title': {'type': 'string', 'description': 'Note title, e.g. "WARNING".'}, 'anchor': {'type': 'string', 'description': 'Anchor that note references point at.'}}, 'description': 'One registry note.', 'additionalProperties': False}, 'description': "The 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_title': {'type': 'string', 'description': 'Registry title.'}, 'subregistry_id': {'type': 'string', 'description': 'Id of the sub-registry the records come from.'}, 'notes_truncated': {'type': 'boolean', 'description': 'True when notes or registry_notes were cut at 4,000 characters.'}, 'subregistry_title': {'type': 'string', 'description': 'Title of that sub-registry.'}, 'registration_ranges': {'type': 'array', 'items': {'type': 'object', 'required': ['range'], 'properties': {'note': {'type': 'string', 'description': 'Note on the range.'}, 'range': {'type': 'string', 'description': 'Allocation range, e.g. "0x0000-0xBFFF".'}, 'procedure': {'type': 'string', 'description': 'Registration procedure.'}}, 'description': 'One allocation range.', 'additionalProperties': False}, 'description': 'Allocation ranges, when the table defines them: the first 25, each text at most 2,000 characters.'}, 'registration_procedure': {'type': 'string', 'description': 'Registration rule of the table read, or of the registry when listing; at most 2,000 characters.'}}, 'additionalProperties': False}
iana_get_rfc_status
Get RFC, Internet-Draft, and series status
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'description': 'One RFC number ("RFC 9110", "9110"), draft name, series number ("BCP 14"), RFC or draft file name, or a URL of a form the tool description lists. A URL\'s query and fragment are dropped before this 200-character limit applies.'}, 'maxItems': 10, 'minItems': 1, 'description': 'Up 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.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['documents', 'failed']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_unreadable', 'pacer_shed', 'request_limit'], 'description': "Machine-readable failure mode. Declared by this tool: `upstream_unreadable`: Every id failed because the RFC Editor or Datatracker sent a response that could not be read. `pacer_shed`: This server's own RFC Editor or Datatracker request queue is too full for any id to start in time. `request_limit`: An id did not fit within the call's limit of 20 Datatracker requests, a third of this server's per-minute Datatracker pacing, or retries used up the limit before it resolved. Those ids land in failed with this reason; the call itself fails with it only when no id resolved. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'failed': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'error'], 'properties': {'id': {'type': 'string', 'description': 'The document whose lookup failed.'}, 'error': {'type': 'string', 'description': 'What failed.'}, 'reason': {'type': 'string', 'description': 'Failure reason, when classified: "request_limit" (call again with this id now), or an upstream one such as "upstream_unreadable".'}, 'retryable': {'type': 'boolean', 'description': 'Whether calling again with this id can succeed, when the failure states it: true for request_limit; false when the outcome repeats, such as an upstream redirect this server does not follow.'}}, 'description': 'One failed id.', 'additionalProperties': False}, 'description': "Ids whose lookup failed upstream or was cut by the call's request limit; the rest of the batch still answered."}, 'notice': {'type': 'string', 'description': "Set 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."}, 'documents': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'kind', 'found'], 'properties': {'id': {'type': 'string', 'description': 'As resolved: "RFC 9110", "BCP 14", or a draft name without revision; the id as given (a URL without its query or fragment) when unsupported, and the draft name as requested when no draft was found.'}, 'rfc': {'type': 'object', 'required': ['status', 'published_status', 'published', 'authors', 'obsoletes', 'obsoleted_by', 'updates', 'updated_by', 'doi', 'url', 'datatracker_url'], 'properties': {'doi': {'type': 'string', 'description': 'DOI, e.g. "10.17487/RFC9110".'}, 'url': {'type': 'string', 'description': 'The RFC on the RFC Editor site.'}, 'group': {'type': 'object', 'required': ['acronym', 'name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Group name.'}, 'type': {'type': 'string', 'description': 'E.g. "WG", "RG", "Individual".'}, 'acronym': {'type': 'string', 'description': 'E.g. "httpbis"; "none" for individual submissions.'}}, 'description': 'The responsible Datatracker group.', 'additionalProperties': False}, 'status': {'type': 'string', 'description': 'Current status per the RFC Editor, e.g. "INTERNET STANDARD", "HISTORIC".'}, 'stream': {'type': 'string', 'description': 'Stream, e.g. "IETF", "IRTF", "IAB", "ISE".'}, 'authors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Authors as published.'}, 'is_also': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The BCP, STD, or FYI series it belongs to, e.g. "BCP 14"; empty when it is in none. Absent when series membership could not be read (see notice).'}, 'updates': {'type': 'array', 'items': {'type': 'string'}, 'description': 'RFCs this RFC updates.'}, 'obsoletes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'RFCs this RFC obsoletes, e.g. "RFC 7230".'}, 'published': {'type': 'string', 'description': 'Publication month and year, e.g. "June 2022".'}, 'draft_name': {'type': 'string', 'description': 'The Internet-Draft it was published from.'}, 'errata_url': {'type': 'string', 'description': 'Errata page, when errata exist.'}, 'page_count': {'type': 'number', 'description': 'Page count.'}, 'updated_by': {'type': 'array', 'items': {'type': 'string'}, 'description': 'RFCs that update this RFC.'}, 'obsoleted_by': {'type': 'array', 'items': {'type': 'string'}, 'description': 'RFCs that obsolete this RFC.'}, 'datatracker_url': {'type': 'string', 'description': 'The RFC on the IETF Datatracker.'}, 'published_status': {'type': 'string', 'description': 'Status at publication, which may since have changed.'}}, 'description': 'Present when kind is rfc and found is true.', 'additionalProperties': False}, 'kind': {'enum': ['rfc', 'draft', 'series', 'unsupported'], 'type': 'string', 'description': 'How the id was read: an RFC, an Internet-Draft, a BCP/STD/FYI series, or unsupported text.'}, 'draft': {'type': 'object', 'required': ['rev', 'state', 'last_updated', 'replaced_by', 'replaces', 'datatracker_url'], 'properties': {'rev': {'type': 'string', 'description': 'Latest revision, e.g. "19".'}, 'group': {'type': 'object', 'required': ['acronym', 'name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Group name.'}, 'type': {'type': 'string', 'description': 'E.g. "WG", "RG", "Individual".'}, 'acronym': {'type': 'string', 'description': 'E.g. "httpbis"; "none" for individual submissions.'}}, 'description': 'The responsible Datatracker group.', 'additionalProperties': False}, 'state': {'type': 'string', 'description': 'E.g. "Active", "Expired", "Replaced", "RFC".'}, 'stream': {'type': 'string', 'description': 'Stream, e.g. "IETF".'}, 'expires': {'type': 'string', 'description': 'Expiry time of the latest revision.'}, 'replaces': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Documents this draft replaced.'}, 'became_rfc': {'type': 'string', 'description': 'The RFC it became, e.g. "RFC 9110".'}, 'iesg_state': {'type': 'string', 'description': 'IESG state, e.g. "RFC Published".'}, 'replaced_by': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Documents that replaced this draft.'}, 'last_updated': {'type': 'string', 'description': 'Last-updated time, "YYYY-MM-DD HH:MM:SS".'}, 'datatracker_url': {'type': 'string', 'description': 'The draft on the IETF Datatracker.'}, 'rfceditor_state': {'type': 'string', 'description': 'RFC Editor queue state, when in the queue.'}, 'intended_std_level': {'type': 'string', 'description': 'Intended status, e.g. "Proposed Standard".'}, 'requested_revision': {'type': 'string', 'description': 'The revision suffix requested, when the draft was found without it.'}}, 'description': 'Present when kind is draft and found is true.', 'additionalProperties': False}, 'found': {'type': 'boolean', 'description': 'True when the document exists upstream, or the series has member RFCs.'}, 'title': {'type': 'string', 'description': 'Document title.'}, 'series': {'type': 'object', 'required': ['members', 'datatracker_url'], 'properties': {'members': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Member RFCs in ascending order, e.g. "RFC 2119".'}, 'datatracker_url': {'type': 'string', 'description': 'The series on the IETF Datatracker.'}}, 'description': 'Present when kind is series and found is true.', 'additionalProperties': False}, 'guidance': {'type': 'string', 'description': 'Why nothing was found and what to pass instead; on a found draft, that the requested revision does not exist.'}}, 'description': 'One requested document.', 'additionalProperties': False}, 'description': 'One entry per distinct requested id, in request order, excluding ids in failed.'}}, 'additionalProperties': False}
iana_lookup_http_field
Look up an HTTP field name
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'pattern': "^[!#$%&'*+.^_`|~0-9A-Za-z-]{1,100}$", 'description': 'Exact field name, case-insensitive, e.g. "Content-Type" (a trailing ":" is ignored). Pass this or keyword, not both.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'status': {'enum': ['permanent', 'provisional', 'deprecated', 'obsoleted'], 'type': 'string', 'description': 'Keep only fields with this registration status. Applies to both modes.'}, 'keyword': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against field names and registry comments, e.g. "cache". Pass this or name, not both.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'fields', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['name', 'keyword'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of name and keyword were given. `upstream_unreadable`: The HTTP field registry file could not be fetched or parsed. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a registered field matched.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'references'], 'properties': {'name': {'type': 'string', 'description': 'The registered field name, registry casing.'}, 'status': {'type': 'string', 'description': 'Lowercased: permanent, provisional, deprecated, or obsoleted.'}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'comments': {'type': 'string', 'description': 'Registry comments.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'Defining references.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}, 'structured_type': {'type': 'string', 'description': 'Structured Field type (List, Dictionary, Item), when registered.'}}, 'description': 'One registered HTTP field.', 'additionalProperties': False}, 'description': 'Matching fields: exact name hits first, then registry order.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}}, 'additionalProperties': False}
iana_lookup_http_status
Look up an HTTP status code
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'code': {'type': 'integer', 'maximum': 599, 'minimum': 100, 'description': 'Status code to look up, 100â\x80\x93599 (a digit string such as "429" also works). Pass this or keyword, not both.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'keyword': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against registered reason phrases, e.g. "too many" or "gateway". Pass this or code, not both.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'statuses', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['code', 'keyword'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of code and keyword were given. `upstream_unreadable`: The HTTP status registry file could not be fetched or parsed. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a registered status matched.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'phrase', 'class', 'state', 'references'], 'properties': {'code': {'type': 'number', 'description': 'The status code.'}, 'class': {'enum': ['informational', 'success', 'redirection', 'client_error', 'server_error'], 'type': 'string', 'description': 'Status class from the first digit.'}, 'state': {'enum': ['assigned', 'temporary', 'obsoleted', 'unused'], 'type': 'string', 'description': 'From the registry markers (Unused), (OBSOLETED), (TEMPORARY - â\x80¦).'}, 'phrase': {'type': 'string', 'description': 'The registered description, with markers such as "(Unused)".'}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'Defining references.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}}, 'description': 'One registered status code.', 'additionalProperties': False}, 'description': 'Matching status codes: exact phrase hits first, then registry order.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}, 'unassigned_range': {'type': 'string', 'description': 'For an unassigned code, the registry range it falls in, e.g. "432-450".'}}, 'additionalProperties': False}
iana_lookup_language_tag
Validate a BCP 47 language tag
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'tag': {'type': 'string', 'pattern': '^[A-Za-z0-9]{1,8}(?:-[A-Za-z0-9]{1,8})*$', 'maxLength': 100, 'description': 'A language tag to validate, e.g. "zh-Hant-TW", "sr-Latn", "i-klingon". Underscores are read as hyphens ("en_US" â\x86\x92 "en-US"); matching ignores case. Pass this or description, not both.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of description matches to return, 1â\x80\x93100. Default 25. Tag mode always returns every part of the tag.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of description matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'description': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against subtag descriptions, e.g. "Swiss German" or "Cyrillic". Pass this or tag, not both.'}, 'subtag_type': {'enum': ['language', 'extlang', 'script', 'region', 'variant', 'grandfathered', 'redundant'], 'type': 'string', 'description': 'Description mode only: return only records of this Type.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['tag', 'description'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of tag and description were given. `upstream_unreadable`: The language subtag registry could not be fetched or parsed to zero records. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'valid': {'type': 'boolean', 'description': 'Tag mode: true when well-formed, every subtag is registered and correctly placed, and no variant or singleton repeats.'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['subtag', 'kind', 'message'], 'properties': {'kind': {'enum': ['unknown', 'deprecated', 'wrong_position', 'variant_prefix_mismatch', 'suppress_script_redundant', 'extension_not_validated'], 'type': 'string', 'description': 'unknown (not registered for its position) and wrong_position (misplaced, repeated, or an extlang after the wrong language) make the tag invalid; the rest are advisory.'}, 'subtag': {'type': 'string', 'description': 'The subtag or sequence the issue is about.'}, 'message': {'type': 'string', 'description': 'What is wrong and what to use instead.'}}, 'description': 'One finding about the tag.', 'additionalProperties': False}, 'description': 'Tag mode: findings; empty for a clean tag.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'subtag', 'descriptions'], 'properties': {'type': {'enum': ['language', 'extlang', 'script', 'region', 'variant', 'grandfathered', 'redundant'], 'type': 'string', 'description': 'The record Type.'}, 'added': {'type': 'string', 'description': 'Date added, YYYY-MM-DD.'}, 'scope': {'type': 'string', 'description': 'macrolanguage, collection, special, or private-use.'}, 'subtag': {'type': 'string', 'description': 'Subtag; the whole tag for grandfathered/redundant; a range such as "qaa..qtz".'}, 'comments': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Comments values.'}, 'prefixes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Prefix values: the tags this extlang or variant follows.'}, 'deprecated': {'type': 'string', 'description': 'Date deprecated, YYYY-MM-DD; still valid, but prefer preferred_value.'}, 'descriptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Description values; empty when unregistered.'}, 'macrolanguage': {'type': 'string', 'description': 'Encompassing macrolanguage, e.g. "zh".'}, 'preferred_value': {'type': 'string', 'description': 'The subtag or tag to use instead.'}, 'suppress_script': {'type': 'string', 'description': 'Script subtag this language normally omits, e.g. "Latn".'}}, 'description': 'One registry record.', 'additionalProperties': False}, 'description': 'Description mode: matching records, exact description matches first, then registry order.'}, 'subtags': {'type': 'array', 'items': {'type': 'object', 'required': ['subtag', 'position', 'registered', 'descriptions'], 'properties': {'added': {'type': 'string', 'description': 'Date added, YYYY-MM-DD.'}, 'scope': {'type': 'string', 'description': 'macrolanguage, collection, special, or private-use.'}, 'subtag': {'type': 'string', 'description': 'Subtag in canonical case; the whole sequence of an extension or private-use part; the whole tag for grandfathered/redundant.'}, 'comments': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Comments values.'}, 'position': {'enum': ['language', 'extlang', 'script', 'region', 'variant', 'extension', 'privateuse', 'grandfathered', 'redundant'], 'type': 'string', 'description': 'Position in the tag; grandfathered/redundant for a whole-tag record.'}, 'prefixes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Prefix values: the tags this extlang or variant follows.'}, 'deprecated': {'type': 'string', 'description': 'Date deprecated, YYYY-MM-DD; still valid, but prefer preferred_value.'}, 'registered': {'type': 'boolean', 'description': 'True when a record covers the subtag at this position (private-use ranges count); always false for extension and private-use parts.'}, 'descriptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Description values; empty when unregistered.'}, 'macrolanguage': {'type': 'string', 'description': 'Encompassing macrolanguage, e.g. "zh".'}, 'preferred_value': {'type': 'string', 'description': 'The subtag or tag to use instead.'}, 'suppress_script': {'type': 'string', 'description': 'Script subtag this language normally omits, e.g. "Latn".'}}, 'description': 'One part of the tag.', 'additionalProperties': False}, 'description': 'Tag mode: the parts in order, after any whole-tag record; parsing stops at the first part the syntax cannot place.'}, 'tag_input': {'type': 'string', 'description': 'Tag mode: the tag as read, after underscores became hyphens.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}, 'well_formed': {'type': 'boolean', 'description': 'Tag mode: true when the tag follows RFC 5646 syntax or is grandfathered.'}, 'canonical_tag': {'type': 'string', 'description': 'Tag mode, valid tags only: canonical form (preferred values applied, extlang reduced, case normalized).'}, 'also_registered_as': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'subtag', 'descriptions'], 'properties': {'type': {'enum': ['language', 'extlang', 'script', 'region', 'variant', 'grandfathered', 'redundant'], 'type': 'string', 'description': 'The record Type.'}, 'added': {'type': 'string', 'description': 'Date added, YYYY-MM-DD.'}, 'scope': {'type': 'string', 'description': 'macrolanguage, collection, special, or private-use.'}, 'subtag': {'type': 'string', 'description': 'Subtag; the whole tag for grandfathered/redundant; a range such as "qaa..qtz".'}, 'comments': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Comments values.'}, 'prefixes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Prefix values: the tags this extlang or variant follows.'}, 'deprecated': {'type': 'string', 'description': 'Date deprecated, YYYY-MM-DD; still valid, but prefer preferred_value.'}, 'descriptions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Description values; empty when unregistered.'}, 'macrolanguage': {'type': 'string', 'description': 'Encompassing macrolanguage, e.g. "zh".'}, 'preferred_value': {'type': 'string', 'description': 'The subtag or tag to use instead.'}, 'suppress_script': {'type': 'string', 'description': 'Script subtag this language normally omits, e.g. "Latn".'}}, 'description': 'One registry record.', 'additionalProperties': False}, 'description': 'Tag mode, single-subtag input: records of other types under the same subtag, e.g. region "TW" beside language "tw".'}}, 'additionalProperties': False}
iana_lookup_media_type
Look up a media type
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'type': 'string', 'pattern': '^[a-z0-9][a-z0-9!#$&^_.+-]{0,126}\\/[a-z0-9][a-z0-9!#$&^_.+-]{0,126}$', 'description': 'Full media type, case-insensitive, e.g. "application/json" ("; charset=utf-8" and other parameters are dropped). Pass this or keyword, not both.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'keyword': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words 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_level': {'enum': ['application', 'audio', 'example', 'font', 'haptics', 'image', 'message', 'model', 'multipart', 'text', 'video'], 'type': 'string', 'description': 'Keep only types under this top-level type, e.g. "image". Keyword mode only.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'media_types', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['type', 'keyword'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of type and keyword were given. `upstream_unreadable`: The media type registry file could not be fetched or parsed. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a registered media type matched.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'media_types': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'top_level', 'subtype', 'status', 'template_url', 'references'], 'properties': {'type': {'type': 'string', 'description': 'type/subtype in registry casing, e.g. "application/json".'}, 'status': {'enum': ['current', 'deprecated', 'obsoleted'], 'type': 'string', 'description': 'From the registry annotation (OBSOLETE(D), DEPRECATED); else current.'}, 'subtype': {'type': 'string', 'description': 'Subtype, e.g. "json".'}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'template': {'type': 'object', 'required': ['fetched'], 'properties': {'fetched': {'type': 'boolean', 'description': 'False when the template could not be read.'}, 'available': {'type': 'boolean', 'description': 'True when a template was read; false when IANA publishes no registration template for this type, so its references are its defining documents. Absent when fetched is false.'}, 'intended_usage': {'type': 'string', 'description': 'The "Intended usage" statement, e.g. "COMMON".'}, 'file_extensions': {'type': 'string', 'description': 'The "File extension(s)" statement as written, e.g. ".json".'}, 'deprecated_aliases': {'type': 'string', 'description': 'The "Deprecated alias names for this type" statement.'}}, 'description': 'Type mode: the registration template read; each statement absent when the template lacks it.', 'additionalProperties': False}, 'top_level': {'type': 'string', 'description': 'Top-level type, e.g. "application".'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'Defining references.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}, 'replaced_by': {'type': 'string', 'description': 'The replacement type the annotation names.'}, 'status_note': {'type': 'string', 'description': 'The status annotation, e.g. "OBSOLETED in favor of text/javascript".'}, 'template_url': {'type': 'string', 'description': 'Registration template URL.'}}, 'description': 'One registered media type.', 'additionalProperties': False}, 'description': 'Matching media types: exact name hits first, then registry order.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}, 'normalized_type': {'type': 'string', 'description': 'Type mode: the type looked up, lowercased, parameters removed.'}}, 'additionalProperties': False}
iana_lookup_pen
Look up a Private Enterprise Number
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'pen': {'type': 'string', 'pattern': '^(?:\\d{1,9}|1\\.3\\.6\\.1\\.4\\.1\\.\\d{1,9}(?:\\.\\d{1,10}){0,64})$', 'description': 'Enterprise 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.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of organization matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'organization': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words 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.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'enterprises', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['pen', 'organization'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of pen and organization were given. `upstream_unreadable`: The enterprise number file could not be fetched or parsed to zero records. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a returned number is assigned to an organization.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'sub_arcs': {'type': 'string', 'description': 'Arcs below the enterprise number, e.g. "1.2"; the enterprise assigns these.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'enterprises': {'type': 'array', 'items': {'type': 'object', 'required': ['number', 'oid', 'state'], 'properties': {'oid': {'type': 'string', 'description': 'The enterprise OID prefix, e.g. "1.3.6.1.4.1.32473".'}, 'state': {'enum': ['assigned', 'reserved', 'unassigned'], 'type': 'string', 'description': 'reserved ("Reserved"), unassigned ("Unassigned" or "---none---"), else assigned.'}, 'number': {'type': 'number', 'description': 'The Private Enterprise Number.'}, 'organization': {'type': 'string', 'description': 'Organization line; absent when withheld or missing.'}, 'organization_withheld': {'type': 'boolean', 'description': 'True when the line mixes in contact details and is withheld.'}}, 'description': 'One enterprise number entry.', 'additionalProperties': False}, 'description': 'Matching entries: exact organization-name hits first, then number order.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}, 'requested_oid': {'type': 'string', 'description': 'The OID as requested, when it named arcs below the enterprise number.'}}, 'additionalProperties': False}
iana_lookup_port
Look up a port assignment
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'port': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Port number, 0â\x80\x9365535 (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.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'keyword': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against service names and descriptions, e.g. "network time". Pass exactly one of port, service, or keyword.'}, 'service': {'type': 'string', 'pattern': '^[A-Za-z0-9+*/._-]{1,15}$', 'description': 'Exact service name, case-insensitive, up to 15 characters, e.g. "postgresql" or "whois++". Pass exactly one of port, service, or keyword.'}, 'transport': {'enum': ['tcp', 'udp', 'sctp', 'dccp'], 'type': 'string', 'description': 'Keep 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.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'assignments', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['port', 'service', 'keyword'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: None, or more than one, of port, service, and keyword was given. `upstream_unreadable`: The port registry file could not be fetched, was larger than this server accepts, or parsed to zero records. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a returned row has a registered service name.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'port_class': {'type': 'object', 'required': ['name', 'range'], 'properties': {'name': {'enum': ['system', 'user', 'dynamic'], 'type': 'string', 'description': 'RFC 6335 port class.'}, 'range': {'type': 'string', 'description': 'The class range, e.g. "0-1023".'}}, 'description': "Port mode: the requested port's class.", 'additionalProperties': False}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'assignments': {'type': 'array', 'items': {'type': 'object', 'required': ['state', 'references'], 'properties': {'port': {'type': 'number', 'description': 'Port number of a single-port row.'}, 'notes': {'type': 'string', 'description': 'Registry note.'}, 'state': {'enum': ['assigned', 'reserved', 'unassigned', 'unnamed'], 'type': 'string', 'description': 'assigned (service name present), reserved or unassigned (the description is that word), else unnamed (e.g. "De-registered").'}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'transport': {'type': 'string', 'description': 'tcp, udp, sctp, or dccp; usually absent on range rows.'}, 'port_range': {'type': 'string', 'description': 'Range of a range row, e.g. "1002-1007".'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'Defining references.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}, 'description': {'type': 'string', 'description': 'Registry description.'}, 'service_name': {'type': 'string', 'description': 'Registered service name; absent on range and unnamed rows.'}, 'unauthorized_use': {'type': 'string', 'description': 'Known unauthorized use, as recorded.'}}, 'description': 'One registry row.', 'additionalProperties': False}, 'description': 'Matching rows. Port mode: exact rows, then range rows containing the port. Other modes: ascending by port, port-less rows last.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}}, 'additionalProperties': False}
iana_lookup_uri_scheme
Look up a URI scheme
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x93100. Default 25.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of keyword matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}, 'scheme': {'type': 'string', 'pattern': '^[a-z][a-z0-9+.-]{0,63}$', 'description': 'Exact scheme name, case-insensitive, e.g. "https" (a trailing ":" or "://" is ignored). Pass this or keyword, not both.'}, 'status': {'enum': ['permanent', 'provisional', 'historical'], 'type': 'string', 'description': 'Keep only schemes with this registration status. Applies to both modes.'}, 'keyword': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words matched as whole tokens against scheme names and descriptions, e.g. "websocket". Pass this or scheme, not both.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'found', 'schemes', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'mode': {'enum': ['scheme', 'keyword'], 'type': 'string', 'description': 'Which lookup ran.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_required', 'upstream_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `mode_required`: Neither or both of scheme and keyword were given. `upstream_unreadable`: The URI scheme registry file could not be fetched or parsed. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when a registered scheme matched.'}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'schemes': {'type': 'array', 'items': {'type': 'object', 'required': ['scheme', 'references'], 'properties': {'notes': {'type': 'string', 'description': 'Registry notes.'}, 'scheme': {'type': 'string', 'description': 'The registered scheme name.'}, 'status': {'type': 'string', 'description': 'Lowercased: permanent, provisional, or historical.'}, 'updated': {'type': 'string', 'description': 'Last-updated date.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'description': 'E.g. "RFC 9110", a draft name, a registry id, or a URL.'}, 'url': {'type': 'string', 'description': 'URL of the reference.'}, 'type': {'enum': ['rfc', 'draft', 'uri', 'registry', 'rfc-errata', 'note', 'text'], 'type': 'string', 'description': 'Reference kind.'}, 'label': {'type': 'string', 'description': 'Label text, when it adds to id and section.'}, 'section': {'type': 'string', 'description': 'Section, e.g. "15.5.5".'}}, 'description': 'A defining reference.', 'additionalProperties': False}, 'description': 'Defining references.'}, 'registered': {'type': 'string', 'description': 'Registration date.'}, 'description': {'type': 'string', 'description': 'Registry description.'}, 'status_note': {'type': 'string', 'description': 'Annotation on the registered name, e.g. "OBSOLETE".'}, 'template_url': {'type': 'string', 'description': 'Registration template URL, when published.'}, 'well_known_uri_support': {'type': 'string', 'description': 'Reference defining well-known URI support, when any.'}}, 'description': 'One registered URI scheme.', 'additionalProperties': False}, 'description': 'Matching schemes: exact scheme hits first, then registry order.'}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}}, 'additionalProperties': False}
iana_search_registries
Search IANA registries
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 15, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of results to return, 1â\x80\x9350. Default 15.'}, 'query': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Words 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.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of matches to skip; pass the next_offset of the previous response to get the next page. Default 0.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['registries', 'source', 'totalCount', 'shown', 'cap', 'truncated']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit applied.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['index_unreadable', 'pacer_shed'], 'description': "Machine-readable failure mode. Declared by this tool: `index_unreadable`: The IANA protocol index page could not be read, or it listed far fewer registries than a complete index holds, and no good copy up to 7 days old is cached. `pacer_shed`: This server's own iana.org request queue is too full for the call to start in time. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Results returned.'}, 'notice': {'type': 'string', 'description': 'Guidance on a miss, a cut list, or another condition.'}, 'source': {'type': 'object', 'required': ['registry_id', 'url', 'fetched_at', 'stale'], 'properties': {'url': {'type': 'string', 'description': 'The file fetched from iana.org.'}, 'stale': {'type': 'boolean', 'description': 'True when a refresh failed and a cached copy up to 7 days old answered.'}, 'fetched_at': {'type': 'string', 'description': 'ISO 8601 time of the last successful fetch or revalidation.'}, 'registry_id': {'type': 'string', 'description': 'Id of the registry file that answered.'}, 'registry_updated': {'type': 'string', 'description': "The registry's own last-updated date; absent for the protocol index."}}, 'description': 'Provenance and freshness of the answer.', 'additionalProperties': False}, 'truncated': {'type': 'boolean', 'description': 'True when more matches exist than were returned.'}, 'registries': {'type': 'array', 'items': {'type': 'object', 'required': ['registry_id', 'title', 'category', 'defining_documents', 'page_url', 'xml_url'], 'properties': {'title': {'type': 'string', 'description': 'Registry or sub-registry title.'}, 'xml_url': {'type': 'string', 'description': 'The registry XML file.'}, 'category': {'type': 'string', 'description': 'Protocol category in the index; an entry listed under several joins them with "; ".'}, 'page_url': {'type': 'string', 'description': 'The registry page on iana.org.'}, 'registry_id': {'type': 'string', 'description': 'Pass as registry to iana_get_registry_records.'}, 'subregistry_id': {'type': 'string', 'description': 'Pass as subregistry to iana_get_registry_records.'}, 'defining_documents': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Document id, e.g. "RFC8446".'}, 'url': {'type': 'string', 'description': 'Link via iana.org.'}, 'title': {'type': 'string', 'description': 'Document title.'}}, 'description': 'A defining document.', 'additionalProperties': False}, 'description': 'Documents that define the registry.'}, 'registration_procedure': {'type': 'string', 'description': 'Registration procedure, e.g. "IETF Review".'}}, 'description': 'One index entry.', 'additionalProperties': False}, 'description': 'Matching index entries: exact id hits first, then the closest titles.'}, 'totalCount': {'type': 'number', 'description': 'Matches before the limit was applied.'}, 'next_offset': {'type': 'number', 'description': 'Pass as offset for the next page; absent on the last.'}}, 'additionalProperties': False}
Añadido
iana_get_registry_records
3 de October de 2026 a las 02:40
Añadido
iana_search_registries
3 de October de 2026 a las 02:40
Añadido
iana_get_rfc_status
3 de October de 2026 a las 02:40
Añadido
iana_lookup_language_tag
3 de October de 2026 a las 02:40
Añadido
iana_lookup_pen
3 de October de 2026 a las 02:40
Añadido
iana_lookup_uri_scheme
3 de October de 2026 a las 02:40
Añadido
iana_lookup_http_field
3 de October de 2026 a las 02:40
Añadido
iana_lookup_http_status
3 de October de 2026 a las 02:40
Añadido
iana_lookup_media_type
3 de October de 2026 a las 02:40
Añadido
iana_lookup_port
3 de October de 2026 a las 02:40