{"uid":"cap_NOtFyJTDcGBCCGMOGSsP6","slug":"dolihi-preflight-api-inspector-76ac772d","name":"Dolihi Preflight API Inspector","description":"Diagnose a public HTTPS JSON API before integration: access, HTTP method, response format, required fields, JSON Pointer types, bounded JSON schema and advertised payment requirements. Returns evidence and a next step. Does not pay the inspected API or verify settlement.","url":"https://dolihi-preflight.onrender.com/v1/preflight/paid?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTPS endpoint; no credentials."},"method":{"enum":["GET"],"type":"string","default":"GET"},"data_rules":{"type":"array","items":{"oneOf":[{"type":"object","required":["array_path","count_path","kind"],"properties":{"kind":{"const":"count_equals_length"},"array_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."},"count_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."}},"additionalProperties":false},{"type":"object","required":["array_path","key_path","kind"],"properties":{"kind":{"const":"unique"},"key_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."},"array_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."}},"additionalProperties":false},{"type":"object","required":["array_path","direction","key_path","kind"],"properties":{"kind":{"const":"ordered"},"key_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."},"direction":{"enum":["ascending","descending"]},"array_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."}},"additionalProperties":false},{"type":"object","required":["kind","left_path","operator","right_path"],"properties":{"kind":{"const":"compare"},"operator":{"enum":["eq","lt","le","gt","ge"]},"left_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."},"right_path":{"type":"string","maxLength":128,"description":"JSON Pointer; empty string selects the root."}},"additionalProperties":false}]},"maxItems":20,"minItems":1,"description":"Declared JSON invariants: count_equals_length, unique item keys, ordered item keys, compare scalar fields. Bounded to 1000 items per array and 10000 inspected items."},"x402_check":{"type":"boolean","description":"Inspect selected x402 v2 HTTP payment advertisement fields without payment or indexing claims."},"csv_contract":{"type":"object","description":"UTF-8 CSV checks: delimiter comma/semicolon/tab, required_columns, column_types string/integer/number/boolean/date, max_rows 1–1000. Cannot combine with JSON/OpenAPI/GeoJSON expectations."},"openapi_path":{"type":"string","description":"Optional path template from the supplied OpenAPI document."},"openapi_spec":{"type":"object","description":"Inline JSON OpenAPI 3.0/3.1 document slice, <=24 KiB; selected JSON response only. Local references only."},"geojson_check":{"type":"boolean","description":"Check bounded GeoJSON structure, coordinates and ring closure."},"expected_paths":{"type":"object","description":"JSON Pointer to expected type, e.g. /Results/0/Make: string.","maxProperties":30},"expected_fields":{"type":"array","items":{"type":"string"},"maxItems":20,"description":"Required top-level JSON keys."},"expected_status":{"type":"integer","maximum":599,"minimum":100,"description":"Expected HTTP status for this response."},"response_schema":{"type":"object","description":"Bounded subset: type, properties, required, items, additionalProperties, enum, const, numeric and string/array/object size bounds; formats uuid, date, strict date-time (uppercase T/Z, 1-6 fractional digits, no leap seconds). Bounded anyOf/oneOf/allOf (1–6 branches), type unions. No references or user patterns."},"baseline_response":{"description":"Optional supplied JSON sample, <=16 KiB and 2000 nodes. Compare observed paths/types; sample drift is not proof of a breaking API change."},"expected_content_type":{"type":"string","description":"Expected media type without parameters, e.g. application/json."},"openapi_baseline_spec":{"type":"object","description":"Optional prior OpenAPI slice. Requires openapi_spec; bounded declared operation/status/schema change report. No external references fetched."}}},"responseSchema":{"type":"json","example":{"agent":"dolihi-preflight","verdict":"FIELDS_PRESENT","next_step":"Required top-level keys exist; check types separately.","payment_verified":false,"response_fields_verified":true}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_75zbaQspk73n6DESAL1yo","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Diagnoses a public HTTPS JSON API endpoint before integration by checking access, HTTP method, response format, required fields, JSON Pointer types, and schema conformance — returning evidence and a recommended next step.","exampleAgentPrompt":"Before I wire up that public NHTSA vehicles API, can you run a preflight check on https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json using GET, confirm it returns HTTP 200 with application/json, and make sure the top-level keys Results and Count are present?","exampleUseCases":[{"title":"Pre-integration API health check","prompt":"I'm about to integrate the Open Library API — can you preflight https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data with GET and tell me if it returns 200, application/json, and has the key ISBN:0451526538 in the response?"},{"title":"Schema conformance before production rollout","prompt":"Before we push to production, preflight our partner's data feed at https://partner.example.com/v2/orders/feed — check GET returns HTTP 200, content type is application/json, and the response body contains top-level keys orders, total, and page."},{"title":"GeoJSON endpoint structure verification","prompt":"We're consuming a public GeoJSON boundary API at https://geodata.example.gov/boundaries/counties.geojson — can you preflight it to confirm it's accessible, returns valid GeoJSON with properly closed rings, and includes the features and type fields?"}],"resultDescription":"A JSON object containing: the agent name ('dolihi-preflight'), a verdict string summarizing the check outcome (e.g. FIELDS_PRESENT), a next_step string recommending what to do next, a payment_verified boolean indicating whether payment for the inspected API was confirmed (always false — this service does not pay the inspected API), and a response_fields_verified boolean indicating whether the required fields were found.","failureModes":["Inspected endpoint is not publicly accessible — connection refused or timeout","Inspected endpoint returns non-JSON content type when JSON is expected","Required fields specified in expected_fields are absent from the response, yielding a FIELDS_MISSING verdict","Response schema mismatch when response_schema is provided — JSON Pointer types don't match actual values","Unexpected HTTP status code returned by inspected endpoint, yielding status mismatch verdict","Input URL uses a non-HTTPS scheme or requires credentials — rejected as invalid","OpenAPI spec slice exceeds 24 KiB limit or contains unresolvable references","GeoJSON ring closure or coordinate validation failure when geojson_check is true"],"whenToPreferThis":"Choose Dolihi Preflight when you need a fast, evidence-based diagnostic of a third-party or partner public HTTPS JSON API before committing to integration — particularly when you want to verify field presence, type assertions via JSON Pointer, schema shape, GeoJSON structure, or simply confirm reachability and correct content type. Prefer it over manual curl testing when you need structured, actionable output with a clear next-step recommendation. Not suitable for private APIs requiring credentials, for executing or paying the inspected API, or for performance load testing.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-17T06:34:29.351Z","isFirstParty":false,"canonicalSlug":"dolihi-preflight-api-inspector-76ac772d"}