{
  "x402Version": 2,
  "id": 38446,
  "slug": "38446",
  "resource": "https://api.agentsouk.dev/v1/x402/lst_01M2P45H2MBEN75Q52FE5XY4KC",
  "description": "DeFi post-mortem to ordered attack chain: steps with a fixed primitive enum and the evidence each rests on (1 × 500 characters at 0.030000 USDC each)",
  "type": "http",
  "serviceName": "Agent Souk",
  "resourceType": "Security",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0xA0a2494006B72109137630bC026434a809731c07",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "30000",
      "amountUsd": 0.03,
      "maxTimeoutSeconds": 900
    }
  ],
  "outputSchema": {
    "properties": {
      "example": {
        "properties": {
          "chain": {
            "type": [
              "string",
              "null"
            ]
          },
          "funds_lost_usd": {
            "type": [
              "number",
              "null"
            ]
          },
          "model": {
            "type": "string"
          },
          "not_an_incident": {
            "type": [
              "string",
              "null"
            ]
          },
          "primitive_other": {
            "description": "set only where primitive is `other`: the short name the model gave that class",
            "type": [
              "string",
              "null"
            ]
          },
          "protocol": {
            "type": [
              "string",
              "null"
            ]
          },
          "steps": {
            "items": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "evidence": {
                  "description": "a span of your text, word for word",
                  "type": "string"
                },
                "evidence_verbatim": {
                  "description": "true when we found that span in your text again (whitespace, quotes and case normalised); false when the model paraphrased instead",
                  "type": "boolean"
                },
                "primitive": {
                  "enum": [
                    "flash-loan",
                    "oracle",
                    "reentrancy",
                    "access-control",
                    "approval",
                    "rounding",
                    "price-manipulation",
                    "logic-error",
                    "signature",
                    "upgrade",
                    "bridge",
                    "governance",
                    "front-running",
                    "key-compromise",
                    "supply-chain",
                    "phishing",
                    "overflow",
                    "delegatecall",
                    "mint",
                    "slippage",
                    "replay",
                    "insider",
                    "other"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "primitive",
                "description",
                "evidence",
                "evidence_verbatim"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "text_chars": {
            "type": "integer"
          },
          "units_charged": {
            "type": "integer"
          }
        },
        "required": [
          "steps",
          "primitive_other",
          "protocol",
          "chain",
          "funds_lost_usd",
          "not_an_incident",
          "model",
          "text_chars",
          "units_charged"
        ],
        "type": "object"
      },
      "type": {
        "type": "string"
      }
    },
    "required": [
      "type"
    ],
    "type": "object"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "text": "Given this DeFi exploit post-mortem: Attacker took a flash loan of 5000 ETH, then used the borrowed funds to skew the oracle price feed for the lending pool, then drained the pool liquidity through the mispriced collateral, then repaid the flash loan keeping the profit."
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "example": {
            "chain": null,
            "funds_lost_usd": null,
            "model": "claude-opus-5",
            "not_an_incident": null,
            "primitive_other": null,
            "protocol": null,
            "steps": [
              {
                "description": "The attacker borrowed 5,000 ETH to fund the rest of the chain.",
                "evidence": "Attacker took a flash loan of 5000 ETH",
                "evidence_verbatim": true,
                "primitive": "flash-loan"
              },
              {
                "description": "The borrowed funds were used to move the price feed the lending pool reads.",
                "evidence": "used the borrowed funds to skew the oracle price feed for the lending pool",
                "evidence_verbatim": true,
                "primitive": "oracle"
              },
              {
                "description": "The mispriced collateral let the attacker drain the pool.",
                "evidence": "drained the pool liquidity through the mispriced collateral",
                "evidence_verbatim": true,
                "primitive": "price-manipulation"
              },
              {
                "description": "The loan was repaid in the same transaction and the surplus kept.",
                "evidence": "repaid the flash loan keeping the profit",
                "evidence_verbatim": true,
                "primitive": "flash-loan"
              }
            ],
            "text_chars": 271,
            "units_charged": 1
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "body": {
                "additionalProperties": false,
                "properties": {
                  "note": {
                    "description": "Optional hint, e.g. \"the amounts are in EUR\". Treated as data, never as instructions",
                    "maxLength": 300,
                    "type": "string"
                  },
                  "text": {
                    "description": "The post-mortem, incident report, thread or article to read",
                    "maxLength": 20000,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "properties": {
                  "chain": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "funds_lost_usd": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "model": {
                    "type": "string"
                  },
                  "not_an_incident": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "primitive_other": {
                    "description": "set only where primitive is `other`: the short name the model gave that class",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "protocol": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "steps": {
                    "items": {
                      "properties": {
                        "description": {
                          "type": "string"
                        },
                        "evidence": {
                          "description": "a span of your text, word for word",
                          "type": "string"
                        },
                        "evidence_verbatim": {
                          "description": "true when we found that span in your text again (whitespace, quotes and case normalised); false when the model paraphrased instead",
                          "type": "boolean"
                        },
                        "primitive": {
                          "enum": [
                            "flash-loan",
                            "oracle",
                            "reentrancy",
                            "access-control",
                            "approval",
                            "rounding",
                            "price-manipulation",
                            "logic-error",
                            "signature",
                            "upgrade",
                            "bridge",
                            "governance",
                            "front-running",
                            "key-compromise",
                            "supply-chain",
                            "phishing",
                            "overflow",
                            "delegatecall",
                            "mint",
                            "slippage",
                            "replay",
                            "insider",
                            "other"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "primitive",
                        "description",
                        "evidence",
                        "evidence_verbatim"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "text_chars": {
                    "type": "integer"
                  },
                  "units_charged": {
                    "type": "integer"
                  }
                },
                "required": [
                  "steps",
                  "primitive_other",
                  "protocol",
                  "chain",
                  "funds_lost_usd",
                  "not_an_incident",
                  "model",
                  "text_chars",
                  "units_charged"
                ],
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "defi",
    "security",
    "exploit",
    "post-mortem",
    "attack-chain",
    "bazaar"
  ],
  "sourceHost": "api.agentsouk.dev",
  "lastUpdated": "2026-09-19T13:34:24.58Z",
  "quality": {
    "calls30d": 1,
    "uniquePayers30d": 1,
    "lastCalledAt": "2026-09-19T13:34:24.261Z"
  },
  "metadata": {
    "serviceName": "Agent Souk",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "text": "Given this DeFi exploit post-mortem: Attacker took a flash loan of 5000 ETH, then used the borrowed funds to skew the oracle price feed for the lending pool, then drained the pool liquidity through the mispriced collateral, then repaid the flash loan keeping the profit."
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "chain": null,
              "funds_lost_usd": null,
              "model": "claude-opus-5",
              "not_an_incident": null,
              "primitive_other": null,
              "protocol": null,
              "steps": [
                {
                  "description": "The attacker borrowed 5,000 ETH to fund the rest of the chain.",
                  "evidence": "Attacker took a flash loan of 5000 ETH",
                  "evidence_verbatim": true,
                  "primitive": "flash-loan"
                },
                {
                  "description": "The borrowed funds were used to move the price feed the lending pool reads.",
                  "evidence": "used the borrowed funds to skew the oracle price feed for the lending pool",
                  "evidence_verbatim": true,
                  "primitive": "oracle"
                },
                {
                  "description": "The mispriced collateral let the attacker drain the pool.",
                  "evidence": "drained the pool liquidity through the mispriced collateral",
                  "evidence_verbatim": true,
                  "primitive": "price-manipulation"
                },
                {
                  "description": "The loan was repaid in the same transaction and the surplus kept.",
                  "evidence": "repaid the flash loan keeping the profit",
                  "evidence_verbatim": true,
                  "primitive": "flash-loan"
                }
              ],
              "text_chars": 271,
              "units_charged": 1
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "additionalProperties": false,
                  "properties": {
                    "note": {
                      "description": "Optional hint, e.g. \"the amounts are in EUR\". Treated as data, never as instructions",
                      "maxLength": 300,
                      "type": "string"
                    },
                    "text": {
                      "description": "The post-mortem, incident report, thread or article to read",
                      "maxLength": 20000,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "text"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "properties": {
                    "chain": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "funds_lost_usd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "model": {
                      "type": "string"
                    },
                    "not_an_incident": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "primitive_other": {
                      "description": "set only where primitive is `other`: the short name the model gave that class",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "protocol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "steps": {
                      "items": {
                        "properties": {
                          "description": {
                            "type": "string"
                          },
                          "evidence": {
                            "description": "a span of your text, word for word",
                            "type": "string"
                          },
                          "evidence_verbatim": {
                            "description": "true when we found that span in your text again (whitespace, quotes and case normalised); false when the model paraphrased instead",
                            "type": "boolean"
                          },
                          "primitive": {
                            "enum": [
                              "flash-loan",
                              "oracle",
                              "reentrancy",
                              "access-control",
                              "approval",
                              "rounding",
                              "price-manipulation",
                              "logic-error",
                              "signature",
                              "upgrade",
                              "bridge",
                              "governance",
                              "front-running",
                              "key-compromise",
                              "supply-chain",
                              "phishing",
                              "overflow",
                              "delegatecall",
                              "mint",
                              "slippage",
                              "replay",
                              "insider",
                              "other"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "primitive",
                          "description",
                          "evidence",
                          "evidence_verbatim"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "text_chars": {
                      "type": "integer"
                    },
                    "units_charged": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "steps",
                    "primitive_other",
                    "protocol",
                    "chain",
                    "funds_lost_usd",
                    "not_an_incident",
                    "model",
                    "text_chars",
                    "units_charged"
                  ],
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "api.agentsouk.dev",
    "manifest_name": "api.agentsouk.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-14T01:15:01.050Z"
  },
  "exampleResponse": {
    "chain": null,
    "funds_lost_usd": null,
    "model": "claude-opus-5",
    "not_an_incident": null,
    "primitive_other": null,
    "protocol": null,
    "steps": [
      {
        "description": "The attacker borrowed 5,000 ETH to fund the rest of the chain.",
        "evidence": "Attacker took a flash loan of 5000 ETH",
        "evidence_verbatim": true,
        "primitive": "flash-loan"
      },
      {
        "description": "The borrowed funds were used to move the price feed the lending pool reads.",
        "evidence": "used the borrowed funds to skew the oracle price feed for the lending pool",
        "evidence_verbatim": true,
        "primitive": "oracle"
      },
      {
        "description": "The mispriced collateral let the attacker drain the pool.",
        "evidence": "drained the pool liquidity through the mispriced collateral",
        "evidence_verbatim": true,
        "primitive": "price-manipulation"
      },
      {
        "description": "The loan was repaid in the same transaction and the surplus kept.",
        "evidence": "repaid the flash loan keeping the profit",
        "evidence_verbatim": true,
        "primitive": "flash-loan"
      }
    ],
    "text_chars": 271,
    "units_charged": 1
  }
}