OpenChainGraph Suite · wave 22 · compliance_mandate

Pharma Serialization & Saleable-Returns Custody

Note (dated 2026-08-04): a chain composes independent computations performed in an analytical order. No step's output is carried into the next step by the execution model; each step computes from its own declared inputs. This is true of every chain on this site, including chains whose per-step copy below reads as a data handoff.

Verify DSCSA T3 + GS1 SGTIN and EPCIS event (art-112) → verify saleable returns against the original transaction (art-113) → assess suspect/illegitimate product and required FDA actions (art-114). Client-side, zero-egress alternative to a permissioned serialization consortium.

OpenChainGraph · 3 Steps compliance mandate DSCSA §582 · EU FMD Hash-Anchored §4 chain_depth:3 Client-Side · Zero PII
Chain Topology — Pharma Serialization & Saleable-Returns Custody
art-112 DSCSA T3 Verifier art-113 Saleable Returns art-114 Quarantine Assessor ⊣
§4 Execution Hash · Chain Definition Anchor
execution_hash:computing…
Chain Stages · 3 Steps
1 ROOT · D0 node
Verified T3 + SGTIN feeds saleable-returns matching
MCP Call · verify_dscsa_transaction_statement
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "verify_dscsa_transaction_statement",
    "arguments": {
      "sgtin": "00312345678901.12345",
      "transaction_information": true,
      "transaction_history": true,
      "transaction_statement": true,
      "epcis_event_type": "ObjectEvent"
    }
  },
  "id": 1
}
↓
2 D1 node
Return verdict feeds suspect-product assessment
MCP Call · verify_saleable_return
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "verify_saleable_return",
    "arguments": {
      "returned_sgtin": "00312345678901.12345",
      "returned_lot": "LOT-2026-001",
      "original_transaction_hash": "sha256:<from step 1>",
      "original_sgtin": "00312345678901.12345",
      "original_lot": "LOT-2026-001",
      "authorized_trading_partner": true
    }
  },
  "id": 2
}
↓
3 TERMINAL · D2 node
Exports custody artifact with execution_hash — final stage
MCP Call · assess_suspect_product_status
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "assess_suspect_product_status",
    "arguments": {
      "sgtin": "00312345678901.12345",
      "suspect_trigger": "saleable_return_refused",
      "counterfeit_evidence": false,
      "serial_verification_attempted": true,
      "quarantine_initiated": true
    }
  },
  "id": 3
}
Export Artifacts
Download the §4 chain definition artifact (hash-anchored composite JSON) or the §13.11 W3C Verifiable Credentials view.

Ask your agent

Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this whole workflow on the server and check one field that answers a real question.

Question: A pharmacy returned a serialized pack to our wholesaler desk. Does it qualify as a saleable return, or must we refuse it?
Run the AINumbers MCP tool `run_chain` with {"chain":"pharma-serialization-custody"} and read `art-113-saleable-returns-verifier.verdict`.
Re-run with `inputs` for `art-113-saleable-returns-verifier`, reusing the values that result echoed, with `within_resale_window` set to false. Compare the same field.
Verify: call `verify_execution_hash` (https://mcp.ainumbers.co/mcp) with `claimed_hash` set to `composite_execution_hash` and the full `composite_artifact`.
Ledger, for a human re-check: https://ledger.ainumbers.co/
PII rule: send synthetic or anonymised inputs only. The MCP server runs these kernels and logs no payloads.
Chain page: https://ainumbers.co/chaingraph/chains/pharma-serialization-custody.html