iana-registries-mcp-server
Ce que fait ce MCP
Looks up IANA protocol registry records, ports, MIME types, HTTP fields and status codes, URI schemes, language tags, PENs, and RFC statuses.
Outils
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Schéma d’entrée
{'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}
Schéma de sortie
{'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}
Modifications récentes des outils
Serveurs MCP similaires
cypher-mcp
Provides named Cypher graph queries and code-orientation tools for tracing capabilities, symbols, invariants, provenance, changes…
canton-ccpedia
Searches and explains Canton Network and Daml documentation, governance proposals, forums, code examples, APIs, releases, and eco…
ALM X++ MCP Server
Supports D365 Finance and Operations development with X++ and AOT search, code analysis, Azure DevOps workflows, telemetry querie…
Kaiku
Manages team issues, comments, attachments, projects, wiki pages, and related development workflows.
api-evangelist
Provides API governance analysis, OpenAPI overlays and version diffs, security-sensitive field classification, code samples, matu…
Forge Engine
Manages software design specifications, systems, milestones, tasks, code mappings, project decisions, UI screens, and implementat…
Avalanche AVAX MCP
Searches and retrieves Avalanche documentation, community proposals, CLI guidance, Builder Console workflows, blockchain identifi…
Github
Reads public GitHub repository files, releases, commits, issues, repository metadata, user profiles, and trending repositories.