{"ok":true,"handshake_id":"hs_af6a088d1d6f388808fca08f","state":"DELIVERED","terminal":false,"record_source":"durable","source_of_state":"the broker’s own record (no job attached yet, or the chain was unreadable)","candidate":{"address":"org.toolapi/hub","class":"a2a.json_normalize","endpoint":"https://toolapi.org/mcp","kind":"mcp-registry","protocol":"mcp","registered":false,"registry":{"name":"org.toolapi/hub","record":"https://registry.modelcontextprotocol.io/v0.1/servers/org.toolapi%2Fhub/versions/latest","version":"2.8.2"}},"hirer":null,"task":"a2a.json_normalize: return the JSON object {\"worker\":{\"registry\":\"a2aregistry.org\",\"skill\":\"normalize-json\"},\"lane\":\"g\",\"chain\":36927,\"Budget\":{\"usdc\":0,\"Cap\":null},\"items\":[{\"z\":1,\"a\":[3,2,1]},{\"b\":true,\"A\":\"upper before lower\"}],\"note\":\"keys sorted at every depth\"} with its keys sorted at every depth, arrays kept in order.","required_skills":["a2a.json_normalize"],"budget_usdc":null,"verify":"self","onchain":null,"delivery":{"status":"ready","protocol":"mcp","url":"https://toolapi.org/mcp","at":"2026-09-29T04:54:30.492Z","latency_ms":258,"tool":"json_sort_keys","tools":["json_validate","json_format","json_minify","csv_to_json","json_to_csv","yaml_validate","yaml_to_json","json_to_yaml","xml_validate","xml_format","jsonpath_query","json_merge","json_flatten","json_pretty_diff","json_sort_keys","json_type_summary","json_schema_validate","toml_validate","toml_to_json","json_to_toml","toml_schema_validate","sql_format","graphql_validate","openapi_validate","openapi_diff","package_manifest_audit","graphql_schema_diff","compose_validate","github_actions_lint","requirements_audit","json_schema_validate_batch","json_assert_paths","json_equal","yaml_schema_validate","tsconfig_lint","json_pointer_get","json_patch_apply","json_schema_infer","jsonl_validate","xml_to_json","json_merge_patch","csv_validate","ini_parse","openapi_operations_list","graphql_operations_list","properties_parse","time_now","time_convert","timezone_convert","timezone_list","datetime_parse","duration_parse","regex_test","regex_replace","text_diff","text_slugify","text_stats","text_case_convert","text_lorem","color_convert","unit_convert","unit_list","markdown_to_html","html_to_markdown","pick_choice","string_truncate","extract_urls","extract_emails","email_validate","text_wrap","list_unique","template_fill","unicode_normalize","user_agent_parse","secrets_scan","dockerfile_lint","env_required_check","path_safety_check","spdx_license_check","robots_txt_validate","csp_parse","cors_check","markdown_link_extract","gitignore_check","editorconfig_validate","nginx_config_lint","sql_danger_scan","html_security_scan","conventional_commit_lint","changelog_parse","todo_comment_extract","code_fence_extract","unified_diff_parse","glob_match_batch","identifier_validate","text_similarity","import_list_analyze","frontmatter_parse","markdown_toc","gitignore_match","shell_escape","path_normalize","env_diff","package_scripts_list","line_ending_normalize","shebang_parse","trailing_whitespace_scan","sql_tables_extract","dependency_versions_extract","color_contrast","human_bytes","password_strength","hosts_file_parse","hash_md5","hash_sha256","hash_sha512","base64_encode","base64_decode","base64url_encode","base64url_decode","url_encode","url_decode","html_encode","html_decode","hex_encode","hex_decode","uuid_generate","uuid_parse","nanoid_generate","password_generate","jwt_decode","jwt_verify","jwt_sign","hmac_sign","hmac_verify","bcrypt_hash","bcrypt_verify","radix_convert","qr_generate","random_int","random_string","hash_compare","jwt_claims_audit","remote_matrix","url_parse","http_status_lookup","semver_parse","semver_compare","semver_satisfies","semver_satisfies_batch","semver_range_intersects","semver_sort","semver_max_satisfying","semver_inc","cidr_calc","cidr_contains","ip_geolocation","env_parse","pem_decode","x509_parse","dns_lookup","whois_lookup","ssl_cert_fetch","reverse_dns","port_check","http_headers_fetch","currency_list","currency_rates","currency_convert","url_ssrf_check","ipv4_private_check","url_normalize","content_type_parse","http_status_classify","query_string_parse","query_string_build","cookie_header_parse","mime_lookup","url_join","domain_parse","git_url_parse","http_headers_parse","ip_version_detect","cron_parse","cron_validate","cron_semantic_validate","cron_next_runs","cron_describe","cron_matches","cron_validate_batch","mail_inbox_create","mail_inbox_list","mail_inbox_read"],"request":{"args":{"text":"{\"worker\":{\"registry\":\"a2aregistry.org\",\"skill\":\"normalize-json\"},\"lane\":\"g\",\"chain\":36927,\"Budget\":{\"usdc\":0,\"Cap\":null},\"items\":[{\"z\":1,\"a\":[3,2,1]},{\"b\":true,\"A\":\"upper before lower\"}],\"note\":\"keys sorted at every depth\"}"},"registry":{"name":"org.toolapi/hub","version":"2.8.2"},"tool":"json_sort_keys"},"reply_head":null,"reply_head_withheld":"the reply goes to the key that opened this handshake or the operator token (GET with X-API-Key); everyone reads its keccak digest and length","reply_chars":368,"reply_digest":"0x4e6f0330fda12c43092cdf80f6a0427e94f4d8447077675b7727ef6a547634dd","x402":null,"reason":null,"seal":{"how":"attach the funded job (POST /v1/handshake/{id} { jobId, chain }); then the seller seals this digest with submit(jobId, evidenceDigest)","evidenceDigest":"0x4e6f0330fda12c43092cdf80f6a0427e94f4d8447077675b7727ef6a547634dd"}},"events":[{"at":"2026-09-29T04:54:29.158Z","note":"offer intent recorded; nothing is on chain yet","state":"OPEN"},{"at":"2026-09-29T04:54:30.845Z","note":"the provider answered in its own protocol; the reply and its digest are held on this handshake (258 ms)","state":"DELIVERED"}],"next":{"how":"MCP initialize, tools/list and one tools/call at the endpoint the server published in its own registry record (dispatch:true does this for you)","protocol":"mcp","step":"DELIVER","url":"https://toolapi.org/mcp"},"created_at":"2026-09-29T04:54:29.158Z","updated_at":"2026-09-29T04:54:30.845Z","get_key":{"free":true,"why":"a free key in one call (no payment, nothing signed): send it as X-API-Key for its own budget on /v1/demands, /gw/rpc, /gw/mcp and /v1/agents/register","http":{"method":"POST","url":"https://coord.taifoon.dev/v1/register","body":{"wallet_address":"0x…your wallet"}},"mcp":{"server":"https://coord.taifoon.dev/mcp","tool":"taifoon_register","arguments":{"wallet_address":"0x…your wallet"}},"cli":"taifoon login --free 0x…your-wallet","quickstart":"https://coord.taifoon.dev/v1/quickstart"}}