{"id":"mppscan-59e391aa3e270809ef4e82fe","name":"Codex","homepage_url":"https://graph.codex.io/","service_url":"https://graph.codex.io/","origin":"https://graph.codex.io","description":"Comprehensive onchain data API for tokens and prediction markets. Real-time prices, charts, trades, and wallet analytics across 80+ networks via GraphQL.","status":"active","implementation":"unknown","implementation_confidence":0,"fingerprint_observed_at":null,"published":1,"catalog_ingest_at":"2026-10-09T18:17:43.417Z","openapi_ingest_at":null,"catalog_seen_at":"2026-10-09T18:17:43.417Z","openapi_seen_at":null,"first_seen":"2026-08-25T18:43:12.674Z","last_seen":"2026-10-09T18:34:57.858Z","last_probe_at":"2026-10-02T12:33:00.712Z","created_at":"2026-08-25 18:48:26","updated_at":"2026-10-09T18:34:53.700Z","categories":["blockchain","data"],"tags":["graphql","defi","tokens","trades","nft"],"fingerprintEvidence":[],"paymentMethods":[],"paymentMethodCount":0,"endpoints":[{"id":"7a18ab04487e6b8787e31fc5ea2d6736c4239eaa96599400f8fb41db1f353301","service_id":"mppscan-59e391aa3e270809ef4e82fe","url":"https://graph.codex.io/graphql","http_method":"POST","path":"/graphql","kind":"paid-api","description":"GraphQL query (token data, trades, liquidity, NFTs, wallets)","first_seen":"2026-08-25T18:43:12.674Z","last_seen":"2026-10-09T18:17:43.417Z","last_probe_at":null,"last_status":null,"content_type":null,"tls_state":"not-tested","redirect_count":null,"challenge_format":null,"published":1,"catalog_seen_at":"2026-10-09T18:17:43.417Z","openapi_seen_at":null,"created_at":"2026-08-25 19:22:47","updated_at":"2026-10-09T18:34:53.700Z","offers":[{"id":"37a0fc3c74f301b64ceb084c34f64b228a51041f31b8573b2cfa761d8ce20053","method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50","chainId":null,"recipient":null,"amount":"1000","decimals":6,"unitType":null,"session":null,"sourceType":"catalog","sourceRef":"https://mpp.dev/api/services","sourceOrdinal":0,"firstSeen":"2026-08-25T18:43:12.674Z","lastSeen":"2026-10-09T18:17:43.417Z"}],"activeSources":[{"type":"catalog","ref":"https://mpp.dev/api/services","firstSeen":"2026-08-25T18:43:12.674Z","lastSeen":"2026-10-09T18:17:43.417Z"}],"offerPagination":{"limit":12,"total":1,"truncated":false},"activeSourcePagination":{"limit":32,"total":1,"truncated":false}}],"endpointPagination":{"limit":25,"total":1,"nextCursor":null},"sources":[{"source_kind":"mpp.dev-catalog","source_url":"https://mpp.dev/api/services","first_seen":"2026-08-25T18:43:12.674Z","last_seen":"2026-10-09T18:17:43.417Z","evidence":{"catalogId":"codex","version":1}},{"source_kind":"mppscan","source_url":"https://mppscan.com/","first_seen":"2026-08-25T18:43:12.674Z","last_seen":"2026-10-09T18:17:43.417Z","evidence":{"discoveredUrl":"https://graph.codex.io/"}}],"sourcePagination":{"limit":100,"total":2,"truncated":false},"security":[{"property_key":"probe_safety","state":"observed","evidence":"cross-host-redirect: Cross-host redirect to https://www.codex.io/ was recorded but not followed","basis":"scanner policy decision","advisory_ref":null,"observed_at":"2026-10-09T18:34:57.858Z","endpoint_id":null},{"property_key":"api_catalog_parse","state":"observed","evidence":"No RFC 9727 API catalog was available at this URL (HTTP 404); prior advertised links were withdrawn","basis":"RFC 9727 discovery response","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"authorization_delivery_settlement","state":"not-tested","evidence":"Requires paid or state-changing behavior outside scanner scope","basis":"Tempo Aug 24 research class","advisory_ref":"https://github.com/wevm/mppx/pull/510#discussion_r3377899233","observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"bounded_response","state":"tested-pass","evidence":"9 bytes within scanner limit","basis":"harmless scanner","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"challenge_parse","state":"unknown","evidence":"No MPP Payment challenge observed","basis":"unauthenticated HTTP response","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"channel_lifecycle_binding","state":"not-tested","evidence":"Channel and settlement lifecycle require credentials or payments","basis":"public economic-security prior art","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"concurrency_single_winner","state":"not-tested","evidence":"Concurrency and paid state changes are prohibited","basis":"public economic-security prior art","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"credential_replay","state":"not-tested","evidence":"Scanner never sends credentials or payments","basis":"methodology","advisory_ref":"https://github.com/advisories/GHSA-fxc9-7j2w-vx54","observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"economic_exposure_metadata","state":"unknown","evidence":"No current Payment challenge exposes session or authorization inputs","basis":"observable challenge values only","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"fee_payer_cosigner_binding","state":"not-tested","evidence":"Signature and fee-payer relationships are not observable unauthenticated","basis":"public economic-security prior art","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"https_transport","state":"tested-pass","evidence":"HTTPS fetch completed with platform certificate validation","basis":"platform TLS validation","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"method_fallback_policy","state":"not-tested","evidence":"Scanner does not select, downgrade, or execute payment methods","basis":"public economic-security prior art","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"price_debit_consistency","state":"not-tested","evidence":"Requires a completed paid interaction outside scanner scope","basis":"public economic-security prior art","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"redirect_policy","state":"tested-pass","evidence":"0 redirects; every hop passed URL and DNS validation","basis":"harmless scanner","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"replay_idempotency_scope","state":"not-tested","evidence":"Scanner never replays signed credentials","basis":"public advisory and protocol prior art","advisory_ref":"https://github.com/advisories/GHSA-fxc9-7j2w-vx54","observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"ssrf_target_validation","state":"tested-pass","evidence":"1 hop(s) resolved twice to stable public addresses","basis":"scanner URL, DNS and redirect policy","advisory_ref":null,"observed_at":"2026-10-02T12:33:00.712Z","endpoint_id":null},{"property_key":"openapi_parse","state":"observed","evidence":"Credential-shaped discovery URL was excluded from indexing and fan-out by scanner policy","basis":"harmless discovery response","advisory_ref":null,"observed_at":"2026-10-02T00:21:28.288Z","endpoint_id":null}],"securityPagination":{"limit":250,"total":17,"truncated":false},"observations":[{"id":"76c35edd9cbed69e04a5e430bad4e1bb39362202397ca02a6a56b9eb2361515a","endpoint_id":null,"observed_at":"2026-10-09T18:34:57.858Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"1d59b5e60197e0219303dec336cd80758d2ea62c2584c1824f49ba0e6ead842d","endpoint_id":null,"observed_at":"2026-10-09T12:36:59.802Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"37312d99b9e030194d88c7b72accd1244892e4a1c024b7e09b4363c06d7ced6a","endpoint_id":null,"observed_at":"2026-10-09T06:29:03.058Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"3facf67ea68c9a7538fe8276af5accf0c511a321addcfcb3f9158828b6e4f08f","endpoint_id":null,"observed_at":"2026-10-09T00:40:41.702Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"e97d0849358315e08d68fb3a0e05b8c4f38a6d564be14fdc4193669286cc76f3","endpoint_id":null,"observed_at":"2026-10-08T18:38:01.489Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"133b29e171af5cd4352b65a92489a720aeaac56bd370a52c4b6b9ceddce8fe47","endpoint_id":null,"observed_at":"2026-10-08T12:35:46.894Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"c64ad8f68f3d1ef9dd6f0557abfa88b389ecca723eb62f302902f590aeab944c","endpoint_id":null,"observed_at":"2026-10-08T06:34:16.829Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"a1505edd0fa88cdc5e27a5c73a6fc6d7b208a97910b32b90a6bc264e404b08ec","endpoint_id":null,"observed_at":"2026-10-08T00:35:40.589Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"69467a23b85f90a3abe9677627abcbb4ee1984ef2cda845a0b29825382df9188","endpoint_id":null,"observed_at":"2026-10-07T18:34:51.260Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"75380d900a02418bc861e9a5c97f6e29e91635f10422ef997a34548ae366e019","endpoint_id":null,"observed_at":"2026-10-07T12:34:03.653Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"467b5af5b366a610c6d06f76f1d8d81ed6ab7af6df348637b76badcee7220ba8","endpoint_id":null,"observed_at":"2026-10-07T06:39:59.478Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"9724530a6dbb775f028b5e6268927aeddea8fe48c806e20aed95d5e1269a9f15","endpoint_id":null,"observed_at":"2026-10-07T00:43:44.540Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"e00ae609a4ebe17cad8f457b937ddef6e33b462188eecb144bc1c7497b141810","endpoint_id":null,"observed_at":"2026-10-06T18:39:28.305Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"d6a6a1d9c328ef1474ebd9ee70fbef8b5c57b0066d076618b6d1408ea72bd2bc","endpoint_id":null,"observed_at":"2026-10-06T12:39:56.766Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"94b309b85f4c53b11c658bfc78f4c99cfd32b3c44e5bc2634ffcfe256886abfe","endpoint_id":null,"observed_at":"2026-10-06T06:28:30.282Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"b16cffa2e426d238985e15808aba336af72d44354acacdcafb18c4724342e3dd","endpoint_id":null,"observed_at":"2026-10-06T00:34:36.172Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"d0e3e566eb6cbd08ad390410ebba9a0e151b77f3a9101661dd506988d8bad0fc","endpoint_id":null,"observed_at":"2026-10-05T18:34:47.684Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"babd533b81842d2e2b8f90eaad7de1625fb9214ab7eea85241ddd16e8eb5248a","endpoint_id":null,"observed_at":"2026-10-05T12:34:11.982Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"7b37957010da9ceb13f0cdd0db8d0e008e2d94b149e01484d91fcfecfc417d50","endpoint_id":null,"observed_at":"2026-10-05T06:33:24.489Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"a53c70ebc9634e51075502da7d957df8e772b6f50a4aff8b2fb9975aad7e2247","endpoint_id":null,"observed_at":"2026-10-05T00:36:05.861Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"2714e14973f2a5bc271fd2b12c1caaf5a5af78738aeac314d6bac3f3e432573c","endpoint_id":null,"observed_at":"2026-10-04T18:32:34.838Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"f3c83080f309a0cefb1c5fdf647e4bfbf072c365885f44488f9cfd5f6bb907a4","endpoint_id":null,"observed_at":"2026-10-04T12:35:31.438Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"ab98eb6fcf1f8ec94246f757e42789a5ba026010d17cf20484238fa989ba49a8","endpoint_id":null,"observed_at":"2026-10-04T06:33:46.485Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"4b45da5bcf0108091e360ced804e2be2ea5ae712a526ec1e013a9f52bdfef96b","endpoint_id":null,"observed_at":"2026-10-04T00:35:33.581Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"b4e04549560e07f25cbd0fa9ce295c7aeec80a45da1d285f157df6dee07d22aa","endpoint_id":null,"observed_at":"2026-10-03T18:33:32.625Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"c366724872ffcfa0b67126af7ef6c96c486e4c4868f15ec24dd89ac9468e1da8","endpoint_id":null,"observed_at":"2026-10-03T12:37:08.771Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"83f3c259221dd98235e6baca7f163ed6af611c326bafd0327dc6060c43d07935","endpoint_id":null,"observed_at":"2026-10-03T06:28:14.473Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"2842c6b38dcef9f4ec042fbc8ff0dc5c8a91e777664d0a0a7bb1fd3ae9dbe021","endpoint_id":null,"observed_at":"2026-10-03T00:39:06.559Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"ec8639c5c70f9e97702f6a134d1ccd6901443d133f8bcd45167f4d8e1118b569","endpoint_id":null,"observed_at":"2026-10-02T18:36:12.271Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"85fe6210306aaf1777f204c0538ab00a92760c70223fad677a12eb5d030ae95c","endpoint_id":null,"observed_at":"2026-10-02T12:49:59.523Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"e17f3693a9b1c729f29e2d0caa32ce99d027de0a214948d1214424de207e1b42","endpoint_id":null,"observed_at":"2026-10-02T12:33:00.712Z","request_method":"GET","requested_url":"https://graph.codex.io/.well-known/api-catalog","final_url":"https://graph.codex.io/.well-known/api-catalog","status":404,"redirect_count":0,"response_bytes":9,"body_sha256":"0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5","error_code":null,"error_detail":null,"headers":{"alt-svc":"[redacted]","cf-cache-status":"[redacted]","cf-ray":"[redacted]","connection":"[redacted]","content-length":"[redacted]","content-type":"text/plain; charset=utf-8","date":"[redacted]","server":"cloudflare","vary":"[redacted]","via":"[redacted]","x-amz-cf-id":"[redacted]","x-amz-cf-pop":"[redacted]","x-cache":"[redacted]"},"dns":[{"hostname":"graph.codex.io","addresses":["99.86.101.115","99.86.101.14","99.86.101.25","99.86.101.99"],"stable":true}],"tls":{"state":"tested-pass","httpProtocol":null,"note":"HTTPS fetch completed with platform certificate validation"}},{"id":"088bdf5fbef2743fcb64f40b0d600d77f3f9e05bf588f0d652b05c9cc5a4c1e6","endpoint_id":null,"observed_at":"2026-10-02T06:32:01.269Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"91b696550fa90933d6c9fc260ed72cd77ecb086ad65a8614d3c9c5f3bf169e61","endpoint_id":null,"observed_at":"2026-10-02T00:33:57.832Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"ce83d93147b58ef0d37b3dff7d982f49b8c5881040b248e0e6a5475ea138a257","endpoint_id":null,"observed_at":"2026-10-02T00:21:28.288Z","request_method":"GET","requested_url":"https://graph.codex.io/openapi.json","final_url":"https://graph.codex.io/openapi.json","status":200,"redirect_count":0,"response_bytes":2225,"body_sha256":"ce2eaafe64c63f42f1b0ed784a70098d47273a23449145d43a7158d5d86e1235","error_code":null,"error_detail":null,"headers":{"access-control-allow-origin":"[redacted]","alt-svc":"[redacted]","cf-cache-status":"[redacted]","cf-ray":"[redacted]","connection":"[redacted]","content-type":"application/json; charset=utf-8","date":"[redacted]","server":"cloudflare","transfer-encoding":"[redacted]","vary":"[redacted]","via":"[redacted]","x-amz-cf-id":"[redacted]","x-amz-cf-pop":"[redacted]","x-cache":"[redacted]"},"dns":[{"hostname":"graph.codex.io","addresses":["52.85.151.27","52.85.151.28","52.85.151.41","52.85.151.60"],"stable":true}],"tls":{"state":"tested-pass","httpProtocol":null,"note":"HTTPS fetch completed with platform certificate validation"}},{"id":"68008a8f01fc64377ad0238bdf27d1b2e5a8cc23998e7c9d16ae8c770290ae3c","endpoint_id":null,"observed_at":"2026-10-01T18:30:33.444Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"3159e3497e61c602ca747cb24e7b8117c69fe6e44765bded7ab366e0b6280277","endpoint_id":null,"observed_at":"2026-10-01T12:35:50.481Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"e0f3d27b98492ada2f40f969c03436a51d6d7c7cdbc6f777fb5e4a92285b7cd4","endpoint_id":null,"observed_at":"2026-10-01T06:30:24.259Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"19fc144811c02672929780764e5d841740dada44b1e9890d36cf0176527481a1","endpoint_id":null,"observed_at":"2026-10-01T00:35:47.077Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"13f6b464d6ca4e919d5a994954859ee3a5b58164067ec61f4b7ca0c6e419b545","endpoint_id":null,"observed_at":"2026-09-30T18:33:17.298Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"0cc367106b64e1152ce778a02d900c8a3509bbb7d31b894d292f301e6f59ff08","endpoint_id":null,"observed_at":"2026-09-30T12:31:32.132Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"a8372e8591eb3ed1cc1adbe01ca34f1d60eb8278d2d99a2d37b30deb20cdfe7b","endpoint_id":null,"observed_at":"2026-09-30T06:34:02.602Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"91c39f71747eeaedd90afcadcbdd32d8217c052fd5d68cd5d1a684684c7b2c2f","endpoint_id":null,"observed_at":"2026-09-30T00:29:47.085Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"3df00b13a29f02ff7c87af4023ec8c7955095baf68ec485f493b02e88e71b114","endpoint_id":null,"observed_at":"2026-09-29T18:30:06.626Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"016e5dbc30bded0ee11f71de57ea86c1f7da5bd97d654bb541fc40dc40d71f45","endpoint_id":null,"observed_at":"2026-09-29T12:29:39.713Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"1d01e9ef275c3d0113265127be067cb1a668937266e01f4619da06a983b8a92c","endpoint_id":null,"observed_at":"2026-09-29T06:28:56.706Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"6fcf21c15110dad413b70e90e6a48cb4303f76a67268c8e760839aabd45c1504","endpoint_id":null,"observed_at":"2026-09-29T00:30:54.170Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"143729493c96965ea46d1b4a3d65dcf2fbdca26c6d9d17f904dcedc2cf34ce42","endpoint_id":null,"observed_at":"2026-09-28T18:36:11.029Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"f5cfebfab379c17217c3001abc00997fdb6918645c4ae6682ea144f53e4f551c","endpoint_id":null,"observed_at":"2026-09-28T12:29:55.696Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"4cee986279c9c018343043fff2ca61ce16b1faa461c25a2da2ab6128770c19f2","endpoint_id":null,"observed_at":"2026-09-28T06:28:49.477Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}},{"id":"77ede922c7cb39404e4af842e9fa2d8d74edadd9becce36e3577bc7fe24a8832","endpoint_id":null,"observed_at":"2026-09-28T00:39:27.967Z","request_method":"GET","requested_url":"https://graph.codex.io/","final_url":null,"status":null,"redirect_count":0,"response_bytes":0,"body_sha256":"","error_code":"cross-host-redirect","error_detail":"Cross-host redirect to https://www.codex.io/ was recorded but not followed","headers":{},"dns":[],"tls":{}}],"observationPagination":{"limit":50,"total":126,"truncated":true},"changes":[{"id":"af7040a95c06c269364e801e085f3559","endpoint_id":null,"changed_at":"2026-10-02T12:33:00.712Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"4aaef0932f633c52027b4783c7f131d9","endpoint_id":null,"changed_at":"2026-10-02T00:21:28.288Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"277d1e840ccc80474523c6c6c4304f8e","endpoint_id":null,"changed_at":"2026-09-23T12:18:05.711Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"226b0c4915fd39026df26f4d7f6134ad","endpoint_id":null,"changed_at":"2026-09-23T00:20:23.092Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"077d649d39243b85cf2d2a6f2eb6afa6","endpoint_id":null,"changed_at":"2026-09-14T12:17:46.238Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"46a86f1c6c4797ae7eb2eecd4bdceac3","endpoint_id":null,"changed_at":"2026-09-14T00:18:32.405Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"2e7be9287ad30d0060ac1ffe42aad61b","endpoint_id":null,"changed_at":"2026-09-05T12:18:39.123Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"d21e6fa6330da0421708f77bd9d1bda9","endpoint_id":null,"changed_at":"2026-09-05T12:18:39.123Z","change_type":"security-property-changed","field_name":"security:api_catalog_parse","old_value":"{\"state\":\"observed\",\"evidence\":\"API catalog source returned HTTP 404; prior advertised links were withdrawn\",\"basis\":\"RFC 9727 discovery response\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"No RFC 9727 API catalog was available at this URL (HTTP 404); prior advertised links were withdrawn\",\"basis\":\"RFC 9727 discovery response\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"56c4bd8fec2f0b8de059ff5567c4cee7","endpoint_id":null,"changed_at":"2026-09-05T00:19:00.897Z","change_type":"security-property-changed","field_name":"security:openapi_parse","old_value":"{\"state\":\"observed\",\"evidence\":\"Credential-shaped discovery URL was excluded from indexing and fan-out\",\"basis\":\"harmless discovery response\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"Credential-shaped discovery URL was excluded from indexing and fan-out by scanner policy\",\"basis\":\"harmless discovery response\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"be606d67fda502569f71d6df47c23f04","endpoint_id":null,"changed_at":"2026-09-05T00:19:00.897Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"75f4555a2c9c92b604d98c208e5e950a","endpoint_id":null,"changed_at":"2026-09-03T00:32:49.482Z","change_type":"security-property-changed","field_name":"security:probe_safety","old_value":"{\"state\":\"observed\",\"evidence\":\"Redirects to a different hostname are recorded as blocked, not followed\",\"basis\":\"scanner policy decision\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"cross-host-redirect: Cross-host redirect to https://www.codex.io/ was recorded but not followed\",\"basis\":\"scanner policy decision\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"d5f4c66d12cab4deec66e56251b317a8","endpoint_id":null,"changed_at":"2026-09-02T18:38:15.934Z","change_type":"security-property-changed","field_name":"security:probe_safety","old_value":"{\"state\":\"tested-fail\",\"evidence\":\"Redirects to a different hostname are recorded as blocked, not followed\",\"basis\":\"scanner execution\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"Redirects to a different hostname are recorded as blocked, not followed\",\"basis\":\"scanner policy decision\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"b25a37b8e54ac0eb3a73d257434bcb21","endpoint_id":null,"changed_at":"2026-08-28T12:19:29.766Z","change_type":"security-property-changed","field_name":"security:api_catalog_parse","old_value":"{\"state\":\"tested-fail\",\"evidence\":\"API catalog source returned HTTP 404; prior advertised links were withdrawn\",\"basis\":\"RFC 9727 discovery response\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"API catalog source returned HTTP 404; prior advertised links were withdrawn\",\"basis\":\"RFC 9727 discovery response\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"c9e302562ca7e1ddcdb83a940f5fcc27","endpoint_id":null,"changed_at":"2026-08-28T12:19:29.766Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"32c9787b4cc84f55674f4c097cc12cb3","endpoint_id":null,"changed_at":"2026-08-28T00:29:04.981Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"765ae54e59a828f379d7e5a2d06bc010","endpoint_id":null,"changed_at":"2026-08-28T00:29:04.981Z","change_type":"security-property-changed","field_name":"security:openapi_parse","old_value":"{\"state\":\"tested-fail\",\"evidence\":\"Credential-shaped discovery URL was excluded from indexing and fan-out\",\"basis\":\"harmless discovery response\"}","new_value":"{\"state\":\"observed\",\"evidence\":\"Credential-shaped discovery URL was excluded from indexing and fan-out\",\"basis\":\"harmless discovery response\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"e431d662c3e71570c01e70ebfe102156","endpoint_id":null,"changed_at":"2026-08-25T19:07:30.086Z","change_type":"security-property-changed","field_name":"security:bounded_response","old_value":"{\"state\":\"tested-pass\",\"evidence\":\"2225 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","new_value":"{\"state\":\"tested-pass\",\"evidence\":\"9 bytes within scanner limit\",\"basis\":\"harmless scanner\"}","evidence":"Repeated harmless observation changed the modeled property"},{"id":"1761a6bba0944559e17032cc58143e4b","endpoint_id":"7a18ab04487e6b8787e31fc5ea2d6736c4239eaa96599400f8fb41db1f353301","changed_at":"2026-08-25T18:43:12.674Z","change_type":"endpoint-discovered","field_name":"endpoint","old_value":null,"new_value":"created","evidence":"completed normalized source snapshot"},{"id":"39f7175bf784dd5ee293a3a1eeac9604","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"homepage_url","old_value":"https://graph.codex.io","new_value":"https://graph.codex.io/","evidence":"clock-guarded source update"},{"id":"3c5837b1caac0ec82a7363d31bb6c571","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"tags","old_value":"[]","new_value":"[\"graphql\",\"defi\",\"tokens\",\"trades\",\"nft\"]","evidence":"clock-guarded source update"},{"id":"5031e3465607c11f14ece856a1fc911c","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"description","old_value":"Public discovery candidate; runtime MPP not yet established","new_value":"Comprehensive onchain data API for tokens and prediction markets. Real-time prices, charts, trades, and wallet analytics across 80+ networks via GraphQL.","evidence":"clock-guarded source update"},{"id":"791f4e43d676597aa2db1212d31cf9db","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"categories","old_value":"[]","new_value":"[\"blockchain\",\"data\"]","evidence":"clock-guarded source update"},{"id":"7f3b483d8238b7deb646fbb0593752b7","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"status","old_value":"candidate","new_value":"active","evidence":"clock-guarded source update"},{"id":"93068034954e25789e3b3c5dba00b8aa","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-discovered","field_name":"service","old_value":null,"new_value":"created","evidence":"normalized discovery source"},{"id":"9b8b0d23f97c3557e7e2d42c96c4e40e","endpoint_id":null,"changed_at":"2026-08-25T18:43:12.674Z","change_type":"service-updated","field_name":"name","old_value":"graph.codex.io","new_value":"Codex","evidence":"clock-guarded source update"},{"id":"c977d121ee414e94393ed01138e065fb","endpoint_id":"7a18ab04487e6b8787e31fc5ea2d6736c4239eaa96599400f8fb41db1f353301","changed_at":"2026-08-25T18:43:12.674Z","change_type":"endpoint-source-discovered","field_name":"source:catalog","old_value":null,"new_value":"active","evidence":"https://mpp.dev/api/services"},{"id":"cff7bb8fafab58354c93bcfcc1341ef6","endpoint_id":"7a18ab04487e6b8787e31fc5ea2d6736c4239eaa96599400f8fb41db1f353301","changed_at":"2026-08-25T18:43:12.674Z","change_type":"payment-offer-discovered","field_name":"offer","old_value":null,"new_value":"{\"method\":\"tempo\",\"intent\":\"charge\",\"currency\":\"0x20c000000000000000000000b9537d11c60e8b50\",\"chainId\":null,\"recipient\":null,\"amount\":\"1000\",\"decimals\":6,\"unitType\":null,\"session\":null,\"sourceType\":\"catalog\",\"sourceRef\":\"https://mpp.dev/api/services\",\"sourceOrdinal\":0}","evidence":"catalog payment metadata"}],"changePagination":{"limit":50,"total":27,"truncated":false}}