ToolAssay

Deterministic portfolio performance attribution vs BTC, ETH, stETH or any benchm

Deterministic portfolio performance attribution vs BTC, ETH, stETH or any benchmark. Returns Modified Dietz and money-weighted (XIRR) returns, per-position contribution and alpha, per-input source status and per-position data status with the reason, and a hashed (optionally EIP-191 signed) record of the calculation. No LLM.

Answeringour last check, 2026-10-10
1 of 1checks answered this week
251 msmedian answer time
$0.01listed price per call
$0.01price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://www.u2a.com.au/api/mcp/portfolio-attribution

CategoryEverything else
Provider hostwww.u2a.com.au
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days5 from 3 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-10 valid payment request 402$0.01 251 ms

Example input (from the provider)

{
  "body": {
    "benchmarks": [
      {
        "end_price": 112000,
        "id": "BTC",
        "start_price": 94000
      },
      {
        "end_price": 3900,
        "id": "stETH",
        "income_return": {
          "status": "estimated",
          "value": 0.022
        },
        "start_price": 3300
      }
    ],
    "currency": "USD",
    "period": {
      "end": "2026-09-30",
      "start": "2026-01-01"
    },
    "positions": [
      {
        "end_value": {
          "source": "coingecko close 2026-09-30",
          "status": "verified",
          "value": 12600
        },
        "flows": [
          {
            "amount": 2000,
            "date": "2026-04-01",
            "source": "tx 0xdef\u2026",
            "status": "verified"
          }
        ],
        "id": "ETH",
        "start_value": {
          "source": "wallet 0xabc\u2026, block 21500000",
          "status": "verified",
          "value": 10000
        }
      },
      {
        "end_value": 4200,
        "flows": [
          {
            "amount": -1000,
            "date": "2026-06-15",
            "source": "article",
            "status": "estimated"
          }
        ],
        "id": "SOL",
        "start_value": 5000
      }
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "properties": {
            "benchmarks": {
              "description": "Benchmarks to compare against (1-5), e.g. BTC, ETH, or stETH with staking yield.",
              "items": {
                "properties": {
                  "end_price": {
                    "description": "Benchmark price at period end. Number, or object shaped like start_value.",
                    "type": [
                      "number",
                      "object"
                    ]
                  },
                  "id": {
                    "description": "Benchmark name, e.g. BTC, ETH, stETH.",
                    "type": "string"
                  },
                  "income_return": {
                    "description": "Extra period return from yield, e.g. 0.022. Default 0. Number, or object shaped like start_value.",
                    "type": [
                      "number",
                      "object"
                    ]
                  },
                  "start_price": {
                    "description": "Benchmark price at period start. Number, or object shaped like start_value.",
                    "type": [
                      "number",
                      "object"
                    ]
                  }
                },
                "required": [
                  "id",
                  "start_price",
                  "end_price"
                ],
                "type": "object"
              },
              "maxItems": 5,
              "minItems": 1,
              "type": "array"
            },
            "currency": {
              "default": "USD",
              "description": "Currency label for all values; no conversion is done.",
              "type": "string"
            },
            "period": {
              "description": "The measurement period.",
              "properties": {
                "end": {
                  "description": "Last day of the measurement period (YYYY-MM-DD).",
                  "format": "date",
                  "type": "string"
                },
                "start": {
                  "description": "First day of the measurement period (YYYY-MM-DD).",
                  "format": "date",
                  "type": "string"
                }
              },
              "required": [
                "start",
                "end"
              ],
              "type": "object"
            },
            "positions": {
              "description": "Holdings to analyse (max 500), each with start/end value and any money moved in or out.",
              "items": {
                "properties": {
                  "end_value": {
                    "description": "Market value at period end. Number, or object shaped like start_value.",
                    "type": [
                      "number",
                      "object"
                    ]
                  },
                  "flows": {
                    "description": "Capital moved into (+) or out of (\u2212) the position during the period. At most 1000 flows in total across all positions.",
                    "items": {
                      "properties": {
                        "amount": {
                          "description": "Positive = bought / added capital; negative = sold / withdrew.",
                          "type": "number"
                        },
                        "date": {
                          "description": "Date the money moved (inside the period).",
                          "format": "date",
                          "type": "string"
                        },
                        "source": {
                          "description": "Where the flow came from, e.g. a tx hash or statement.",
                          "type": "string"
                        },
                        "status": {
                          "description": "How reliable this flow is. Default \"provided\".",
                          "enum": [
                            "verified",
                            "derived",
                            "provided",
                            "estimated",
                            "assumed"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "date",
                        "amount"
                      ],
                      "type": "object"
                    },
                    "maxItems": 1000,
                    "type": "array"
                  },
                  "id": {
                    "description": "Ticker, token symbol, contract address, or internal id.",
                    "type": "string"
                  },
                  "income": {
                    "description": "Cash income taken out (staking, dividends). Default 0. Number, or object shaped like start_value.",
                    "type": [
                      "number",
                      "object"
                    ]
                  },
                  "start_value": {
                    "description": "Market value at period start. A number, or {value, status, source, observed_at}.",
                    "oneOf": [
                      {
                        "minimum": 0,
                        "type": "number"
                      },
                      {
                        "properties": {
                          "observed_at": {
                            "description": "When observed (ISO).",
                            "format": "date-time",
                            "type": "string"
                          },
                          "source": {
                            "description": "URL, tx hash, block, file or API.",
                            "ma

This page as JSON