{"id":306367,"recorded_at":"2026-10-26T23:22:28.724303Z","observed_at":"2026-10-26T23:22:28.724241Z","subject_kind":"endpoint","subject":"ef15d20f-ac6d-4111-a97a-c183e461c542","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":193,"tools":[{"description":"Base64-decode to UTF-8.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"base64_decode"},{"description":"Base64-encode UTF-8.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"base64_encode"},{"description":"Base64url-decode to UTF-8.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"base64url_decode"},{"description":"Base64url-encode UTF-8 (no padding, URL-safe).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"base64url_encode"},{"description":"Bcrypt-hash a password for storage.","inputSchema":{"properties":{"password":{"type":"string"},"rounds":{"default":12,"maximum":15,"minimum":4,"type":"integer"}},"required":["password"],"type":"object"},"name":"bcrypt_hash"},{"description":"Verify password against bcrypt hash.","inputSchema":{"properties":{"hash":{"type":"string"},"password":{"type":"string"}},"required":["password","hash"],"type":"object"},"name":"bcrypt_verify"},{"description":"Parse Keep-a-Changelog style markdown into version sections.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"changelog_parse"},{"description":"Calculate IPv4/IPv6 network info from CIDR (hosts, broadcast, private).","inputSchema":{"properties":{"cidr":{"description":"e.g. 192.168.1.0/24","type":"string"}},"required":["cidr"],"type":"object"},"name":"cidr_calc"},{"description":"Check if IP address falls within a CIDR range.","inputSchema":{"properties":{"cidr":{"type":"string"},"ip":{"type":"string"}},"required":["cidr","ip"],"type":"object"},"name":"cidr_contains"},{"description":"Extract fenced code blocks from markdown (language + code).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"code_fence_extract"},{"description":"WCAG contrast ratio between two hex colors (AA/AAA). When: WCAG contrast ratio for UI color pairs.","inputSchema":{"properties":{"bg":{"type":"string"},"fg":{"type":"string"}},"required":["fg","bg"],"type":"object"},"name":"color_contrast"},{"description":"Convert color between hex, rgb(), and hsl().","inputSchema":{"properties":{"color":{"description":"hex, rgb(), or hsl()","type":"string"},"to_format":{"default":"all","enum":["all","hex","rgb","hsl"],"type":"string"}},"required":["color"],"type":"object"},"name":"color_convert"},{"description":"Validate docker-compose YAML and flag privileged/host-network/secret env issues.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"compose_validate"},{"description":"Parse Content-Type header into mime/charset/params.","inputSchema":{"properties":{"header":{"type":"string"}},"required":["header"],"type":"object"},"name":"content_type_parse"},{"description":"Lint Conventional Commits message (feat/fix/chore…).","inputSchema":{"properties":{"message":{"type":"string"}},"required":["message"],"type":"object"},"name":"conventional_commit_lint"},{"description":"Parse Cookie request header into name/value map. When: Parse Cookie request headers.","inputSchema":{"properties":{"header":{"type":"string"}},"required":["header"],"type":"object"},"name":"cookie_header_parse"},{"description":"Check CORS Allow-Origin vs credentials for unsafe combinations.","inputSchema":{"properties":{"allow_credentials":{"default":false,"type":"boolean"},"allow_origin":{"type":"string"},"origin":{"type":"string"}},"required":["allow_origin"],"type":"object"},"name":"cors_check"},{"description":"Human-readable natural language description of cron expression (EN + ZH).","inputSchema":{"properties":{"expr":{"type":"string"}},"required":["expr"],"type":"object"},"name":"cron_describe"},{"description":"Check if a cron expression matches a specific datetime (ISO-8601).","inputSchema":{"properties":{"at_time":{"description":"ISO-8601 datetime","type":"string"},"expr":{"type":"string"},"timezone":{"default":"UTC","type":"string"}},"required":["expr","at_time"],"type":"object"},"name":"cron_matches"},{"description":"Preview next N execution times for a 5-field cron expression.","inputSchema":{"properties":{"count":{"default":5,"maximum":20,"minimum":1,"type":"integer"},"expr":{"type":"string"},"from_time":{"description":"Optional unix or ISO start time","type":"string"},"timezone":{"default":"UTC","type":"string"}},"required":["expr"],"type":"object"},"name":"cron_next_runs"},{"description":"Parse 5-field cron into named fields (minute hour dom month dow).","inputSchema":{"properties":{"expr":{"type":"string"}},"required":["expr"],"type":"object"},"name":"cron_parse"},{"description":"Validate cron field syntax and value ranges (minute 0-59, hour 0-23, etc.).","inputSchema":{"properties":{"expr":{"type":"string"}},"required":["expr"],"type":"object"},"name":"cron_semantic_validate"},{"description":"Check cron string has exactly five fields.","inputSchema":{"properties":{"expr":{"type":"string"}},"required":["expr"],"type":"object"},"name":"cron_validate"},{"description":"Batch semantic validate of 5-field cron expressions.","inputSchema":{"properties":{"expressions":{"items":{"type":"string"},"maxItems":30,"type":"array"}},"required":["expressions"],"type":"object"},"name":"cron_validate_batch"},{"description":"Parse Content-Security-Policy header and flag unsafe directives.","inputSchema":{"properties":{"header":{"type":"string"}},"required":["header"],"type":"object"},"name":"csp_parse"},{"description":"Convert CSV text to JSON array of row objects. When: Convert CSV rows → JSON array of objects.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"csv_to_json"},{"description":"Validate CSV structure — consistent column counts / header. When: Check CSV column consistency before import.","inputSchema":{"properties":{"delimiter":{"default":",","type":"string"},"has_header":{"default":true,"type":"boolean"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"csv_validate"},{"description":"Convert amount between currencies using latest ECB rates.","inputSchema":{"properties":{"amount":{"type":"number"},"from_currency":{"type":"string"},"to_currency":{"type":"string"}},"required":["amount","from_currency","to_currency"],"type":"object"},"name":"currency_convert"},{"description":"List supported fiat currencies (Frankfurter/ECB, no API key).","inputSchema":{"properties":{},"type":"object"},"name":"currency_list"},{"description":"Latest exchange rates (Frankfurter ECB data, no API key).","inputSchema":{"properties":{"base":{"default":"USD","type":"string"},"symbols":{"description":"Optional target currencies e.g. CNY, EUR","items":{"type":"string"},"type":"array"}},"type":"object"},"name":"currency_rates"},{"description":"Parse unix timestamp or ISO-8601 into UTC ISO + unix.","inputSchema":{"properties":{"value":{"type":"string"}},"required":["value"],"type":"object"},"name":"datetime_parse"},{"description":"Extract name@version from requirements/lockfile/go.mod/Cargo snippets. When: Extract name@version from lock/requirements snippets (best-effort).","inputSchema":{"properties":{"ecosystem":{"default":"auto","enum":["auto","pip","npm","go","cargo"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"dependency_versions_extract"},{"description":"DNS lookup for domain (A, AAAA, MX, TXT, NS, CNAME, SOA).","inputSchema":{"properties":{"domain":{"type":"string"},"record_type":{"default":"A","enum":["A","AAAA","MX","TXT","NS","CNAME","SOA","ANY"],"type":"string"}},"required":["domain"],"type":"object"},"name":"dns_lookup"},{"description":"Lint Dockerfile for common security/style issues (root user, curl|sh, secrets).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"dockerfile_lint"},{"description":"Parse domain into labels, TLD, registrable domain, subdomain. When: Split domain into subdomain/registrable/TLD (best-effort eTLD).","inputSchema":{"properties":{"domain":{"type":"string"}},"required":["domain"],"type":"object"},"name":"domain_parse"},{"description":"Parse duration (ISO-8601 PnDTnHnMnS or human 1h30m / 90s) to seconds. When: Parse ISO-8601 / human durations to seconds.","inputSchema":{"properties":{"value":{"type":"string"}},"required":["value"],"type":"object"},"name":"duration_parse"},{"description":"Validate .editorconfig syntax and common keys.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"editorconfig_validate"},{"description":"Validate email address format. When: Syntax-check a single email address.","inputSchema":{"properties":{"email":{"type":"string"}},"required":["email"],"type":"object"},"name":"email_validate"},{"description":"Diff two .env files — only_in_a / only_in_b / changed values. When: Diff two .env files for missing/changed keys.","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"env_diff"},{"description":"Parse .env / dotenv text into key-value variables.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"env_parse"},{"description":"Check .env text contains required keys (and non-empty values).","inputSchema":{"properties":{"required":{"items":{"type":"string"},"type":"array"},"text":{"type":"string"}},"required":["text","required"],"type":"object"},"name":"env_required_check"},{"description":"Extract email addresses from text. When: Pull email addresses from free text / logs.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"extract_emails"},{"description":"Extract HTTP/HTTPS URLs from arbitrary text.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"extract_urls"},{"description":"Parse YAML frontmatter from markdown (--- ... ---). When: Split YAML frontmatter from markdown body.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"frontmatter_parse"},{"description":"Parse git remote URL (ssh/https) into host/owner/repo. When: Parse git@ / https remotes into owner/repo.","inputSchema":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"name":"git_url_parse"},{"description":"Lint GitHub Actions workflow YAML (triggers, unpinned actions, curl|bash).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"github_actions_lint"},{"description":"Review .gitignore for common missing ignores (.env, node_modules, keys).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"gitignore_check"},{"description":"Match paths against .gitignore rules (ignore / negate). When: Test paths against .gitignore rules (best-effort).","inputSchema":{"properties":{"gitignore":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"}},"required":["paths","gitignore"],"type":"object"},"name":"gitignore_match"},{"description":"Match paths against glob patterns (gitignore-style fnmatch).","inputSchema":{"properties":{"paths":{"items":{"type":"string"},"type":"array"},"patterns":{"items":{"type":"string"},"type":"array"}},"required":["paths","patterns"],"type":"object"},"name":"glob_match_batch"},{"description":"List GraphQL query/mutation/subscription names and type defs. When: List GraphQL ops/types from a document (best-effort).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"graphql_operations_list"},{"description":"Diff two GraphQL schemas for removed types/fields (breaking changes).","inputSchema":{"properties":{"new":{"type":"string"},"old":{"type":"string"}},"required":["old","new"],"type":"object"},"name":"graphql_schema_diff"},{"description":"Validate GraphQL query or schema SDL syntax (parse only).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"graphql_validate"},{"description":"Compare two hash digests (case-insensitive).","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"hash_compare"},{"description":"MD5 hex digest of UTF-8 text. When: MD5 digest (non-crypto integrity / legacy checksums).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hash_md5"},{"description":"SHA256 hex digest.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hash_sha256"},{"description":"SHA512 hex digest.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hash_sha512"},{"description":"Hex string to UTF-8 text.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hex_decode"},{"description":"UTF-8 text to hex string.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hex_encode"},{"description":"HMAC sign message (sha1/sha256/sha512); hex or base64 output.","inputSchema":{"properties":{"algorithm":{"default":"sha256","type":"string"},"encoding":{"default":"hex","enum":["hex","base64"],"type":"string"},"message":{"type":"string"},"secret":{"type":"string"}},"required":["message","secret"],"type":"object"},"name":"hmac_sign"},{"description":"Verify HMAC signature (hex or base64).","inputSchema":{"properties":{"algorithm":{"default":"sha256","type":"string"},"message":{"type":"string"},"secret":{"type":"string"},"signature":{"type":"string"}},"required":["message","secret","signature"],"type":"object"},"name":"hmac_verify"},{"description":"Parse /etc/hosts style file into IP → hostnames entries. When: Parse /etc/hosts style IP→hostname maps.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"hosts_file_parse"},{"description":"Unescape HTML entities.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"html_decode"},{"description":"Escape HTML entities.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"html_encode"},{"description":"Scan HTML for XSS-prone patterns (javascript: URLs, inline handlers, eval). Note: best-effort / heuristic — not a full language parser.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"html_security_scan"},{"description":"Convert HTML to Markdown text. When: Convert HTML → markdown for docs the agent edits.","inputSchema":{"properties":{"html":{"type":"string"}},"required":["html"],"type":"object"},"name":"html_to_markdown"},{"description":"Fetch HTTP response headers (HEAD/GET) for URL.","inputSchema":{"properties":{"follow_redirects":{"default":true,"type":"boolean"},"method":{"default":"HEAD","enum":["HEAD","GET"],"type":"string"},"url":{"type":"string"}},"required":["url"],"type":"object"},"name":"http_headers_fetch"},{"description":"Parse raw HTTP request/response header block into map. When: Parse raw HTTP header blocks.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"http_headers_parse"},{"description":"Classify HTTP status codes into 2xx/3xx/4xx/5xx buckets.","inputSchema":{"properties":{"codes":{"items":{"type":["integer","string"]},"type":"array"}},"required":["codes"],"type":"object"},"name":"http_status_classify"},{"description":"Explain HTTP status code (e.g. 404, 429, 503).","inputSchema":{"properties":{"code":{"type":"integer"}},"required":["code"],"type":"object"},"name":"http_status_lookup"},{"description":"Format bytes to human size, or parse '1.5 GB' to bytes. When: Format or parse human byte sizes (1.5 GB).","inputSchema":{"properties":{"precision":{"default":2,"type":"integer"},"text":{"type":"string"},"value":{"type":"number"}},"type":"object"},"name":"human_bytes"},{"description":"Validate identifier for python/javascript/typescript (keywords + syntax).","inputSchema":{"properties":{"language":{"default":"python","enum":["python","javascript","typescript"],"type":"string"},"name":{"type":"string"}},"required":["name"],"type":"object"},"name":"identifier_validate"},{"description":"List imports from python/js source and flag duplicates. Note: best-effort / heuristic — not a full language parser.","inputSchema":{"properties":{"language":{"default":"python","enum":["python","javascript"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"import_list_analyze"},{"description":"Parse INI / simple key=value config into sections. When: Parse INI/section configs into structured maps.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"ini_parse"},{"description":"Geolocate public IP: country, city, lat/lon, timezone, ISP.","inputSchema":{"properties":{"ip":{"type":"string"}},"required":["ip"],"type":"object"},"name":"ip_geolocation"},{"description":"Detect IPv4/IPv6 and classify private/loopback/global. When: Classify IPv4/IPv6 and private/global.","inputSchema":{"properties":{"ip":{"type":"string"}},"required":["ip"],"type":"object"},"name":"ip_version_detect"},{"description":"Classify IP as private/loopback/link-local/global (SSRF helper).","inputSchema":{"properties":{"ip":{"type":"string"}},"required":["ip"],"type":"object"},"name":"ipv4_private_check"},{"description":"Assert JSONPath expressions against JSON (exists/equals/type) — agent self-check.","inputSchema":{"properties":{"assertions":{"items":{"properties":{"equals":{},"exists":{"type":"boolean"},"path":{"type":"string"},"type":{"type":"string"}},"required":["path"],"type":"object"},"type":"array"},"data":{"type":"string"}},"required":["data","assertions"],"type":"object"},"name":"json_assert_paths"},{"description":"Deep-compare two JSON documents and list differing paths.","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"json_equal"},{"description":"Flatten nested JSON to dot-key map. When: Flatten nested JSON keys before comparing or exporting.","inputSchema":{"properties":{"separator":{"default":".","type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_flatten"},{"description":"Pretty-print JSON with indent. When: Pretty-print JSON when the agent needs readable output.","inputSchema":{"properties":{"indent":{"default":2,"type":"integer"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_format"},{"description":"Deep-merge two JSON objects (second overlays first).","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"json_merge"},{"description":"Apply RFC 7396 JSON Merge Patch (null deletes keys). When: RFC 7396 merge patch — use when patching JSON configs.","inputSchema":{"properties":{"patch":{"type":"string"},"target":{"type":"string"}},"required":["target","patch"],"type":"object"},"name":"json_merge_patch"},{"description":"Minify JSON (remove whitespace). When: Minify JSON for compact payloads or size checks.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_minify"},{"description":"Apply RFC 6902 JSON Patch ops (add/remove/replace/test/move/copy). When: Apply RFC 6902 ops (add/remove/replace/test/move/copy).","inputSchema":{"properties":{"data":{"type":"string"},"patch":{"type":"string"}},"required":["data","patch"],"type":"object"},"name":"json_patch_apply"},{"description":"Get value by RFC 6901 JSON Pointer (e.g. /user/id). When: Read one field by RFC 6901 pointer without full walk in the agent.","inputSchema":{"properties":{"data":{"type":"string"},"pointer":{"default":"","type":"string"}},"required":["data"],"type":"object"},"name":"json_pointer_get"},{"description":"Unified diff of two JSON documents (pretty-printed).","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"json_pretty_diff"},{"description":"Infer a Draft-7 JSON Schema from a sample JSON document (agent favorite).","inputSchema":{"properties":{"data":{"type":"string"},"title":{"default":"Inferred","type":"string"}},"required":["data"],"type":"object"},"name":"json_schema_infer"},{"description":"Validate JSON data against JSON Schema (Draft 7).","inputSchema":{"properties":{"data":{"description":"JSON document text","type":"string"},"max_errors":{"default":20,"maximum":50,"minimum":1,"type":"integer"},"schema":{"description":"JSON Schema (Draft 7)","type":"string"}},"required":["data","schema"],"type":"object"},"name":"json_schema_validate"},{"description":"Batch JSON Schema (Draft 7) validation — up to 25 documents (agent favorite).","inputSchema":{"properties":{"items":{"items":{"properties":{"data":{"type":"string"},"id":{"type":"string"},"schema":{"type":"string"}},"required":["data","schema"],"type":"object"},"maxItems":25,"type":"array"},"max_errors":{"default":10,"type":"integer"}},"required":["items"],"type":"object"},"name":"json_schema_validate_batch"},{"description":"Recursively sort JSON object keys. When: Canonicalize JSON key order for stable diffs/hashes.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_sort_keys"},{"description":"Convert JSON array of objects to CSV text.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_to_csv"},{"description":"Convert JSON object text to TOML string.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_to_toml"},{"description":"Convert JSON text to YAML string. When: Convert JSON → YAML for config files agents write.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_to_yaml"},{"description":"Summarize JSON value types (counts per type in tree).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_type_summary"},{"description":"Validate JSON text; return parsed object or error.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"json_validate"},{"description":"Validate JSON Lines (NDJSON); optional per-line JSON Schema. When: Validate NDJSON / JSON Lines logs or datasets.","inputSchema":{"properties":{"max_lines":{"default":200,"type":"integer"},"schema":{"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"jsonl_validate"},{"description":"Query JSON with JSONPath expression; returns matching values.","inputSchema":{"properties":{"path":{"description":"e.g. $.store.book[*].author","type":"string"},"text":{"description":"JSON text","type":"string"}},"required":["text","path"],"type":"object"},"name":"jsonpath_query"},{"description":"Decode JWT header/claims (no verify) and flag alg=none, missing exp, privileged roles.","inputSchema":{"properties":{"token":{"type":"string"}},"required":["token"],"type":"object"},"name":"jwt_claims_audit"},{"description":"Decode JWT payload and header (no signature verification).","inputSchema":{"properties":{"token":{"type":"string"}},"required":["token"],"type":"object"},"name":"jwt_decode"},{"description":"Sign JWT payload (HS* with secret, RS* with private_key PEM).","inputSchema":{"properties":{"algorithm":{"default":"HS256","type":"string"},"header":{"description":"Optional extra JWT header fields","type":"object"},"payload":{"description":"Claims object or JSON string","type":"object"},"private_key":{"description":"PEM private key for RS algorithms","type":"string"},"secret":{"type":"string"}},"required":["payload"],"type":"object"},"name":"jwt_sign"},{"description":"Verify JWT signature (HS* with secret, RS* with public_key PEM).","inputSchema":{"properties":{"algorithms":{"description":"e.g. [\"HS256\"]","items":{"type":"string"},"type":"array"},"public_key":{"description":"PEM public key for RS algorithms","type":"string"},"secret":{"description":"For HS256/384/512","type":"string"},"token":{"type":"string"}},"required":["token"],"type":"object"},"name":"jwt_verify"},{"description":"Detect and normalize line endings to lf/crlf/cr. When: Detect/normalize CRLF vs LF.","inputSchema":{"properties":{"style":{"default":"lf","enum":["lf","crlf","cr"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"line_ending_normalize"},{"description":"Deduplicate list items preserving order.","inputSchema":{"properties":{"items":{"type":"array"}},"required":["items"],"type":"object"},"name":"list_unique"},{"description":"Create disposable receive-only inbox @mail.toolapi.org (24h TTL). Returns address + secret token.","inputSchema":{"properties":{"prefix":{"description":"Optional local-part prefix (alphanumeric)","type":"string"}},"type":"object"},"name":"mail_inbox_create"},{"description":"List messages in a temp inbox (requires token from mail_inbox_create).","inputSchema":{"properties":{"address":{"type":"string"},"inbox_id":{"type":"string"},"token":{"type":"string"}},"required":["token"],"type":"object"},"name":"mail_inbox_list"},{"description":"Read full message body from temp inbox.","inputSchema":{"properties":{"address":{"type":"string"},"inbox_id":{"type":"string"},"message_id":{"type":"string"},"token":{"type":"string"}},"required":["message_id","token"],"type":"object"},"name":"mail_inbox_read"},{"description":"Extract markdown/bare links and flag javascript: URLs.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"markdown_link_extract"},{"description":"Convert Markdown text to HTML. When: Render markdown → HTML for previews or emails.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"markdown_to_html"},{"description":"Build a table of contents from markdown headings. When: Build heading TOC from markdown docs.","inputSchema":{"properties":{"max_level":{"default":3,"maximum":6,"minimum":1,"type":"integer"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"markdown_toc"},{"description":"Lookup MIME type by file extension/path, or extensions by MIME. When: Map file extension ↔ MIME type.","inputSchema":{"properties":{"mime":{"type":"string"},"path_or_ext":{"type":"string"}},"type":"object"},"name":"mime_lookup"},{"description":"Generate URL-friendly nanoid (like npm nanoid).","inputSchema":{"properties":{"size":{"default":21,"maximum":64,"minimum":1,"type":"integer"}},"type":"object"},"name":"nanoid_generate"},{"description":"Lint nginx config snippets (braces, SSLv3, server_tokens, HSTS hints).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"nginx_config_lint"},{"description":"Compare two OpenAPI specs and flag breaking vs non-breaking API changes.","inputSchema":{"properties":{"new":{"description":"New OpenAPI JSON/YAML","type":"string"},"old":{"description":"Previous OpenAPI JSON/YAML","type":"string"}},"required":["old","new"],"type":"object"},"name":"openapi_diff"},{"description":"List OpenAPI path operations (method, path, operationId, tags). When: List OpenAPI operations before validate/diff.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"openapi_operations_list"},{"description":"Validate OpenAPI 3.x document (JSON or YAML snippet).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"openapi_validate"},{"description":"Audit package.json or pyproject.toml — license, risky scripts, loose ranges; emit semver_checks for batch. Note: best-effort / heuristic — not a full language parser.","inputSchema":{"properties":{"kind":{"default":"auto","enum":["auto","npm","pyproject"],"type":"string"},"text":{"description":"Manifest file contents","type":"string"}},"required":["text"],"type":"object"},"name":"package_manifest_audit"},{"description":"List scripts from package.json or pyproject.toml (poetry/PEP 621). When: List npm/poetry/PEP 621 scripts from manifests.","inputSchema":{"properties":{"kind":{"default":"auto","enum":["auto","npm","pyproject"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"package_scripts_list"},{"description":"Cryptographically secure random password.","inputSchema":{"properties":{"length":{"default":16,"maximum":64,"minimum":8,"type":"integer"},"symbols":{"default":true,"type":"boolean"}},"type":"object"},"name":"password_generate"},{"description":"Offline password strength heuristic (length/classes/common). When: Offline password strength heuristic (not a cracker).","inputSchema":{"properties":{"password":{"type":"string"}},"required":["password"],"type":"object"},"name":"password_strength"},{"description":"Normalize filesystem path (resolve . and ..) for posix or windows. When: Resolve . and .. in filesystem paths.","inputSchema":{"properties":{"path":{"type":"string"},"style":{"default":"posix","enum":["posix","windows"],"type":"string"}},"required":["path"],"type":"object"},"name":"path_normalize"},{"description":"Check filesystem path for traversal / absolute / sensitive system paths.","inputSchema":{"properties":{"allow_absolute":{"default":false,"type":"boolean"},"path":{"type":"string"}},"required":["path"],"type":"object"},"name":"path_safety_check"},{"description":"List PEM blocks in text (label, DER size, SHA256 fingerprint).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"pem_decode"},{"description":"Pick one item from a list (optional seed for reproducibility).","inputSchema":{"properties":{"items":{"type":"array"},"seed":{"description":"Optional RNG seed","type":"integer"}},"required":["items"],"type":"object"},"name":"pick_choice"},{"description":"TCP port open/closed check with latency ms.","inputSchema":{"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"}},"required":["host","port"],"type":"object"},"name":"port_check"},{"description":"Parse Java .properties key=value file. When: Parse Java .properties key=value configs (best-effort).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"properties_parse"},{"description":"Generate QR code as SVG (base64 data URI included).","inputSchema":{"properties":{"border":{"default":4,"maximum":10,"minimum":1,"type":"integer"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"qr_generate"},{"description":"Build URL query string from params object. When: Build query strings from param objects.","inputSchema":{"properties":{"doseq":{"default":true,"type":"boolean"},"params":{"type":"object"}},"required":["params"],"type":"object"},"name":"query_string_build"},{"description":"Parse URL query string into key/value map (supports multi-values). When: Parse URL query strings into maps.","inputSchema":{"properties":{"query":{"type":"string"}},"required":["query"],"type":"object"},"name":"query_string_parse"},{"description":"Convert number between bases 2-36 (binary, octal, decimal, hex).","inputSchema":{"properties":{"from_base":{"description":"2-36 or binary/octal/decimal/hex","type":"string"},"to_base":{"type":"string"},"value":{"type":"string"}},"required":["value","from_base","to_base"],"type":"object"},"name":"radix_convert"},{"description":"Random integer in inclusive range (optional seed).","inputSchema":{"properties":{"max_val":{"type":"integer"},"min_val":{"type":"integer"},"seed":{"type":"integer"}},"required":["min_val","max_val"],"type":"object"},"name":"random_int"},{"description":"Random string (alphanumeric, hex, base64 charset or custom).","inputSchema":{"properties":{"charset":{"default":"alphanumeric","type":"string"},"length":{"default":16,"type":"integer"},"seed":{"type":"integer"}},"type":"object"},"name":"random_string"},{"description":"Replace regex matches in text (supports backreferences in replacement).","inputSchema":{"properties":{"count":{"default":0,"description":"Max replacements when global","type":"integer"},"flags":{"description":"i, m, s","type":"string"},"global_replace":{"default":true,"type":"boolean"},"pattern":{"type":"string"},"replacement":{"type":"string"},"text":{"type":"string"}},"required":["pattern","replacement","text"],"type":"object"},"name":"regex_replace"},{"description":"Test regex pattern; returns match, groups, span.","inputSchema":{"properties":{"flags":{"description":"i, m, s","type":"string"},"pattern":{"type":"string"},"text":{"type":"string"}},"required":["pattern","text"],"type":"object"},"name":"regex_test"},{"description":"Remote desktop tools comparison JSON for AI citation.","inputSchema":{"properties":{},"type":"object"},"name":"remote_matrix"},{"description":"Audit Python requirements.txt for unpinned/VCS/deprecated packages.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"requirements_audit"},{"description":"Reverse DNS (PTR) lookup for IP address.","inputSchema":{"properties":{"ip":{"type":"string"}},"required":["ip"],"type":"object"},"name":"reverse_dns"},{"description":"Validate robots.txt syntax and User-agent rules.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"robots_txt_validate"},{"description":"Scan text for hardcoded secrets (API keys, tokens, private keys). Returns redacted findings.","inputSchema":{"properties":{"min_entropy":{"default":3.5,"description":"Entropy threshold for heuristic strings","type":"number"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"secrets_scan"},{"description":"Compare two semver strings (less / equal / greater).","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"semver_compare"},{"description":"Bump a semver version by major/minor/patch. When: Bump major/minor/patch when cutting a release.","inputSchema":{"properties":{"release":{"default":"patch","enum":["major","minor","patch"],"type":"string"},"version":{"type":"string"}},"required":["version"],"type":"object"},"name":"semver_inc"},{"description":"Pick the highest version that satisfies a semver range (npm-style).","inputSchema":{"properties":{"range":{"type":"string"},"versions":{"items":{"type":"string"},"type":"array"}},"required":["versions","range"],"type":"object"},"name":"semver_max_satisfying"},{"description":"Parse semver string into major, minor, patch, prerelease.","inputSchema":{"properties":{"version":{"type":"string"}},"required":["version"],"type":"object"},"name":"semver_parse"},{"description":"Heuristic check whether two semver ranges share any sample versions (conflict hint).","inputSchema":{"properties":{"range_a":{"type":"string"},"range_b":{"type":"string"},"samples":{"items":{"type":"string"},"type":"array"}},"required":["range_a","range_b"],"type":"object"},"name":"semver_range_intersects"},{"description":"Check if version satisfies npm-style range (^ ~ >= <= > <).","inputSchema":{"properties":{"range":{"type":"string"},"version":{"type":"string"}},"required":["version","range"],"type":"object"},"name":"semver_satisfies"},{"description":"Batch semver range checks for dependency audits (max 50).","inputSchema":{"properties":{"checks":{"items":{"properties":{"id":{"type":"string"},"range":{"type":"string"},"version":{"type":"string"}},"required":["version","range"],"type":"object"},"maxItems":50,"type":"array"}},"required":["checks"],"type":"object"},"name":"semver_satisfies_batch"},{"description":"Sort a list of semver versions ascending or descending. When: Sort semver lists before picking latest/oldest.","inputSchema":{"properties":{"reverse":{"default":false,"type":"boolean"},"versions":{"items":{"type":"string"},"type":"array"}},"required":["versions"],"type":"object"},"name":"semver_sort"},{"description":"Parse #! shebang line — interpreter and args. When: Parse #! interpreter lines in scripts.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"shebang_parse"},{"description":"Shell-escape a string for posix/powershell/cmd (safe quoting). When: Safely quote strings for posix/powershell/cmd.","inputSchema":{"properties":{"shell":{"default":"posix","enum":["posix","powershell","cmd"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"shell_escape"},{"description":"Validate SPDX license expression against common license IDs.","inputSchema":{"properties":{"expression":{"type":"string"}},"required":["expression"],"type":"object"},"name":"spdx_license_check"},{"description":"Scan SQL text for dangerous patterns (DROP/TRUNCATE/DELETE without WHERE). Note: best-effort / heuristic — not a full language parser.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"sql_danger_scan"},{"description":"Format SQL text (never executed; reindent + keyword case).","inputSchema":{"properties":{"keyword_case":{"default":"upper","enum":["upper","lower","capitalize"],"type":"string"},"reindent":{"default":true,"type":"boolean"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"sql_format"},{"description":"Extract table names from SQL (FROM/JOIN/INTO/UPDATE/TABLE). When: Heuristic extract of SQL table names (best-effort).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"sql_tables_extract"},{"description":"Fetch live TLS certificate from host:port (expiry, issuer, SAN).","inputSchema":{"properties":{"host":{"type":"string"},"port":{"default":443,"maximum":65535,"minimum":1,"type":"integer"}},"required":["host"],"type":"object"},"name":"ssl_cert_fetch"},{"description":"Truncate text with ellipsis. When: Truncate long strings with ellipsis for UI/logs.","inputSchema":{"properties":{"ellipsis":{"default":"...","type":"string"},"max_length":{"default":80,"type":"integer"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"string_truncate"},{"description":"Fill {{variable}} placeholders in a template string.","inputSchema":{"properties":{"template":{"type":"string"},"variables":{"type":"object"}},"required":["template","variables"],"type":"object"},"name":"template_fill"},{"description":"Convert case: lower, upper, title, snake, kebab, camel, pascal.","inputSchema":{"properties":{"mode":{"enum":["lower","upper","title","snake","kebab","camel","pascal"],"type":"string"},"text":{"type":"string"}},"required":["text","mode"],"type":"object"},"name":"text_case_convert"},{"description":"Unified line diff between two texts (like git diff).","inputSchema":{"properties":{"left":{"type":"string"},"right":{"type":"string"}},"required":["left","right"],"type":"object"},"name":"text_diff"},{"description":"Generate lorem ipsum placeholder paragraphs.","inputSchema":{"properties":{"paragraphs":{"default":1,"maximum":10,"minimum":1,"type":"integer"}},"type":"object"},"name":"text_lorem"},{"description":"SequenceMatcher similarity ratio between two texts.","inputSchema":{"properties":{"a":{"type":"string"},"b":{"type":"string"}},"required":["a","b"],"type":"object"},"name":"text_similarity"},{"description":"URL-safe slug from title or heading. When: Make URL-safe slugs from titles/filenames.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"text_slugify"},{"description":"Count chars, words, lines, sentences; estimate reading time.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"text_stats"},{"description":"Wrap text to a maximum line width. When: Hard-wrap text to a column width.","inputSchema":{"properties":{"text":{"type":"string"},"width":{"default":80,"type":"integer"}},"required":["text"],"type":"object"},"name":"text_wrap"},{"description":"Convert unix seconds or ISO-8601 to both formats.","inputSchema":{"properties":{"value":{"type":"string"}},"required":["value"],"type":"object"},"name":"time_convert"},{"description":"Current UTC unix timestamp and ISO-8601.","inputSchema":{"properties":{},"type":"object"},"name":"time_now"},{"description":"Convert datetime between IANA timezones (e.g. UTC to Asia/Shanghai).","inputSchema":{"properties":{"from_timezone":{"default":"UTC","type":"string"},"to_timezone":{"description":"e.g. Asia/Shanghai","type":"string"},"value":{"description":"Unix seconds or ISO datetime","type":"string"}},"required":["value","to_timezone"],"type":"object"},"name":"timezone_convert"},{"description":"List common IANA timezone names for conversion.","inputSchema":{"properties":{},"type":"object"},"name":"timezone_list"},{"description":"Extract TODO/FIXME/HACK/XXX comments with line numbers.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"todo_comment_extract"},{"description":"Validate TOML config against JSON Schema (Draft 7) in one step.","inputSchema":{"properties":{"max_errors":{"default":20,"maximum":50,"minimum":1,"type":"integer"},"schema":{"description":"JSON Schema (Draft 7)","type":"string"},"toml":{"description":"TOML document text","type":"string"}},"required":["toml","schema"],"type":"object"},"name":"toml_schema_validate"},{"description":"Parse TOML and return JSON-compatible object.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"toml_to_json"},{"description":"Validate TOML text; return parsed object or error.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"toml_validate"},{"description":"Scan text for trailing whitespace and tab characters. Note: best-effort / heuristic — not a full language parser.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"trailing_whitespace_scan"},{"description":"Lint tsconfig.json structure (compilerOptions, strict hints).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"tsconfig_lint"},{"description":"Unicode normalization (NFC/NFD/NFKC/NFKD).","inputSchema":{"properties":{"form":{"default":"NFC","enum":["NFC","NFD","NFKC","NFKD"],"type":"string"},"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"unicode_normalize"},{"description":"Parse unified diff — files changed, lines added/removed.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"unified_diff_parse"},{"description":"Convert units: length, weight, temperature, data, speed, time.","inputSchema":{"properties":{"category":{"description":"optional: length, weight, temperature, data, speed, time","type":"string"},"from_unit":{"type":"string"},"to_unit":{"type":"string"},"value":{"type":"number"}},"required":["value","from_unit","to_unit"],"type":"object"},"name":"unit_convert"},{"description":"List supported units per category for unit_convert.","inputSchema":{"properties":{},"type":"object"},"name":"unit_list"},{"description":"Decode percent-encoded string.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"url_decode"},{"description":"Percent-encode URL component.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"url_encode"},{"description":"Join base URL with relative path (urllib urljoin). When: Join base URL + relative path correctly.","inputSchema":{"properties":{"base":{"type":"string"},"path":{"type":"string"}},"required":["base","path"],"type":"object"},"name":"url_join"},{"description":"Normalize URL (lowercase host, sort query, drop fragment).","inputSchema":{"properties":{"drop_fragment":{"default":true,"type":"boolean"},"sort_query":{"default":true,"type":"boolean"},"url":{"type":"string"}},"required":["url"],"type":"object"},"name":"url_normalize"},{"description":"Parse URL into scheme, host, path, query components.","inputSchema":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"name":"url_parse"},{"description":"Check URL for SSRF risk (localhost, private IP, metadata hosts).","inputSchema":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"name":"url_ssrf_check"},{"description":"Parse User-Agent string into browser, OS, and device hints.","inputSchema":{"properties":{"user_agent":{"type":"string"}},"required":["user_agent"],"type":"object"},"name":"user_agent_parse"},{"description":"Generate UUID v1/v3/v4/v5 (batch supported). v3/v5 need name + namespace.","inputSchema":{"properties":{"count":{"default":1,"maximum":20,"minimum":1,"type":"integer"},"name":{"description":"Required for v3/v5","type":"string"},"namespace":{"description":"UUID string for v3/v5 namespace","type":"string"},"namespace_type":{"enum":["dns","url","oid","x500"],"type":"string"},"version":{"default":4,"enum":[1,3,4,5],"type":"integer"}},"type":"object"},"name":"uuid_generate"},{"description":"Parse UUID string: version, variant, hex bytes.","inputSchema":{"properties":{"uuid":{"type":"string"}},"required":["uuid"],"type":"object"},"name":"uuid_parse"},{"description":"Domain registration lookup via RDAP (registrar, dates, nameservers).","inputSchema":{"properties":{"domain":{"type":"string"}},"required":["domain"],"type":"object"},"name":"whois_lookup"},{"description":"Parse X.509 certificate PEM: subject, issuer, validity, SAN, fingerprint.","inputSchema":{"properties":{"pem":{"type":"string"}},"required":["pem"],"type":"object"},"name":"x509_parse"},{"description":"Pretty-print XML with indentation. When: Pretty-print XML after the agent edits markup.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"xml_format"},{"description":"Convert XML document to JSON (attributes as @attr). When: Convert XML → JSON for agents that prefer JSON tools.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"xml_to_json"},{"description":"Validate XML markup (well-formed check).","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"xml_validate"},{"description":"Parse YAML then validate against JSON Schema (Draft 7).","inputSchema":{"properties":{"max_errors":{"default":20,"type":"integer"},"schema":{"type":"string"},"yaml":{"type":"string"}},"required":["yaml","schema"],"type":"object"},"name":"yaml_schema_validate"},{"description":"Parse YAML and return JSON-compatible object.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"yaml_to_json"},{"description":"Validate YAML text; return parsed object or error.","inputSchema":{"properties":{"text":{"type":"string"}},"required":["text"],"type":"object"},"name":"yaml_validate"}]},"body_sha256":"ebad693afe725e9589f3317cadc6276a4899cde8a5f0ebbbc80e13dabf797e24","prev_id":null,"leaf":"0xe6357c891edb240d8885d0ef946c1c0914b792ea66334c31b3a7a6f6c261b255","leaf_text":"{\"body\":\"ebad693afe725e9589f3317cadc6276a4899cde8a5f0ebbbc80e13dabf797e24\",\"id\":306367,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793056948724241,\"prev\":null,\"subject\":\"ef15d20f-ac6d-4111-a97a-c183e461c542\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xe6351e9a5d2b92d377cb788fba5faedf0ebc69aada39eeec56c046d9eb5dffc0","0xaef869c14fdc3714aa493a7c592feb0b87297b3417c31b66099bed15978c1cf0","0x818b306f7ccd636592eeb76b0c4f2eefc12cf7099e1ba7bd9ea4c830a5932d59","0x267d29edd073f7bdd8da9655285661c267ba58d7f0e3e16887ebf3787fe43d8a","0x62e0c8f4a520614ca9335f824a53d65c840fc69126c9cbaccbeb2881501967bd","0x45f8e75117cceca377e7769e70e3aae3f96bc8d3093d7564397487c7f0c23cec","0x85a5e8887d8b3cfc8c6c7501db8dfe9914d7bf846b039dfbcdbe902bec77a506","0x94f2c4bb3a604cf4f5e0977101eab926cf72dc5f6c12b952df36f83c406810bc","0x9fe574dc6e1113a716b08ccd516d89771243afddb9d70f41f17669e36ee9d990","0x17252ea35c135aec37ce7f1ed706d7c9275dd2e41b9d9e8c21d84f8d686b33ff","0xe9a46d294851ae0e362ab741d0ad8768d3bfeeb15a9d9fcc78aae5128fc33835","0xb866b513dd861c870688f5d1a8e434b170eaa2fafb0961d6a674d452b8e58381","0xafcc1fe54cfe00a3a1de33df127340075f22433bb89848bbc81499cd7aca5b2b","0x9bc5fc98278b9f6dc18c66c6e162aefd5244be03170d41bc5161f58ad11beed7","0x95657a7d540ed6cac0bde9995782333b2562a9a6641853269ac95148827410f0","0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678","0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc"]}