All tools
ToolDestructive

Add portfolio holding

add_portfolio_holding

You need Prism portfolio tracking records, exposure, holdings, or research priority.

When to use it

You need Prism portfolio tracking records, exposure, holdings, or research priority.

Typical workflow

List portfolios, read exposure or priority, then mutate tracking records only if asked.

What it returns

Portfolio metadata, holdings, exposure, priority, or tracking mutations.

Avoid using it when

You need brokerage trades, account connections, or watchlist mutation.

Advanced input contract

Agent hosts use this JSON Schema to validate the exact input shape.

View full registry notes

Add a stock or ETF position snapshot to Prism, with optional cost, context, and owned Project-file provenance. duplicateAction can add a lot, merge into an existing holding, or replace it. This mutates Prism tracking data only and cannot place trades or connect brokerage accounts.

View JSON Schema
{
  "type": "object",
  "properties": {
    "portfolioId": {
      "type": "string",
      "format": "uuid"
    },
    "ticker": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20
    },
    "companyId": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "shares": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "costPerShare": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0
    },
    "totalCostBasis": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0
    },
    "openedAt": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "asOfDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "notes": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2000
    },
    "duplicateAction": {
      "type": "string",
      "enum": [
        "add_lot",
        "merge",
        "replace"
      ],
      "default": "add_lot"
    },
    "existingHoldingId": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "positionContext": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "watching",
            "starter",
            "full_position",
            "exited",
            "avoid"
          ]
        },
        "conviction": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high"
          ]
        },
        "timeHorizon": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 120
        },
        "targetAllocation": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        },
        "addCriteria": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 2000
        },
        "trimCriteria": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 2000
        },
        "exitCriteria": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 2000
        },
        "notes": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 3000
        }
      },
      "additionalProperties": false
    },
    "libraryFileId": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "sourceLabel": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 240
    },
    "sourceSnippet": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2000
    }
  },
  "required": [
    "portfolioId",
    "ticker",
    "shares"
  ],
  "additionalProperties": false
}

Useful next tools