toolkit-mcp-server
What this MCP does
Generates identifiers and QR codes, encodes values, computes hashes, geolocates IPs, and provides limited host diagnostics.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['operation', 'encoding', 'value'], 'properties': {'value': {'type': 'string', 'description': 'The value to transform â\x80\x94 raw text for encode, an encoded string for decode. Whitespace is ignored when decoding hex, base64, or base64url; a url value is taken literally.'}, 'encoding': {'enum': ['base64', 'base64url', 'hex', 'url'], 'type': 'string', 'description': 'The encoding to apply: base64, URL-safe base64url, hex, or URL percent-encoding.'}, 'operation': {'enum': ['encode', 'decode'], 'type': 'string', 'description': '"encode" transforms text into the encoding; "decode" recovers the bytes from an encoded value.'}, 'outputEncoding': {'enum': ['utf8', 'hex', 'base64'], 'type': 'string', 'description': 'Decode only: how the recovered bytes are returned. utf8 (used when omitted) returns text and fails when the bytes are not valid UTF-8; hex and base64 return the raw bytes re-encoded, losslessly. Rejected when operation is "encode".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['encoding', 'operation', 'result']}, {'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': ['decode_failed', 'decode_not_utf8', 'output_encoding_not_applicable'], 'description': 'Machine-readable failure mode. Declared by this tool: `decode_failed`: operation is "decode" but value is malformed for the chosen encoding. `decode_not_utf8`: operation is "decode", outputEncoding is utf8 (or omitted), and the decoded bytes are not valid UTF-8 text. `output_encoding_not_applicable`: operation is "encode" and outputEncoding was supplied; it selects how decoded bytes are returned. 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': {}}, 'result': {'type': 'string', 'description': 'The transformed value: encoded text for encode; for decode, the recovered bytes as UTF-8 text, hex, or base64 per outputEncoding.'}, 'encoding': {'enum': ['base64', 'base64url', 'hex', 'url'], 'type': 'string', 'description': 'The encoding that was applied.'}, 'operation': {'enum': ['encode', 'decode'], 'type': 'string', 'description': 'The operation that was performed.'}, 'outputEncoding': {'enum': ['utf8', 'hex', 'base64'], 'type': 'string', 'description': 'How result renders the decoded bytes: utf8 text, hex, or base64. Present for operation "decode".'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['uuid_v4', 'uuid_v7', 'ulid'], 'type': 'string', 'default': 'uuid_v4', 'description': 'Identifier format: uuid_v4 (random), uuid_v7 (time-ordered), or ulid (sortable Crockford-base32).'}, 'count': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1, 'description': 'How many identifiers to mint (1â\x80\x931000). The full batch is always returned.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['type', 'ids', 'count']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ids': {'type': 'array', 'items': {'type': 'string', 'description': 'A single minted identifier.'}, 'description': 'The minted identifiers â\x80\x94 exactly count of them, in mint order; for uuid_v7 and ulid that order is strictly increasing (sorted by creation), with random gaps between ids minted in the same millisecond.'}, 'type': {'enum': ['uuid_v4', 'uuid_v7', 'ulid'], 'type': 'string', 'description': 'The identifier format that was minted.'}, 'count': {'type': 'number', 'description': 'The number of identifiers minted (equals the requested count).'}, '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', 'description': 'Machine-readable failure mode.'}, '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': {}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data'], 'properties': {'data': {'type': 'string', 'maxLength': 2953, 'minLength': 1, 'description': 'The text or URL to encode, stored as UTF-8. Capacity is counted in bytes: 2953 UTF-8 bytes is the absolute ceiling (QR version 40, level L, byte mode). The 2953-character limit here is only an upper bound, since a non-ASCII character takes 2â\x80\x934 bytes. Usable capacity drops at higher errorCorrection levels, so over-capacity data is rejected with a typed data_too_large error rather than a generic failure.'}, 'scale': {'type': 'integer', 'default': 4, 'maximum': 32, 'minimum': 1, 'description': 'Pixels per module for svg (its width and height) and png_base64. Ignored for terminal. png_base64 also bounds the whole image at 2048 px per side, so a dense symbol or a wide margin admits a lower scale than 32 there.'}, 'format': {'enum': ['svg', 'png_base64', 'terminal'], 'type': 'string', 'default': 'svg', 'description': 'Output format: svg markup, png_base64 (raster bytes), or terminal (plain Unicode half-blocks, drawn for a dark background).'}, 'margin': {'type': 'integer', 'default': 4, 'maximum': 20, 'minimum': 0, 'description': 'Quiet-zone width in modules around the symbol. The spec recommends 4.'}, 'errorCorrection': {'enum': ['L', 'M', 'Q', 'H'], 'type': 'string', 'default': 'M', 'description': 'Error-correction level: L (~7% recoverable) to H (~30%). Higher tolerance lowers data capacity.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['format', 'content', 'version']}, {'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': ['data_too_large', 'raster_too_large'], 'description': 'Machine-readable failure mode. Declared by this tool: `data_too_large`: data exceeds the QR capacity for the chosen errorCorrection level and encoding mode. `raster_too_large`: format is png_base64 and (modules + 2 Ã\x97 margin) Ã\x97 scale exceeds the pixel budget. 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': {}}, 'format': {'enum': ['svg', 'png_base64', 'terminal'], 'type': 'string', 'description': 'The format that was produced.'}, 'content': {'type': 'string', 'description': 'The QR artifact: SVG markup, the terminal half-block grid (newline-separated rows), or base64 PNG bytes for png_base64.'}, 'version': {'type': 'number', 'description': 'QR symbol version (1â\x80\x9340); higher versions hold denser data and indicate denser content.'}, 'mimeType': {'enum': ['image/svg+xml', 'image/png'], 'type': 'string', 'description': 'MIME type of content for image formats. Absent for the terminal format.'}, 'byteLength': {'type': 'number', 'description': 'Decoded byte size of the PNG. Present only for png_base64.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['target'], 'properties': {'target': {'anyOf': [{'type': 'string', 'format': 'ipv4', 'pattern': '^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$', 'description': 'A raw IPv4 address.'}, {'type': 'string', 'format': 'ipv6', 'pattern': '^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$', 'description': 'A raw IPv6 address.'}, {'type': 'string', 'pattern': '^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$', 'description': 'A dotted hostname, e.g. "example.com".'}], 'description': 'A public IPv4/IPv6 address or a hostname (e.g. "8.8.8.8" or "example.com").'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['target', 'resolvedIp', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'asn': {'type': 'string', 'maxLength': 256, 'description': 'Autonomous System number, e.g. "AS15169". Absent on providers that omit it.'}, 'org': {'type': 'string', 'maxLength': 256, 'description': 'Owning organization or ISP, e.g. "Google LLC". Absent when unknown.'}, 'city': {'type': 'string', 'maxLength': 256, 'description': 'City name. Absent when unknown.'}, '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': ['unresolvable_host', 'private_target'], 'description': 'Machine-readable failure mode. Declared by this tool: `unresolvable_host`: A hostname target failed DNS resolution. `private_target`: The target resolves to a private/reserved IP with no public geolocation. 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': {}}, 'proxy': {'type': 'boolean', 'description': 'True when the address is a known proxy, VPN, or Tor exit â\x80\x94 the location describes the exit node, not the user. Absent when the provider does not report it.'}, 'mobile': {'type': 'boolean', 'description': 'True when the address belongs to a mobile carrier network, where NAT can place the location far from the device. Absent when unreported.'}, 'region': {'type': 'string', 'maxLength': 256, 'description': 'Region or state name. Absent when unknown.'}, 'source': {'type': 'string', 'description': 'The provider that answered the lookup, e.g. "ip-api".'}, 'target': {'type': 'string', 'description': 'The target as supplied (IP or hostname).'}, 'country': {'type': 'string', 'maxLength': 256, 'description': 'Country name. Absent when the provider does not report it.'}, 'hosting': {'type': 'boolean', 'description': 'True when the address belongs to a hosting or datacenter network, so the location is a facility rather than a person. Absent when unreported.'}, 'latitude': {'type': 'number', 'description': 'Latitude in decimal degrees. Absent when unknown.'}, 'timezone': {'type': 'string', 'maxLength': 256, 'description': 'IANA timezone, e.g. "America/Los_Angeles". Absent when unknown.'}, 'longitude': {'type': 'number', 'description': 'Longitude in decimal degrees. Absent when unknown.'}, 'resolvedIp': {'type': 'string', 'description': 'The IP that was actually located (a supplied hostname is resolved to this first).'}, 'countryCode': {'type': 'string', 'maxLength': 256, 'description': 'ISO 3166-1 alpha-2 country code. Absent when unknown.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['value'], 'properties': {'value': {'type': 'string', 'description': 'The data to hash, interpreted per inputEncoding (raw text by default).'}, 'expected': {'type': 'string', 'description': 'The digest to compare against, as hex (any case), standard base64, or SRI (<algorithm>-<base64>); the form is recognized from its shape at the algorithm\'s digest length, and a string of only hex digits is always read as hex. An SRI value may carry several space-separated entries: entries for other algorithms are skipped, and it matches when any entry for algorithm matches. Supplying it with operation omitted runs a compare; it is rejected with operation "generate".'}, 'algorithm': {'enum': ['sha256', 'sha384', 'sha512', 'sha1', 'md5'], 'type': 'string', 'default': 'sha256', 'description': 'Digest algorithm. sha256 (default), sha384, or sha512 for security; md5/sha1 are checksum/compat only â\x80\x94 not for security.'}, 'operation': {'enum': ['generate', 'compare'], 'type': 'string', 'description': '"generate" produces a digest; "compare" constant-time-checks value against expected. When omitted, resolves to "compare" if expected is supplied and "generate" otherwise.'}, 'inputEncoding': {'enum': ['utf8', 'hex', 'base64'], 'type': 'string', 'default': 'utf8', 'description': 'How value is decoded before hashing: utf8 text, hex, or base64.'}, 'digestEncoding': {'enum': ['hex', 'base64', 'sri'], 'type': 'string', 'default': 'hex', 'description': 'Form of the generated digest: lowercase hex (default), standard base64, or sri (<algorithm>-<base64>, sha256/sha384/sha512 only). Applies to operation "generate".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['algorithm', 'operation']}, {'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': ['missing_expected', 'expected_without_compare', 'expected_malformed', 'expected_length_mismatch', 'expected_algorithm_mismatch', 'sri_unsupported_algorithm', 'invalid_input_encoding'], 'description': 'Machine-readable failure mode. Declared by this tool: `missing_expected`: operation is "compare" but no expected digest was supplied. `expected_without_compare`: operation is "generate" but an expected digest was also supplied, so it would be ignored. `expected_malformed`: expected is not a hex, standard base64, or sha256/sha384/sha512 SRI digest, or an SRI value holds a token that is not an SRI entry. `expected_length_mismatch`: expected is a recognized digest form but its length does not match the algorithm, so compare would always fail. `expected_algorithm_mismatch`: expected is SRI and none of its entries names the chosen algorithm. `sri_unsupported_algorithm`: digestEncoding is "sri" and algorithm is md5 or sha1, which SRI does not define. `invalid_input_encoding`: value is not valid for the declared inputEncoding (e.g. non-hex characters with inputEncoding "hex"). 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': {}}, 'digest': {'type': 'string', 'description': 'Digest of value in the requested digestEncoding: lowercase hex, base64, or <algorithm>-<base64>. Present for operation "generate".'}, 'matches': {'type': 'boolean', 'description': 'Constant-time equality of the computed digest against expected. Present for operation "compare".'}, 'algorithm': {'enum': ['sha256', 'sha384', 'sha512', 'sha1', 'md5'], 'type': 'string', 'description': 'The algorithm used.'}, 'operation': {'enum': ['generate', 'compare'], 'type': 'string', 'description': 'The operation performed, after resolving an omitted operation.'}, 'lengthInBytes': {'type': 'number', 'description': 'Digest size in bytes (32 for sha256, 48 for sha384, 64 for sha512, 20 for sha1, 16 for md5). Present for "generate".'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
hyperion
Acts as a paid MCP tool marketplace and utility gateway with server discovery, HTTP and JavaScript tools, research, data conversi…
Vee3
Manages Clerk authentication infrastructure, including users, organizations, domains, sessions, tokens, OAuth, SSO, machines, per…
IA-QA — 130+ QA & Dev Tools for AI Agents
Provides deterministic QA, evaluation, testing, code analysis, prompt and RAG checks, model comparison, and web security diagnost…
validoria-mcp
Runs continuous website, API, and webshop tests covering security, SEO, performance, accessibility, browser journeys, and inciden…
HubVibe: Pay-per-Call Tools for AI Agents: Web Search, Email Verify, KYC, Stocks, Crypto, News, Data
Offers paid utilities for web audits, HTTP fetching and extraction, BigQuery analysis, LLM processing, code execution, blockchain…
developer-tools
Provides general-purpose developer utilities for encoding, hashing, encryption, JSON, HTML, CSS, networking, and related data tra…
Qiniso
Provides deterministic formatting, parsing, holiday and tax lookups, address handling, and checksum or structure validation for i…
ContrastAPI
Provides security research and assessment tools covering CVEs, IOCs, dependencies, secrets, injection risks, HTTP headers, domain…