{"openapi":"3.1.0","info":{"title":"PawSift A2MCP API","version":"0.1.0"},"servers":[{"url":"/"}],"tags":[{"name":"audit","description":"Public PawSift audit contract."}],"paths":{"/api/v1/audit":{"post":{"tags":["audit"],"summary":"Audit a non-ingestible pet supply listing.","operationId":"postAudit","requestBody":{"required":false,"description":"Provide an AuditRequest for a product audit. A zero-byte availability probe returns the deterministic clear example with HTTP 200 for OKX.AI free-service validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditRequest"},"examples":{"clear":{"summary":"Supported clear request","value":{"pet":{"species":"cat","lifeStage":"adult","weightKg":4.8,"traits":["indoor","curious"]},"product":{"name":"Breakaway Reflective Collar","category":"collar_harness","intendedSpecies":["cat"],"materials":["nylon","zinc_alloy"],"minWeightKg":2.5,"maxWeightKg":7,"breakaway":true,"careInstructions":"Hand wash and air dry.","claims":["adjustable","reflective"]}}}}}}},"responses":{"200":{"description":"Successful audit response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditResponse"},"examples":{"clear":{"summary":"CLEAR verdict","value":{"verdict":"CLEAR","score":100,"rulesetVersion":"2026.07.7","findings":[{"ruleId":"PS-010","severity":"CLEAR","title":"Listing includes the core facts needed for this audit","reason":"The supplied facts are complete enough for a deterministic non-veterinary fit check and no blocking rule fired.","evidence":["pet.species=cat","category=collar_harness","weightRange=2.5-7"],"remediation":"No immediate listing patch is required from the supplied facts."}],"missingFacts":[],"ownerQuestions":[],"listingPatch":[],"boundary":"Non-veterinary product-fit audit based only on supplied facts.","receipt":{"algorithm":"sha256","inputHash":"f8ab57435e1fb63b7fda95d06437c263ef87e1c63051e723e39ee56797eff5ff","reportHash":"c35e0036153fbc634d99d2e780fd7036ee18fade3a26d3ef72c25ced67c32011"}}},"caution":{"summary":"CAUTION verdict","value":{"verdict":"CAUTION","score":92,"rulesetVersion":"2026.07.7","findings":[{"ruleId":"PS-003","severity":"CAUTION","title":"Materials are missing from the listing","reason":"The listing omits product materials, which makes it harder to evaluate surface contact and durability.","evidence":["materials=0"],"remediation":"List the primary materials, including any surface that touches the pet."}],"missingFacts":["materials"],"ownerQuestions":["What materials touch the pet or the pet's mouth?"],"listingPatch":["List the primary materials, including anything that touches the pet or its mouth."],"boundary":"Non-veterinary product-fit audit based only on supplied facts.","receipt":{"algorithm":"sha256","inputHash":"ef42c2356d2e0583a537784427b7b3485e0ca992523e050cdcf9124cba2ebe72","reportHash":"5c30ef127149c4c90e671e95fc3b30c15fd2742c8f6437cfa8d7e6a058ae6233"}}}}}}},"400":{"description":"Malformed JSON or schema validation error.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestResponse"}}}},"405":{"description":"Unsupported method for this route.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotAllowedResponse"}}}},"413":{"description":"Request body exceeded the 32 KiB limit.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeResponse"}}}},"422":{"description":"Request is explicitly outside the supported non-veterinary scope.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsupportedScopeResponse"},"examples":{"humanReview":{"summary":"HUMAN_REVIEW guidance for unsupported medical or ingestible language","value":{"error":{"code":"UNSUPPORTED_SCOPE","message":"Request falls outside PawSift's supported non-veterinary scope."},"guidance":{"verdict":"HUMAN_REVIEW","score":82,"rulesetVersion":"2026.07.7","findings":[{"ruleId":"PS-008","severity":"HUMAN_REVIEW","title":"Unsupported medical or ingestible wording detected","reason":"The listing includes medical or ingestible language that falls outside PawSift's supported non-veterinary scope.","evidence":["product.claims[0]=anti-inflammatory","product.claims[1]=post-treatment comfort"],"remediation":"Remove medical or ingestible language and restate only observable product facts."}],"missingFacts":[],"ownerQuestions":["Can you remove medical, treatment, or ingestible language from the submitted product listing?"],"listingPatch":["Replace medical or ingestible wording with observable, non-veterinary product facts."],"boundary":"Non-veterinary product-fit audit based only on supplied facts.","receipt":{"algorithm":"sha256","inputHash":"5d41ff212ba23cc9988af9e112dbe73ad46acbe029e04e9bc3edcb765890bd97","reportHash":"58c045b46f3c9aa28f5830b8f7fb79f97476b32971b8bf37c6e84358bce54e20"}}}}}}}},"500":{"description":"Sanitized internal error response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}}}},"options":{"summary":"CORS preflight for the audit endpoint.","responses":{"204":{"description":"Preflight response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}}}}}},"/api/v1/health":{"get":{"summary":"Get PawSift service health and identity metadata.","responses":{"200":{"description":"Health metadata.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"405":{"description":"Unsupported method for this route.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotAllowedResponse"}}}}}},"options":{"summary":"CORS preflight for the health endpoint.","responses":{"204":{"description":"Preflight response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}}}}}},"/api/v1/examples":{"get":{"summary":"Get reviewer-ready examples derived from shared fixtures.","responses":{"200":{"description":"Fixture-backed examples.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExamplesResponse"}}}},"405":{"description":"Unsupported method for this route.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotAllowedResponse"}}}}}},"options":{"summary":"CORS preflight for the examples endpoint.","responses":{"204":{"description":"Preflight response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}}}}}},"/openapi.json":{"get":{"summary":"Get the OpenAPI document for the public contract.","responses":{"200":{"description":"OpenAPI document.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}}}},"405":{"description":"Unsupported method for this route.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotAllowedResponse"}}}}}},"options":{"summary":"CORS preflight for the OpenAPI endpoint.","responses":{"204":{"description":"Preflight response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}}}}}},"/.well-known/pawsift.json":{"get":{"summary":"Get service discovery metadata.","responses":{"200":{"description":"Service discovery metadata.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellKnownResponse"}}}},"405":{"description":"Unsupported method for this route.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"},"Allow":{"$ref":"#/components/headers/Allow"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodNotAllowedResponse"}}}}}},"options":{"summary":"CORS preflight for the well-known endpoint.","responses":{"204":{"description":"Preflight response.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"X-PawSift-Ruleset":{"$ref":"#/components/headers/PawSiftRuleset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/AccessControlAllowOrigin"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/AccessControlAllowMethods"},"Access-Control-Allow-Headers":{"$ref":"#/components/headers/AccessControlAllowHeaders"},"Access-Control-Expose-Headers":{"$ref":"#/components/headers/AccessControlExposeHeaders"}}}}}}},"components":{"headers":{"Allow":{"description":"Allowed methods for this route.","schema":{"type":"string"}},"CacheControlNoStore":{"description":"Responses must not be cached.","schema":{"type":"string","const":"no-store"}},"PawSiftRuleset":{"description":"Current PawSift ruleset version applied to the response.","schema":{"type":"string","const":"2026.07.7"}},"AccessControlAllowOrigin":{"description":"Permissive read-only origin policy for public clients.","schema":{"type":"string","const":"*"}},"AccessControlAllowMethods":{"description":"Allowed methods for this route.","schema":{"type":"string"}},"AccessControlAllowHeaders":{"description":"Allowed request headers for this route.","schema":{"type":"string","const":"content-type"}},"AccessControlExposeHeaders":{"description":"Response headers exposed to browsers.","schema":{"type":"string","const":"x-pawsift-ruleset"}}},"schemas":{"AuditRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pet":{"type":"object","properties":{"species":{"type":"string","enum":["cat","dog"]},"lifeStage":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"weightKg":{"type":"number","minimum":0},"traits":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"description":"Defaults to [] when omitted."}},"required":["species","lifeStage","weightKg"],"additionalProperties":false},"product":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"category":{"type":"string","enum":["toy","carrier","bed","feeder","collar_harness","grooming_tool"]},"intendedSpecies":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["cat","dog"]}},"materials":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"description":"Defaults to [] when omitted."},"minWeightKg":{"type":"number","minimum":0},"maxWeightKg":{"type":"number","minimum":0},"dimensionsCm":{"type":"object","properties":{"lengthCm":{"type":"number","minimum":0},"widthCm":{"type":"number","minimum":0},"heightCm":{"type":"number","minimum":0}},"additionalProperties":false},"breakaway":{"type":"boolean"},"hasDetachableParts":{"type":"boolean"},"supervisionStatement":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"containsBattery":{"type":"boolean"},"containsMagnet":{"type":"boolean"},"careInstructions":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"claims":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"description":"Leading and trailing whitespace is trimmed before validation.","x-pawsift-normalization":"trim"},"description":"Defaults to [] when omitted."}},"required":["name","category","intendedSpecies"],"additionalProperties":false,"description":"If both minWeightKg and maxWeightKg are provided, minWeightKg must be less than or equal to maxWeightKg.","x-pawsift-constraints":[{"kind":"min_lte_max","minField":"minWeightKg","maxField":"maxWeightKg"}]}},"required":["pet","product"],"additionalProperties":false},"AuditResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"verdict":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"score":{"type":"integer","minimum":0,"maximum":100},"rulesetVersion":{"type":"string","minLength":1,"maxLength":500},"findings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":500},"severity":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"title":{"type":"string","minLength":1,"maxLength":500},"reason":{"type":"string","minLength":1,"maxLength":500},"evidence":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"remediation":{"type":"string","minLength":1,"maxLength":500}},"required":["ruleId","severity","title","reason","evidence","remediation"],"additionalProperties":false}},"missingFacts":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"ownerQuestions":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"listingPatch":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"boundary":{"type":"string","minLength":1,"maxLength":500},"receipt":{"type":"object","properties":{"algorithm":{"type":"string","const":"sha256"},"inputHash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"reportHash":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["algorithm","inputHash","reportHash"],"additionalProperties":false}},"required":["verdict","score","rulesetVersion","findings","missingFacts","ownerQuestions","listingPatch","boundary","receipt"],"additionalProperties":false},"HealthResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","const":"PawSift"},"version":{"type":"string","const":"0.1.0"},"endpoint":{"type":"string","const":"/api/v1/audit"},"category":{"type":"string","const":"Lifestyle"},"type":{"type":"string","const":"A2MCP"},"boundary":{"type":"string","const":"Non-veterinary product-fit audit based only on supplied facts."},"rulesetVersion":{"type":"string","const":"2026.07.7"},"status":{"type":"string","const":"ok"}},"required":["name","version","endpoint","category","type","boundary","rulesetVersion","status"],"additionalProperties":false},"ExamplesResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","const":"PawSift"},"version":{"type":"string","const":"0.1.0"},"endpoint":{"type":"string","const":"/api/v1/audit"},"category":{"type":"string","const":"Lifestyle"},"type":{"type":"string","const":"A2MCP"},"boundary":{"type":"string","const":"Non-veterinary product-fit audit based only on supplied facts."},"rulesetVersion":{"type":"string","const":"2026.07.7"},"examples":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"summary":{"type":"string"},"request":{"type":"object","properties":{"pet":{"type":"object","properties":{"species":{"type":"string","enum":["cat","dog"]},"lifeStage":{"type":"string","minLength":1,"maxLength":500},"weightKg":{"type":"number","minimum":0},"traits":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}}},"required":["species","lifeStage","weightKg","traits"],"additionalProperties":false},"product":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":500},"category":{"type":"string","enum":["toy","carrier","bed","feeder","collar_harness","grooming_tool"]},"intendedSpecies":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["cat","dog"]}},"materials":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"minWeightKg":{"type":"number","minimum":0},"maxWeightKg":{"type":"number","minimum":0},"dimensionsCm":{"type":"object","properties":{"lengthCm":{"type":"number","minimum":0},"widthCm":{"type":"number","minimum":0},"heightCm":{"type":"number","minimum":0}},"additionalProperties":false},"breakaway":{"type":"boolean"},"hasDetachableParts":{"type":"boolean"},"supervisionStatement":{"type":"string","minLength":1,"maxLength":500},"containsBattery":{"type":"boolean"},"containsMagnet":{"type":"boolean"},"careInstructions":{"type":"string","minLength":1,"maxLength":500},"claims":{"default":[],"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}}},"required":["name","category","intendedSpecies","materials","claims"],"additionalProperties":false}},"required":["pet","product"],"additionalProperties":false},"expectedVerdict":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"expectedRuleIds":{"type":"array","items":{"type":"string"}},"response":{"type":"object","properties":{"verdict":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"score":{"type":"integer","minimum":0,"maximum":100},"rulesetVersion":{"type":"string","minLength":1,"maxLength":500},"findings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":500},"severity":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"title":{"type":"string","minLength":1,"maxLength":500},"reason":{"type":"string","minLength":1,"maxLength":500},"evidence":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"remediation":{"type":"string","minLength":1,"maxLength":500}},"required":["ruleId","severity","title","reason","evidence","remediation"],"additionalProperties":false}},"missingFacts":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"ownerQuestions":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"listingPatch":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"boundary":{"type":"string","minLength":1,"maxLength":500},"receipt":{"type":"object","properties":{"algorithm":{"type":"string","const":"sha256"},"inputHash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"reportHash":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["algorithm","inputHash","reportHash"],"additionalProperties":false}},"required":["verdict","score","rulesetVersion","findings","missingFacts","ownerQuestions","listingPatch","boundary","receipt"],"additionalProperties":false}},"required":["id","label","summary","request","expectedVerdict","expectedRuleIds","response"],"additionalProperties":false}}},"required":["name","version","endpoint","category","type","boundary","rulesetVersion","examples"],"additionalProperties":false},"WellKnownResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","const":"PawSift"},"version":{"type":"string","const":"0.1.0"},"endpoint":{"type":"string","const":"/api/v1/audit"},"category":{"type":"string","const":"Lifestyle"},"type":{"type":"string","const":"A2MCP"},"boundary":{"type":"string","const":"Non-veterinary product-fit audit based only on supplied facts."},"rulesetVersion":{"type":"string","const":"2026.07.7"},"health":{"type":"string","const":"/api/v1/health"},"examples":{"type":"string","const":"/api/v1/examples"},"openapi":{"type":"string","const":"/openapi.json"}},"required":["name","version","endpoint","category","type","boundary","rulesetVersion","health","examples","openapi"],"additionalProperties":false},"OpenApiDocument":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"openapi":{"type":"string","const":"3.1.0"},"info":{"type":"object","properties":{"title":{"type":"string","const":"PawSift A2MCP API"},"version":{"type":"string","const":"0.1.0"}},"required":["title","version"],"additionalProperties":false},"servers":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","const":"/"}},"required":["url"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"required":["name","description"],"additionalProperties":false}},"paths":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"components":{"type":"object","properties":{"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"schemas":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["headers","schemas"],"additionalProperties":false},"x-pawsift":{"type":"object","properties":{"category":{"type":"string","const":"Lifestyle"},"type":{"type":"string","const":"A2MCP"},"boundary":{"type":"string","const":"Non-veterinary product-fit audit based only on supplied facts."},"maxBodyBytes":{"type":"number","const":32768}},"required":["category","type","boundary","maxBodyBytes"],"additionalProperties":false}},"required":["openapi","info","servers","tags","paths","components","x-pawsift"],"additionalProperties":false},"BadRequestResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"INVALID_JSON"},"message":{"type":"string","const":"Request body must be valid JSON."}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"INVALID_REQUEST"},"message":{"type":"string","const":"Request body does not match the PawSift audit schema."},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}}},"required":["code","message","issues"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}]},"PayloadTooLargeResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"PAYLOAD_TOO_LARGE"},"message":{"type":"string","const":"Request body must be 32768 bytes or smaller."}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"MethodNotAllowedResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"METHOD_NOT_ALLOWED"},"message":{"type":"string","const":"Method not allowed."}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"UnsupportedScopeResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"UNSUPPORTED_SCOPE"},"message":{"type":"string","const":"Request falls outside PawSift's supported non-veterinary scope."}},"required":["code","message"],"additionalProperties":false},"guidance":{"type":"object","properties":{"verdict":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"score":{"type":"integer","minimum":0,"maximum":100},"rulesetVersion":{"type":"string","minLength":1,"maxLength":500},"findings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":500},"severity":{"type":"string","enum":["CLEAR","CAUTION","BLOCK","HUMAN_REVIEW"]},"title":{"type":"string","minLength":1,"maxLength":500},"reason":{"type":"string","minLength":1,"maxLength":500},"evidence":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"remediation":{"type":"string","minLength":1,"maxLength":500}},"required":["ruleId","severity","title","reason","evidence","remediation"],"additionalProperties":false}},"missingFacts":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"ownerQuestions":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"listingPatch":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"boundary":{"type":"string","minLength":1,"maxLength":500},"receipt":{"type":"object","properties":{"algorithm":{"type":"string","const":"sha256"},"inputHash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"reportHash":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"required":["algorithm","inputHash","reportHash"],"additionalProperties":false}},"required":["verdict","score","rulesetVersion","findings","missingFacts","ownerQuestions","listingPatch","boundary","receipt"],"additionalProperties":false}},"required":["error","guidance"],"additionalProperties":false},"InternalErrorResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","const":"INTERNAL_ERROR"},"message":{"type":"string","const":"Internal server error."},"correlationId":{"type":"string"}},"required":["code","message","correlationId"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"x-pawsift":{"category":"Lifestyle","type":"A2MCP","boundary":"Non-veterinary product-fit audit based only on supplied facts.","maxBodyBytes":32768}}