{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {
"maxPoints": {
"type": "number",
"description": "Maximum points to return per series (default 100, hard cap 500). Downsampling preserves extremes, and the true high and low are returned separately regardless."
},
"series": {
"type": "array",
"items": {
"type": "string"
},
"description": "Dataset keys to include. Omit for every series on the chart."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {
"options": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Option keys mapped to their new values. Call get_view first for the valid keys, each option's allowed values, and which are currently selectable. Everything in the patch is applied together as one undoable step, or nothing is."
}
},
"required": [
"options"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "The chart kind to switch to for the current subject — price, market-cap, ranking, and so on. Applied immediately. See get_view for what this chart's subject supports."
},
"base": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A coin uuid, \"global\" for the whole market, or \"category:<slug>\"."
},
"slug": {
"type": "string",
"description": "The coin's slug, when known. Optional."
}
},
"required": [
"id"
],
"additionalProperties": false,
"description": "A different subject to chart. Returns the destination URL rather than navigating — the caller has to open it."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"undo",
"redo",
"jump"
],
"description": "Which way to move through the chart's history."
},
"index": {
"type": "number",
"description": "Required for `jump`: the entry index from list_history. Ignored otherwise."
}
},
"required": [
"action"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"add",
"remove"
],
"description": "Whether to start or stop comparing against the target."
},
"target": {
"type": "string",
"description": "What to compare against: a currency uuid, the literal `global` for the whole market, or `category:<slug>` (e.g. `category:defi`). Call get_view to see what's already being compared."
}
},
"required": [
"action",
"target"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"add",
"remove",
"clear"
],
"description": "Add one annotation, remove one by index, or remove all."
},
"type": {
"type": "string",
"enum": [
"line",
"rectangle",
"circle",
"text"
],
"description": "For `add`: the shape to draw."
},
"points": {
"type": "array",
"description": "For `add`: anchors in DATA coordinates — `time` is a timestamp and `value` is on the chart's own y-scale, not pixels. A line takes 2 endpoints. A rectangle or circle takes 2 opposite corners, or 4 for an exact quad. A text annotation takes 1 anchor, which becomes the centre of a box sized to the text, or 4 to place the box yourself. Get exact values from get_stats (true highs/lows) or get_series.",
"items": {
"type": "object",
"properties": {
"time": {
"type": "number"
},
"value": {
"type": "number"
}
},
"required": [
"time",
"value"
],
"additionalProperties": false
}
},
"text": {
"type": "string",
"description": "For `add` with type `text`: the label's content."
},
"style": {
"type": "object",
"description": "For `add`: optional appearance. Defaults to the chart's own drawing style.",
"properties": {
"color": {
"type": "string",
"description": "Hex colour, e.g. #2962ff."
},
"thickness": {
"type": "number"
},
"dash": {
"type": "string",
"enum": [
"solid",
"dashed",
"dotted"
]
},
"fill": {
"type": "string",
"enum": [
"none",
"light",
"solid"
],
"description": "Body fill for rectangles and circles."
},
"fontSize": {
"type": "number",
"description": "Text annotations only."
},
"fontFamily": {
"type": "string",
"description": "Text annotations only."
}
},
"additionalProperties": false
},
"index": {
"type": "number",
"description": "For `remove`: which annotation, by its position in list_drawings."
}
},
"required": [
"action"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"csv",
"png"
],
"description": "`csv` for the underlying data, `png` for a picture of the chart."
},
"destination": {
"type": "string",
"enum": [
"return",
"download",
"clipboard"
],
"description": "Where the export goes. `return` (CSV only) hands the text back in this result. `download` saves a file and `clipboard` copies — both prompt the user, because the browser only permits them during a user gesture. Defaults to `return` for CSV and `download` for PNG."
}
},
"required": [
"format"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"share": {
"type": "boolean",
"description": "Open the device's share sheet (or copy the link where there isn't one) instead of just returning the URL. Prompts the user, so only set this when they asked to share rather than to see the link."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"save",
"save_as",
"rename",
"delete",
"discard"
],
"description": "`save` updates the current chart (or creates it, with a name). `save_as` always creates a new one. `rename` retitles it, `delete` removes it, `discard` reverts unsaved edits."
},
"name": {
"type": "string",
"description": "Required for `save_as` and `rename`, and for `save` when the chart has never been saved. Without it the site would open a naming dialog, which a tool call can't sensibly drive."
}
},
"required": [
"action"
],
"additionalProperties": false
}