Trashpanda Market Action Admission
Deterministically evaluates one proposed market action against the buyer's exact policy, immutable snapshot, fees, risk limits, and customer-declared public evidence, returning a replayable ADMIT, REFUSE, or ESCALATE receipt. It does not predict markets, handle keys, hold custody, sign, place orders, or execute trades.
- Price
- $0.04 USDC per request
- Network
- Base mainnet,
eip155:8453, settled in USDC through the Coinbase CDP facilitator - Method and URL
POST https://market.561.group/v1/market-action/admission- Response type
application/json- Seller
- Causeway Services (561 Group)
Input contract
Input that fails this contract is refused with a 4xx status before any payment is requested.
{
"maxBytes": 102400,
"bodySchema": {
"type": "object",
"required": [
"type",
"version",
"candidate",
"anchor",
"evidence",
"policy",
"receiptProfile"
],
"properties": {
"type": {
"const": "MarketActionAdmissionRequest"
},
"version": {
"const": 1
},
"candidate": {
"type": "object",
"description": "One proposed BUY, SELL, CLOSE, REDUCE, or HOLD action; never an order or execution grant."
},
"anchor": {
"type": "object",
"description": "One immutable content-addressed snapshot and bounded decision-validity window."
},
"evidence": {
"type": "array",
"description": "Sorted customer-declared, publicly referenceable observations bound to the snapshot."
},
"policy": {
"type": "object",
"description": "Sorted deterministic admission clauses for venue, instrument, action, notional, leverage, evidence thresholds, and freshness."
},
"receiptProfile": {
"const": "full-v1"
}
}
}
}
Example request
{
"method": "POST",
"url": "https://market.561.group/v1/market-action/admission",
"headers": {
"accept": "application/json",
"content-type": "application/json"
},
"body": {
"type": "MarketActionAdmissionRequest",
"version": 1,
"candidate": {
"type": "CandidateMarketAction",
"action": "SELL",
"venue": "urn:venue:gmx-v2:eip155:42161",
"instrument": "urn:instrument:gmx:eth-usd-perpetual",
"side": "LONG",
"notionalUsdMicros": "25000000",
"leverageBps": "20000"
},
"anchor": {
"type": "ImmutableMarketDecisionAnchor",
"snapshot": "ni:///sha-256;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"decisionAt": "2026-07-22T18:00:30.000Z",
"expiresAt": "2026-07-22T18:05:30.000Z"
},
"evidence": [],
"policy": {
"type": "MarketActionAdmissionPolicy",
"version": 1,
"clauses": [
{
"id": "a-action",
"type": "ActionIn",
"actions": [
"SELL"
]
},
{
"id": "b-notional",
"type": "NotionalUsdMicrosAtMost",
"value": "50000000"
},
{
"id": "c-leverage",
"type": "LeverageBpsAtMost",
"value": "30000"
}
]
},
"receiptProfile": "full-v1"
}
}
Output
{
"schema": {
"type": "object",
"required": [
"id",
"type",
"requestDigest",
"candidateDigest",
"policyDigest",
"snapshot",
"decisionAt",
"validUntil",
"engine",
"clauseResults",
"verdict",
"replay",
"forbiddenEffects"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"const": "MarketActionAdmissionReceipt"
},
"verdict": {
"enum": [
"ADMIT",
"REFUSE",
"ESCALATE"
]
},
"clauseResults": {
"type": "array"
},
"forbiddenEffects": {
"type": "object"
}
}
},
"example": {
"id": "ni:///sha-256;mshiVXmzYJ5NKzaGyYPYr_YsMJrUHlbN-aMWxiLG5K8",
"type": "MarketActionAdmissionReceipt",
"version": 1,
"requestDigest": "ni:///sha-256;hM-CWdx0B6FiU_m1YW9T_zszoYVPLhKvS0iTlUYepMw",
"candidateDigest": "ni:///sha-256;-IV8qW8_dh30Y6LDm-COWPxvAbLW06C_Lg_dr7U8U98",
"policyDigest": "ni:///sha-256;LvzlDtQN4eARgJ51OOiLwkSwVf_w8VFkgm57sMDpHmA",
"snapshot": "ni:///sha-256;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"decisionAt": "2026-07-22T18:00:30.000Z",
"validUntil": "2026-07-22T18:05:30.000Z",
"engine": {
"id": "ni:///sha-256;-nztTB51d0leDDsL9bBVvvkNzWrTmRRgmOAZG-k2aiE",
"version": 1
},
"clauseResults": [
{
"clauseId": "a-action",
"clauseType": "ActionIn",
"disposition": "PASS",
"actual": "SELL",
"expected": [
"SELL"
],
"evidenceReferences": []
},
{
"clauseId": "b-notional",
"clauseType": "NotionalUsdMicrosAtMost",
"disposition": "PASS",
"actual": "25000000",
"expected": "50000000",
"evidenceReferences": []
},
{
"clauseId": "c-leverage",
"clauseType": "LeverageBpsAtMost",
"disposition": "PASS",
"actual": "20000",
"expected": "30000",
"evidenceReferences": []
}
],
"verdict": "ADMIT",
"evidenceReferences": [],
"evidenceAssurance": "customer-declared-unverified",
"decisionScope": "policy-admission-only-not-prediction-or-execution",
"replay": {
"operation": "evaluateMarketActionAdmission",
"engineId": "ni:///sha-256;-nztTB51d0leDDsL9bBVvvkNzWrTmRRgmOAZG-k2aiE",
"module": "@red-cup-engineering/blockchain-trashpanda",
"export": "evaluateMarketActionAdmission",
"runtime": "node>=22.18",
"normalizedRequest": {
"type": "MarketActionAdmissionRequest",
"version": 1,
"candidate": {
"type": "CandidateMarketAction",
"action": "SELL",
"venue": "urn:venue:gmx-v2:eip155:42161",
"instrument": "urn:instrument:gmx:eth-usd-perpetual",
"side": "LONG",
"notionalUsdMicros": "25000000",
"leverageBps": "20000"
},
"anchor": {
"
… (truncated; the full contract is in /v1/catalog)
How to buy with x402
- Send the request without payment. The server answers
402 Payment Requiredwith a base64 JSONPAYMENT-REQUIREDheader holding the amount, asset, network and payee. - Have your wallet sign an EIP-3009
transferWithAuthorizationfor exactly those terms (an x402 client library does this for you). - Repeat the identical request with the signed payload in the
PAYMENT-SIGNATUREheader. - The server verifies, runs the operation, settles, and returns
200with the result and aPAYMENT-RESPONSEheader carrying the settlement receipt.
Read the price without paying
curl --include --request POST --header 'accept: application/json' --header 'content-type: application/json' --data-raw '{"type":"MarketActionAdmissionRequest","version":1,"candidate":{"type":"CandidateMarketAction","action":"SELL","venue":"urn:venue:gmx-v2:eip155:42161","instrument":"urn:instrument:gmx:eth-usd-perpetual","side":"LONG","notionalUsdMicros":"25000000","leverageBps":"20000"},"anchor":{"type":"ImmutableMarketDecisionAnchor","snapshot":"ni:///sha-256;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","decisionAt":"2026-07-22T18:00:30.000Z","expiresAt":"2026-07-22T18:05:30.000Z"},"evidence":[],"policy":{"type":"MarketActionAdmissionPolicy","version":1,"clauses":[{"id":"a-action","type":"ActionIn","actions":["SELL"]},{"id":"b-notional","type":"NotionalUsdMicrosAtMost","value":"50000000"},{"id":"c-leverage","type":"LeverageBpsAtMost","value":"30000"}]},"receiptProfile":"full-v1"}' --url 'https://market.561.group/v1/market-action/admission'
This request authorizes nothing; it returns the live payment terms. Read the full explanation of x402.
Machine-readable
- /.well-known/x402: x402 discovery document for every offer
- /v1/catalog: full catalog with contracts and examples
- /llms.txt: the market in llms.txt form
- services.561.group: Causeway Services