Skip to main content
Glama

Robinhood Chain per-trade reserves ($0.02)

rhc_curve_trades
Read-onlyIdempotent

$0.02 USDC per page. Use when you index or price a pons curve and need the reserves after each trade, which the deployed curves do not emit; check your own numbers first on the free sample GET /v1/rhc/sample/trades?address=. Input: address (0x pons v2 curve or token), since (optional: optional start, exclusive: next_cursor 'block:log_index' of the previous page, a block number, or unix seconds (values >= 1e9); omitted = from the curve's first trade), limit (1-500, default 100). Reserves of one Robinhood Chain memecoin curve rebuilt to the wei with the exact four-word pons v2 model from its public events in our own capture. Per buy, sell and fee-sweep buyback in block order: amounts, fee, snipe and creator tax, Q and T after it (getReserves()), price Q/T, multiple vs launch, share of the 4.2 ETH graduation raised, a check against the prior state, next_cursor. ETH-paired curves up to 90 min old. Returns a JSON envelope with data{curve, fees, model, items[block, log_index, side, amounts, reserves_after{Q, T, real_quote}, price_after, price_multiple, raised_fraction, check], next_cursor, more, replay}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoevents per page (1-500)
sinceNooptional start, exclusive: next_cursor 'block:log_index' of the previous page, a block number, or unix seconds (values >= 1e9); omitted = from the curve's first trade
addressYes0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / address / description
      Previous value: -"0x-prefixed 40-hex Pons V2 curve OR token address on Robinhood Chain"New value: +"0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain"
  2. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "coverage": {
      -        "enum": [
      -          "full",
      -          "thin"
      -        ],
      -        "type": "string"
      -      },
      -      "data": {
      -        "properties": {
      -          "count": {
      -            "type": "integer"
      -          },
      -          "curve": {
      -            "type": "string"
      -          },
      -          "fees": {
      -            "type": "object"
      -          },
      -          "items": {
      -            "items": {
      -              "properties": {
      -                "block": {
      -                  "type": "integer"
      -                },
      -                "block_ts": {
      -                  "type": "number"
      -                },
      -                "check": {
      -                  "enum": [
      -                    "exact",
      -                    "completion_clamp"
      -                  ],
      -                  "type": "string"
      -                },
      -                "creator_tax": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": "string"
      -                },
      -                "fee": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": "string"
      -                },
      -                "log_index": {
      -                  "type": "integer"
      -                },
      -                "price_after": {
      -                  "type": "number"
      -                },
      -                "price_multiple": {
      -                  "type": "number"
      -                },
      -                "quote_in": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "quote_out": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "raised_fraction": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "recipient": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "reserves_after": {
      -                  "properties": {
      -                    "Q": {
      -                      "pattern": "^[0-9]+$",
      -                      "type": "string"
      -                    },
      -                    "T": {
      -                      "pattern": "^[0-9]+$",
      -                      "type": "string"
      -                    },
      -                    "real_quote": {
      -                      "pattern": "^-?[0-9]+$",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "Q",
      -                    "T",
      -                    "real_quote"
      -                  ],
      -                  "type": "object"
      -                },
      -                "route": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "sender": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "side": {
      -                  "enum": [
      -                    "buy",
      -                    "sell",
      -                    "buyback"
      -                  ],
      -                  "type": "string"
      -                },
      -                "snipe_tax": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": "string"
      -                },
      -                "tokens_in": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "tokens_out": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "tx": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "block",
      -                "log_index",
      -                "tx",
      -                "block_ts",
      -                "side",
      -                "quote_in",
      -                "quote_out",
      -                "tokens_in",
      -                "tokens_out",
      -                "fee",
      -                "snipe_tax",
      -                "creator_tax",
      -                "reserves_after",
      -                "price_after",
      -                "price_multiple",
      -                "raised_fraction",
      -                "check"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "model": {
      -            "type": "object"
      -          },
      -          "more": {
      -            "type": "boolean"
      -          },
      -          "next_cursor": {
      -            "pattern": "^[0-9]+:[0-9]+$",
      -            "type": "string"
      -          },
      -          "next_url": {
      -            "type": "string"
      -          },
      -          "replay": {
      -            "type": "object"
      -          },
      -          "status": {
      -            "type": "string"
      -          },
      -          "token": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "curve",
      -          "fees",
      -          "model",
      -          "count",
      -          "items",
      -          "next_cursor",
      -          "more",
      -          "replay"
      -        ],
      -        "type": "object"
      -      },
      -      "generated_at": {
      -        "type": "string"
      -      },
      -      "meta": {
      -        "type": "object"
      -      },
      -      "ok": {
      -        "type": "boolean"
      -      },
      -      "schema_version": {
      -        "type": "string"
      -      },
      -      "t": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "schema_version",
      -      "generated_at",
      -      "t",
      -      "coverage",
      -      "data",
      -      "meta"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "isError: the x402 v2 payment requirements. Pay one accepts entry and call again with _meta['x402/payment']. error says why when a payment was sent and rejected; a failed settlement adds x402/payment-response. Nothing is charged.",
      -    "properties": {
      -      "accepts": {
      -        "items": {
      -          "properties": {
      -            "amount": {
      -              "type": "string"
      -            },
      -            "asset": {
      -              "type": "string"
      -            },
      -            "extra": {
      -              "type": "object"
      -            },
      -            "maxTimeoutSeconds": {
      -              "type": "integer"
      -            },
      -            "network": {
      -              "type": "string"
      -            },
      -            "payTo": {
      -              "type": "string"
      -            },
      -            "scheme": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "scheme",
      -            "network",
      -            "amount",
      -            "asset",
      -            "payTo"
      -          ],
      -          "type": "object"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "extensions": {
      -        "type": "object"
      -      },
      -      "resource": {
      -        "properties": {
      -          "description": {
      -            "type": "string"
      -          },
      -          "mimeType": {
      -            "type": "string"
      -          },
      -          "url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "url"
      -        ],
      -        "type": "object"
      -      },
      -      "x402/payment-response": {
      -        "properties": {
      -          "errorReason": {
      -            "type": "string"
      -          },
      -          "network": {
      -            "type": "string"
      -          },
      -          "success": {
      -            "type": "boolean"
      -          },
      -          "transaction": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "success"
      -        ],
      -        "type": "object"
      -      },
      -      "x402Version": {
      -        "const": 2
      -      }
      -    },
      -    "required": [
      -      "x402Version",
      -      "resource",
      -      "accepts"
      -    ],
      -    "title": "PaymentRequired",
      -    "type": "object"
      -  },
      -  {
      -    "description": "isError: a refusal answered without charging (invalid or uncovered arguments, stale feed, nothing new since the cursor, a payment that cannot be matched to this request). error is a stable code; live_examples name mints covered now.",
      -    "properties": {
      -      "address": {
      -        "type": "string"
      -      },
      -      "avoid_skipped": {
      -        "type": "integer"
      -      },
      -      "case_mangled_mints": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "charged": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "curve": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "feed_lag_s": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "free_check": {
      -        "type": "string"
      -      },
      -      "got": {
      -        "type": [
      -          "string",
      -          "integer"
      -        ]
      -      },
      -      "hint": {
      -        "type": "string"
      -      },
      -      "invalid": {
      -        "type": "object"
      -      },
      -      "live_examples": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "max_feed_lag_s": {
      -        "type": "number"
      -      },
      -      "max_mints": {
      -        "type": "integer"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "mint": {
      -        "type": "string"
      -      },
      -      "missing": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "newest_cursor": {
      -        "type": "string"
      -      },
      -      "ok": {
      -        "const": false
      -      },
      -      "payment_status": {
      -        "type": "string"
      -      },
      -      "scanned": {
      -        "type": "integer"
      -      },
      -      "schema": {
      -        "type": "object"
      -      },
      -      "since": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "tool": {
      -        "type": "string"
      -      },
      -      "unavailable_mints": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "unverified_event": {
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "window_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "error"
      -    ],
      -    "title": "Refusal",
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "coverage": {
      +        "enum": [
      +          "full",
      +          "thin"
      +        ],
      +        "type": "string"
      +      },
      +      "data": {
      +        "properties": {
      +          "count": {
      +            "type": "integer"
      +          },
      +          "curve": {
      +            "type": "string"
      +          },
      +          "fees": {
      +            "type": "object"
      +          },
      +          "items": {
      +            "items": {
      +              "properties": {
      +                "block": {
      +                  "type": "integer"
      +                },
      +                "block_ts": {
      +                  "type": "number"
      +                },
      +                "check": {
      +                  "enum": [
      +                    "exact",
      +                    "completion_clamp"
      +                  ],
      +                  "type": "string"
      +                },
      +                "creator_tax": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "fee": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "log_index": {
      +                  "type": "integer"
      +                },
      +                "price_after": {
      +                  "type": "number"
      +                },
      +                "price_multiple": {
      +                  "type": "number"
      +                },
      +                "quote_in": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "quote_out": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "raised_fraction": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "recipient": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "reserves_after": {
      +                  "properties": {
      +                    "Q": {
      +                      "pattern": "^[0-9]+$",
      +                      "type": "string"
      +                    },
      +                    "T": {
      +                      "pattern": "^[0-9]+$",
      +                      "type": "string"
      +                    },
      +                    "real_quote": {
      +                      "pattern": "^-?[0-9]+$",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "Q",
      +                    "T",
      +                    "real_quote"
      +                  ],
      +                  "type": "object"
      +                },
      +                "route": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sender": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "side": {
      +                  "enum": [
      +                    "buy",
      +                    "sell",
      +                    "buyback"
      +                  ],
      +                  "type": "string"
      +                },
      +                "snipe_tax": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "tokens_in": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "tokens_out": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "tx": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "block",
      +                "log_index",
      +                "tx",
      +                "block_ts",
      +                "side",
      +                "quote_in",
      +                "quote_out",
      +                "tokens_in",
      +                "tokens_out",
      +                "fee",
      +                "snipe_tax",
      +                "creator_tax",
      +                "reserves_after",
      +                "price_after",
      +                "price_multiple",
      +                "raised_fraction",
      +                "check"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "model": {
      +            "type": "object"
      +          },
      +          "more": {
      +            "type": "boolean"
      +          },
      +          "next_cursor": {
      +            "pattern": "^[0-9]+:[0-9]+$",
      +            "type": "string"
      +          },
      +          "next_url": {
      +            "type": "string"
      +          },
      +          "replay": {
      +            "type": "object"
      +          },
      +          "status": {
      +            "type": "string"
      +          },
      +          "token": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "curve",
      +          "fees",
      +          "model",
      +          "count",
      +          "items",
      +          "next_cursor",
      +          "more",
      +          "replay"
      +        ],
      +        "type": "object"
      +      },
      +      "generated_at": {
      +        "type": "string"
      +      },
      +      "meta": {
      +        "type": "object"
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "schema_version": {
      +        "type": "string"
      +      },
      +      "t": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "schema_version",
      +      "generated_at",
      +      "t",
      +      "coverage",
      +      "data",
      +      "meta"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "isError: the x402 v2 payment requirements. Pay one accepts entry and call again with _meta['x402/payment']. error says why when a payment was sent and rejected; a failed settlement adds x402/payment-response. Nothing is charged.",
      +    "properties": {
      +      "accepts": {
      +        "items": {
      +          "properties": {
      +            "amount": {
      +              "type": "string"
      +            },
      +            "asset": {
      +              "type": "string"
      +            },
      +            "extra": {
      +              "type": "object"
      +            },
      +            "maxTimeoutSeconds": {
      +              "type": "integer"
      +            },
      +            "network": {
      +              "type": "string"
      +            },
      +            "payTo": {
      +              "type": "string"
      +            },
      +            "scheme": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "scheme",
      +            "network",
      +            "amount",
      +            "asset",
      +            "payTo"
      +          ],
      +          "type": "object"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "extensions": {
      +        "type": "object"
      +      },
      +      "resource": {
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          },
      +          "mimeType": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "x402/payment-response": {
      +        "properties": {
      +          "errorReason": {
      +            "type": "string"
      +          },
      +          "network": {
      +            "type": "string"
      +          },
      +          "success": {
      +            "type": "boolean"
      +          },
      +          "transaction": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "success"
      +        ],
      +        "type": "object"
      +      },
      +      "x402Version": {
      +        "const": 2
      +      }
      +    },
      +    "required": [
      +      "x402Version",
      +      "resource",
      +      "accepts"
      +    ],
      +    "title": "PaymentRequired",
      +    "type": "object"
      +  },
      +  {
      +    "description": "isError: a refusal answered without charging (invalid or uncovered arguments, stale feed, nothing new since the cursor, a payment that cannot be matched to this request). error is a stable code; live_examples name mints covered now.",
      +    "properties": {
      +      "address": {
      +        "type": "string"
      +      },
      +      "avoid_skipped": {
      +        "type": "integer"
      +      },
      +      "case_mangled_mints": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "charged": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "curve": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "feed_lag_s": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "free_check": {
      +        "type": "string"
      +      },
      +      "got": {
      +        "type": [
      +          "string",
      +          "integer"
      +        ]
      +      },
      +      "hint": {
      +        "type": "string"
      +      },
      +      "invalid": {
      +        "type": "object"
      +      },
      +      "live_examples": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "max_feed_lag_s": {
      +        "type": "number"
      +      },
      +      "max_mints": {
      +        "type": "integer"
      +      },
      +      "max_table_lag_s": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "mint": {
      +        "type": "string"
      +      },
      +      "missing": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "newest_cursor": {
      +        "type": "string"
      +      },
      +      "ok": {
      +        "const": false
      +      },
      +      "payment_status": {
      +        "type": "string"
      +      },
      +      "scanned": {
      +        "type": "integer"
      +      },
      +      "schema": {
      +        "type": "object"
      +      },
      +      "since": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "table_lag_s": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "unavailable_mints": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "unverified_event": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "window_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "error"
      +    ],
      +    "title": "Refusal",
      +    "type": "object"
      +  }
      +]
  3. Changed4 schema fields changed
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "coverage": {
      +        "enum": [
      +          "full",
      +          "thin"
      +        ],
      +        "type": "string"
      +      },
      +      "data": {
      +        "properties": {
      +          "count": {
      +            "type": "integer"
      +          },
      +          "curve": {
      +            "type": "string"
      +          },
      +          "fees": {
      +            "type": "object"
      +          },
      +          "items": {
      +            "items": {
      +              "properties": {
      +                "block": {
      +                  "type": "integer"
      +                },
      +                "block_ts": {
      +                  "type": "number"
      +                },
      +                "check": {
      +                  "enum": [
      +                    "exact",
      +                    "completion_clamp"
      +                  ],
      +                  "type": "string"
      +                },
      +                "creator_tax": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "fee": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "log_index": {
      +                  "type": "integer"
      +                },
      +                "price_after": {
      +                  "type": "number"
      +                },
      +                "price_multiple": {
      +                  "type": "number"
      +                },
      +                "quote_in": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "quote_out": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "raised_fraction": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "recipient": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "reserves_after": {
      +                  "properties": {
      +                    "Q": {
      +                      "pattern": "^[0-9]+$",
      +                      "type": "string"
      +                    },
      +                    "T": {
      +                      "pattern": "^[0-9]+$",
      +                      "type": "string"
      +                    },
      +                    "real_quote": {
      +                      "pattern": "^-?[0-9]+$",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "Q",
      +                    "T",
      +                    "real_quote"
      +                  ],
      +                  "type": "object"
      +                },
      +                "route": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sender": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "side": {
      +                  "enum": [
      +                    "buy",
      +                    "sell",
      +                    "buyback"
      +                  ],
      +                  "type": "string"
      +                },
      +                "snipe_tax": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": "string"
      +                },
      +                "tokens_in": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "tokens_out": {
      +                  "pattern": "^[0-9]+$",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "tx": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "block",
      +                "log_index",
      +                "tx",
      +                "block_ts",
      +                "side",
      +                "quote_in",
      +                "quote_out",
      +                "tokens_in",
      +                "tokens_out",
      +                "fee",
      +                "snipe_tax",
      +                "creator_tax",
      +                "reserves_after",
      +                "price_after",
      +                "price_multiple",
      +                "raised_fraction",
      +                "check"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "model": {
      +            "type": "object"
      +          },
      +          "more": {
      +            "type": "boolean"
      +          },
      +          "next_cursor": {
      +            "pattern": "^[0-9]+:[0-9]+$",
      +            "type": "string"
      +          },
      +          "next_url": {
      +            "type": "string"
      +          },
      +          "replay": {
      +            "type": "object"
      +          },
      +          "status": {
      +            "type": "string"
      +          },
      +          "token": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "curve",
      +          "fees",
      +          "model",
      +          "count",
      +          "items",
      +          "next_cursor",
      +          "more",
      +          "replay"
      +        ],
      +        "type": "object"
      +      },
      +      "generated_at": {
      +        "type": "string"
      +      },
      +      "meta": {
      +        "type": "object"
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "schema_version": {
      +        "type": "string"
      +      },
      +      "t": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "schema_version",
      +      "generated_at",
      +      "t",
      +      "coverage",
      +      "data",
      +      "meta"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "isError: the x402 v2 payment requirements. Pay one accepts entry and call again with _meta['x402/payment']. error says why when a payment was sent and rejected; a failed settlement adds x402/payment-response. Nothing is charged.",
      +    "properties": {
      +      "accepts": {
      +        "items": {
      +          "properties": {
      +            "amount": {
      +              "type": "string"
      +            },
      +            "asset": {
      +              "type": "string"
      +            },
      +            "extra": {
      +              "type": "object"
      +            },
      +            "maxTimeoutSeconds": {
      +              "type": "integer"
      +            },
      +            "network": {
      +              "type": "string"
      +            },
      +            "payTo": {
      +              "type": "string"
      +            },
      +            "scheme": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "scheme",
      +            "network",
      +            "amount",
      +            "asset",
      +            "payTo"
      +          ],
      +          "type": "object"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "extensions": {
      +        "type": "object"
      +      },
      +      "resource": {
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          },
      +          "mimeType": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "x402/payment-response": {
      +        "properties": {
      +          "errorReason": {
      +            "type": "string"
      +          },
      +          "network": {
      +            "type": "string"
      +          },
      +          "success": {
      +            "type": "boolean"
      +          },
      +          "transaction": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "success"
      +        ],
      +        "type": "object"
      +      },
      +      "x402Version": {
      +        "const": 2
      +      }
      +    },
      +    "required": [
      +      "x402Version",
      +      "resource",
      +      "accepts"
      +    ],
      +    "title": "PaymentRequired",
      +    "type": "object"
      +  },
      +  {
      +    "description": "isError: a refusal answered without charging (invalid or uncovered arguments, stale feed, nothing new since the cursor, a payment that cannot be matched to this request). error is a stable code; live_examples name mints covered now.",
      +    "properties": {
      +      "address": {
      +        "type": "string"
      +      },
      +      "avoid_skipped": {
      +        "type": "integer"
      +      },
      +      "case_mangled_mints": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "charged": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "curve": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "feed_lag_s": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "free_check": {
      +        "type": "string"
      +      },
      +      "got": {
      +        "type": [
      +          "string",
      +          "integer"
      +        ]
      +      },
      +      "hint": {
      +        "type": "string"
      +      },
      +      "invalid": {
      +        "type": "object"
      +      },
      +      "live_examples": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "max_feed_lag_s": {
      +        "type": "number"
      +      },
      +      "max_mints": {
      +        "type": "integer"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "mint": {
      +        "type": "string"
      +      },
      +      "missing": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "newest_cursor": {
      +        "type": "string"
      +      },
      +      "ok": {
      +        "const": false
      +      },
      +      "payment_status": {
      +        "type": "string"
      +      },
      +      "scanned": {
      +        "type": "integer"
      +      },
      +      "schema": {
      +        "type": "object"
      +      },
      +      "since": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "unavailable_mints": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "unverified_event": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "window_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "error"
      +    ],
      +    "title": "Refusal",
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / description
      Added value: +"One of three shapes. Success (isError false): the JSON envelope {ok, schema_version, generated_at, t, coverage, data, meta}. isError true: the x402 PaymentRequired {x402Version 2, resource, accepts[, error]} (pay and call again) or a refusal {ok: false, error, message, charged: false}; neither is charged."
    • removedOutput schema / properties
      Removed value: -{
      -  "coverage": {
      -    "enum": [
      -      "full",
      -      "thin"
      -    ],
      -    "type": "string"
      -  },
      -  "data": {
      -    "properties": {
      -      "count": {
      -        "type": "integer"
      -      },
      -      "curve": {
      -        "type": "string"
      -      },
      -      "fees": {
      -        "type": "object"
      -      },
      -      "items": {
      -        "items": {
      -          "properties": {
      -            "block": {
      -              "type": "integer"
      -            },
      -            "block_ts": {
      -              "type": "number"
      -            },
      -            "check": {
      -              "enum": [
      -                "exact",
      -                "completion_clamp"
      -              ],
      -              "type": "string"
      -            },
      -            "creator_tax": {
      -              "pattern": "^[0-9]+$",
      -              "type": "string"
      -            },
      -            "fee": {
      -              "pattern": "^[0-9]+$",
      -              "type": "string"
      -            },
      -            "log_index": {
      -              "type": "integer"
      -            },
      -            "price_after": {
      -              "type": "number"
      -            },
      -            "price_multiple": {
      -              "type": "number"
      -            },
      -            "quote_in": {
      -              "pattern": "^[0-9]+$",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "quote_out": {
      -              "pattern": "^[0-9]+$",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "raised_fraction": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "recipient": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "reserves_after": {
      -              "properties": {
      -                "Q": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": "string"
      -                },
      -                "T": {
      -                  "pattern": "^[0-9]+$",
      -                  "type": "string"
      -                },
      -                "real_quote": {
      -                  "pattern": "^-?[0-9]+$",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "Q",
      -                "T",
      -                "real_quote"
      -              ],
      -              "type": "object"
      -            },
      -            "route": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "sender": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "side": {
      -              "enum": [
      -                "buy",
      -                "sell",
      -                "buyback"
      -              ],
      -              "type": "string"
      -            },
      -            "snipe_tax": {
      -              "pattern": "^[0-9]+$",
      -              "type": "string"
      -            },
      -            "tokens_in": {
      -              "pattern": "^[0-9]+$",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "tokens_out": {
      -              "pattern": "^[0-9]+$",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "tx": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "block",
      -            "log_index",
      -            "tx",
      -            "block_ts",
      -            "side",
      -            "quote_in",
      -            "quote_out",
      -            "tokens_in",
      -            "tokens_out",
      -            "fee",
      -            "snipe_tax",
      -            "creator_tax",
      -            "reserves_after",
      -            "price_after",
      -            "price_multiple",
      -            "raised_fraction",
      -            "check"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "model": {
      -        "type": "object"
      -      },
      -      "more": {
      -        "type": "boolean"
      -      },
      -      "next_cursor": {
      -        "pattern": "^[0-9]+:[0-9]+$",
      -        "type": "string"
      -      },
      -      "next_url": {
      -        "type": "string"
      -      },
      -      "replay": {
      -        "type": "object"
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "token": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "curve",
      -      "fees",
      -      "model",
      -      "count",
      -      "items",
      -      "next_cursor",
      -      "more",
      -      "replay"
      -    ],
      -    "type": "object"
      -  },
      -  "generated_at": {
      -    "type": "string"
      -  },
      -  "meta": {
      -    "type": "object"
      -  },
      -  "ok": {
      -    "type": "boolean"
      -  },
      -  "schema_version": {
      -    "type": "string"
      -  },
      -  "t": {
      -    "type": "number"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "ok",
      -  "schema_version",
      -  "generated_at",
      -  "t",
      -  "coverage",
      -  "data",
      -  "meta"
      -]
  4. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already declare readOnlyHint=true, the description adds valuable behavioral context: it details the exact model used (four-word pons v2), the data sources (public events), the reconstruction to wei, and the outputs (per-trade amounts, fees, reserves after each trade, price, multiple, raised fraction, checks). It also states that it covers ETH-paired curves up to 90 min old, which is not in annotations. This goes beyond the generic read-only hint, though it doesn't mention pagination limits or potential rate limits, but the annotations cover the core safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized, front-loading the cost and primary use case, then detailing parameters and output. While it's long, every sentence adds value—covering cost, usage, input semantics, and output structure. The structure flows logically from purpose to inputs to outputs, though it could be slightly more compact, but it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (rebuilding reserves per trade with a specific model), the description is comprehensive. It covers the exact output format (JSON envelope with data{curve, fees, model, items[...]}), including each field within items, and the input parameters. Since an output schema is present, the description doesn't need to repeat return values, but it does summarize them effectively. With annotations covering safety and idempotency, the description is complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for each parameter. The description adds extra semantics by explaining the 'since' parameter in detail (exclusive, next_cursor format, block number or unix seconds) and the 'address' parameter (0x pons v2 curve or token). It also clarifies the default and range of 'limit'. This enhances the schema, moving beyond baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'use' and the resource: per-trade reserves of a Robinhood Chain curve, rebuilt to the wei from public events. It explicitly distinguishes itself from sibling tools by naming the free sample endpoint and the specific model (pons v2). The title and description together make the purpose unambiguous, and it stands apart from tools like rhc_curve_card or rhc_recent_launches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: when indexing or pricing a pons curve and needing reserves after each trade, which the deployed curves do not emit. It also advises to check your own numbers first on the free sample endpointcing excluding conditions. However, it does not explicitly mention when not to use it or name alternatives beyond the sample, but the context is sufficient for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources