{"id":"manual-applicability","title":"Does this manual or procedure apply to this unit?","description":"Checks whether a manual, service bulletin or procedure applies to a specific unit by comparing the scope the document declares (models, firmware or revision range, serial range, exclusions) with the unit's facts the caller supplies. Versions written as dotted digits (2.10.1) compare numerically per segment. For an agent about to follow a repair or configuration procedure. Applicable only when every declared scope field is shown to match; a unit fact that is missing is unknown, not applicable. Does not read the manual or look the unit up.","roi":"Catches the wrong-revision procedure before it is executed.","audience":"business","package":"compliance-evidence-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/manual-applicability","path":"/api/v1/manual-applicability","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["applicability","unit"],"properties":{"applicability":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field"],"properties":{"field":{"type":"string","maxLength":100,"description":"Unit attribute, for example model, firmware, serial, revision."},"equals":{"description":"The evidence value must equal this JSON value (deep equality)."},"oneOf":{"type":"array","maxItems":50,"items":{"description":"Allowed JSON value."},"description":"The evidence value must equal one of these."},"min":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."},"max":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive upper bound, same comparison rules as min."}}},"maxItems":100,"minItems":1,"description":"Scope the document declares: every entry must match."},"excludes":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field"],"properties":{"field":{"type":"string","maxLength":100,"description":"Unit attribute, for example model, firmware, serial, revision."},"equals":{"description":"The evidence value must equal this JSON value (deep equality)."},"oneOf":{"type":"array","maxItems":50,"items":{"description":"Allowed JSON value."},"description":"The evidence value must equal one of these."},"min":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."},"max":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive upper bound, same comparison rules as min."}}},"maxItems":100,"description":"Scope the document excludes: each entry that matches makes it inapplicable."},"unit":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key"],"properties":{"key":{"type":"string","maxLength":100},"value":{"description":"Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$","maxLength":40,"description":"When this was observed (ISO date or instant)."},"source":{"type":"string","maxLength":200}}},"maxItems":500,"description":"The unit's facts: key is the field name."}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["met","unmet","unknown"]},"optional":{"type":"boolean"},"needs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"state":{"type":"string","enum":["yes","no","unknown"]},"reason":{"type":"string","enum":["satisfied","missing","stale","no-reference-instant","no-evidence-date","value-mismatch","type-mismatch","conflicting-evidence","negative"]},"evidence":{"description":"The evidence value the verdict rests on."}}}}}}},"counts":{"type":"object","properties":{"met":{"type":"integer"},"unmet":{"type":"integer"},"unknown":{"type":"integer"},"optional":{"type":"integer"}},"description":"Non-optional requirements by state; optional ones are counted separately."},"applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"true when pass, false when fail, null when a unit fact is missing."},"mismatched":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields whose value is outside the declared scope."},"missingFacts":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields the unit facts do not cover."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["met","unmet","unknown"]},"optional":{"type":"boolean"},"needs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"state":{"type":"string","enum":["yes","no","unknown"]},"reason":{"type":"string","enum":["satisfied","missing","stale","no-reference-instant","no-evidence-date","value-mismatch","type-mismatch","conflicting-evidence","negative"]},"evidence":{"description":"The evidence value the verdict rests on."}}}}}}},"counts":{"type":"object","properties":{"met":{"type":"integer"},"unmet":{"type":"integer"},"unknown":{"type":"integer"},"optional":{"type":"integer"}},"description":"Non-optional requirements by state; optional ones are counted separately."},"applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"true when pass, false when fail, null when a unit fact is missing."},"mismatched":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields whose value is outside the declared scope."},"missingFacts":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields the unit facts do not cover."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"applicability":[{"field":"model","oneOf":["X200","X210"]},{"field":"firmware","min":"2.4.0","max":"2.9.9"}],"excludes":[{"field":"serial_batch","equals":"B7"}],"unit":[{"key":"model","value":"X210"},{"key":"firmware","value":"2.10.0"},{"key":"serial_batch","value":"B3"}]},"openapiOperation":{"operationId":"manual_applicability","summary":"Does this manual or procedure apply to this unit?","description":"Checks whether a manual, service bulletin or procedure applies to a specific unit by comparing the scope the document declares (models, firmware or revision range, serial range, exclusions) with the unit's facts the caller supplies. Versions written as dotted digits (2.10.1) compare numerically per segment. For an agent about to follow a repair or configuration procedure. Applicable only when every declared scope field is shown to match; a unit fact that is missing is unknown, not applicable. Does not read the manual or look the unit up.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"business","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/manual-applicability","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["applicability","unit"],"properties":{"applicability":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field"],"properties":{"field":{"type":"string","maxLength":100,"description":"Unit attribute, for example model, firmware, serial, revision."},"equals":{"description":"The evidence value must equal this JSON value (deep equality)."},"oneOf":{"type":"array","maxItems":50,"items":{"description":"Allowed JSON value."},"description":"The evidence value must equal one of these."},"min":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."},"max":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive upper bound, same comparison rules as min."}}},"maxItems":100,"minItems":1,"description":"Scope the document declares: every entry must match."},"excludes":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["field"],"properties":{"field":{"type":"string","maxLength":100,"description":"Unit attribute, for example model, firmware, serial, revision."},"equals":{"description":"The evidence value must equal this JSON value (deep equality)."},"oneOf":{"type":"array","maxItems":50,"items":{"description":"Allowed JSON value."},"description":"The evidence value must equal one of these."},"min":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive lower bound. Numbers compare numerically; two dotted-digit strings (1.10.2) compare segment by segment."},"max":{"anyOf":[{"type":"number"},{"type":"string","maxLength":40}],"description":"Inclusive upper bound, same comparison rules as min."}}},"maxItems":100,"description":"Scope the document excludes: each entry that matches makes it inapplicable."},"unit":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key"],"properties":{"key":{"type":"string","maxLength":100},"value":{"description":"Observed JSON value. Omitted means the fact is present with no value; false or null means observed absent."},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$","maxLength":40,"description":"When this was observed (ISO date or instant)."},"source":{"type":"string","maxLength":200}}},"maxItems":500,"description":"The unit's facts: key is the field name."}}},"example":{"applicability":[{"field":"model","oneOf":["X200","X210"]},{"field":"firmware","min":"2.4.0","max":"2.9.9"}],"excludes":[{"field":"serial_batch","equals":"B7"}],"unit":[{"key":"model","value":"X210"},{"key":"firmware","value":"2.10.0"},{"key":"serial_batch","value":"B3"}]}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"requirements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["met","unmet","unknown"]},"optional":{"type":"boolean"},"needs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"state":{"type":"string","enum":["yes","no","unknown"]},"reason":{"type":"string","enum":["satisfied","missing","stale","no-reference-instant","no-evidence-date","value-mismatch","type-mismatch","conflicting-evidence","negative"]},"evidence":{"description":"The evidence value the verdict rests on."}}}}}}},"counts":{"type":"object","properties":{"met":{"type":"integer"},"unmet":{"type":"integer"},"unknown":{"type":"integer"},"optional":{"type":"integer"}},"description":"Non-optional requirements by state; optional ones are counted separately."},"applicable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"true when pass, false when fail, null when a unit fact is missing."},"mismatched":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields whose value is outside the declared scope."},"missingFacts":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Fields the unit facts do not cover."},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/manual-applicability/","docsJson":"https://agents.writerslogic.com/docs/manual-applicability.json","sample":"https://agents.writerslogic.com/api/v1/samples/manual-applicability","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}