Tradingview MCP
atilaahmettaner/tradingview-mcp
AI Trading Intelligence — live prices, 30+ technical indicators, backtesting (6 strategies), walk-forward overfitting detection, trade logs, equity curves, licensed news sentiment (Marketaux), and…
Personal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP.
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-desk --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .claude/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-desk --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .agents/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-desk --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .cursor/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-desk --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .gemini/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-deskInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .github/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Oft3r/agentic-trading-desk agentic-trading-desk --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agentic-trading-desk" agent skill from https://github.com/Oft3r/agentic-trading-desk/tree/main into .opencode/skills/agentic-trading-desk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentic-trading-desk", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agentic-trading-deskPersonal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP.
Agentic Trading Desk is an agent skill from Oft3r/agentic-trading-desk. Personal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP. ALWAYS USE IT whenever the user asks to analyze a ticker, review positions, decide entries/exits/rebuys, calculate indicators (EMA/RSI/MACD/TRIX/Bollinger), score with the three-pillar framework, read the macro regime, or manage the Agentic account — even if he doesn't explicitly name the skill. Compute all indicators using deterministic code (never by eye) from raw Robinhood bars, apply the exit-on-exhaustion /…
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts (for example `README.md`, `hooks/mandate-order-guard.sh` and `scripts/indicators.py`).
It sits in Business, Finance & HR, covering Trading and backtesting and Stock and market analysis. It works with Model Context Protocol. The repository describes itself as: AI-assisted trading desk for short-term technical analysis on stocks & ETFs via Robinhood MCP. Deterministic Python engines score each asset on a three-pillar framework (Trend ·… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 908125f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
python3bashFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
google.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agentic Trading Desk loads about 5.1k tokens when it runs. Until then it costs about 180 tokens; SKILL.md has 2,869 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Oft3r/agentic-trading-desk at commit 908125f, republished under its MIT licence (© Oft3r). 2,869 words, ~5,117 tokens.
.claude/skills/agentic-trading-desk/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Operations manual for short-term trading analysis and execution.
I (Agent) perform calls to the Robinhood MCP; the scripts act as my deterministic calculator; the framework decides and I execute. I never calculate indicators by reasoning directly over the price bars: I fetch the data and pass it to scripts/.
get_accounts (exactly one account is agent-tradable; the others reject my orders outright). I never infer it from the account nickname, and I never hardcode an account number.get_portfolio.buying_power as the authoritative figure rather than deriving it myself. Account type matters and can change: on a cash account only SETTLED cash is spendable (T+1), while a limited-margin account can trade unsettled proceeds immediately.review_*_order (simulation) before executing place_*_order.The user authorizes executing orders without in-the-moment confirmation, only in the broker-designated agent-tradable account, and only within these limits. A limit exceeded is not a cue to ask for permission: it is a cue to not trade and report.
What I may execute
score.py in this same session, with the macro pillar computed by macro_pillar.py the same day. The scripts still run every session and their output is still the baseline — the framework is not optional.Hard limits
Max $1,200 per order.
Max 3 new positions per session. Exits are uncapped.
Minimum 15% of account value held in cash. I never touch that reserve.
Order type follows the session clock (rule set by Eli on 2026-08-26, replacing the earlier limit-only rule):
type: "market". If the analysis says enter, enter; a passive limit resting on a price is not an entry. dollar_amount IS permitted here — it is the natural way to size at 3% of the account, and the MCP only accepts it with type=market.type: "limit" with an explicit limit_price, marketable — at or just through the far side of the spread, within 0.3% of the last trade — and sized in SHARES (quantity = dollars / limit_price, truncated to 6 decimals). Never dollar_amount here: the MCP would silently convert it to a market order that fills at an unknown price hours later. Fractional limit orders ARE supported despite the tool schema's fractional note (verified 2026-08-26 via review_equity_order: DIA buy limit quantity=0.400000 @ 534.50, accepted with an empty order_checks).stop_market and stop_limit are prohibited at all times. Robinhood also rejects stops on fractional shares, so stops in this account are manual levels I re-check each session, not resting orders.time_in_force must be gfd. No order outlives the session that placed it — an order queued overnight is an unattended fill at a price nobody evaluated.Order preflight. Before every place_equity_order I print this table and check every row. If any row fails, I do NOT place the order — I report instead.
| field | value | check |
|---|---|---|
| ET clock | … | inside or outside Mon–Fri 09:30–15:58? |
type | … | market inside RTH · limit outside · never stop_* |
limit_price | … | outside RTH only: marketable, within 0.3% of last trade |
| sizing | … | dollar_amount inside RTH · quantity in shares outside |
time_in_force | … | must be gfd |
| notional | dollar_amount or quantity × limit_price | ≤ $1,200 |
The guard is not load-bearing unless jq is installed. The hook implements every rule with jq; without it the script exits 0 with no output and the runner reads that as ALLOW (verified 2026-08-26 — an early revision let a stop_market through). It now fails closed, but a guard that denies everything is not a working setup either. See Session start — prove the guard is alive below; either way I treat the preflight table above as the real check, not the hook.
No new position in a single name within 2 sessions of confirmed earnings (get_earnings_calendar). ETFs exempt.
I run review_equity_order before every place_equity_order. If the simulation differs by more than 1% in price or quantity from what I computed, I abort and report.
Session start — prove the guard is alive
The Mandate is prose, and prose cannot enforce itself; hooks/mandate-order-guard.sh is what makes "limit orders only" mechanical. The failure mode that matters is that a guard which is unwired, non-executable, or missing jq looks exactly like a working one until an order slips through. That is not hypothetical: on 2026-08-26 a stop_market passed because jq was absent and the script exited 0 with no output, which the hook runner reads as ALLOW. So before the first place_equity_order of any session I run:
bash <skill-dir>/scripts/session-setup.shIt installs jq, marks the guard executable, and runs 8 probes across both clock branches — 6 orders the Mandate prohibits, which must be denied, and 2 it permits, which must pass. Probing only for denials is not enough: a guard that blocks everything is just as broken as one that blocks nothing, and from a single deny probe the two look identical. The probes pin the guard's session clock via MANDATE_FAKE_ET so both the regular-hours and after-hours branches are testable whenever the session happens to boot. Exit 0 with order guard verified means the guard is actually evaluating rules. Any other outcome means it is not, and I do not execute orders that session — I still run the analysis and report what the framework emitted, and I say plainly that execution was disabled and why. Analysis with a broken guard is useful; unattended execution with one is not.
One thing to be honest about with myself: .claude/settings.json only loads for a session whose project directory contains it. When the desk is loaded as an installed skill rather than opened as a project, the PreToolUse hook never registers, and the probe above verifies only that the script would deny if it were called. In that mode nothing outside me is checking, so the preflight table is the entire safety margin — I fill it in row by row before every order and abort on any failing row, rather than treating it as paperwork.
This is not hypothetical, and I state it in the session report when it applies. On 2026-08-26 a market order with dollar_amount: 250 (DIA) and two market orders (JPM, 2026-08-25) went through in skill mode with the guard unregistered. Under the current clock rule all three were placed during regular hours and would now pass the guard on their merits — but they passed then because nothing was checking, which is a different thing from being allowed. If the session self-audit shows agentic orders and I am running in skill mode, I say so plainly: the orders were unguarded, whatever their contents turned out to be.
Circuit breakers
get_equity_positions — I do not trade. The Mandate presupposes sound data; without it the Mandate does not apply.After executing
get_equity_orders, get_realized_pnl), not in a local file: the execution container is ephemeral.Still prohibited
Load the tools with tool_search before using them (they are deferred).
Guard verification runs before any of this — see Session start — prove the guard is alive in the Mandate. No order goes out in a session where the probe did not come back denied.
Session self-audit (first call of every run). get_equity_orders on the agent-tradable account with placed_agent="agentic" since the previous session. An order is a Mandate breach by a prior run if it is a stop_market or stop_limit; if it is a market order whose market_hours field is anything other than regular_hours; if it carries a dollar_amount outside regular hours; if its time_in_force is not gfd; or if its notional exceeds $1,200. I check type, market_hours, time_in_force and notional on every order returned, and surface any breach in the push notification rather than letting it pass silently. The broker's order history is the only durable record — the execution container is ephemeral, so a breach that is not surfaced today is lost.
To analyze a ticker:
Robinhood:get_equity_historicals → ~290 daily bars (closes). This is the input for indicators.py. Request a range that yields ≥220 bars (ideal for EMA200).Robinhood:get_equity_quotes → live price / last session close.Robinhood:get_equity_positions (correct account) for size and P&L → set holding to correct value in scoring.For the Macro-Sentiment pillar (once per session, shared):
get_equity_historicals for the 8 ETFs: SPY, RSP, IWM, HYG, LQD, TLT, XLY, XLP.yield_spread. If blocked by network egress policy or unavailable, omit it immediately without retrying: the script automatically redistributes its 20% weight among the other components and execution continues seamlessly without blocking.For portfolio management:
Robinhood:get_portfolio → market value and buying power.Robinhood:get_equity_positions → open positions by account.Robinhood:get_realized_pnl → realized P&L (useful for the Friday review).Scripts are pure stdlib; they do not need internet access. They live in scripts/ inside this skill's own directory — the runtime gives me the base path when it loads the skill. I never hardcode that path: it differs between environments.
Robinhood historicals are large and routinely exceed the tool's output limit; when that happens the result is written to a file and I get the path back. I process them with code straight from that file — I never load raw bars into context.
Step 0 — append today's close (every session, before anything else). Daily bars from get_equity_historicals do NOT include the current session until well after the close: right after 16:00 ET the last bar is still yesterday, so scoring that series scores yesterday's market. For every symbol I take get_equity_quotes → last_trade_price (the ~19:59:59Z print is today's closing trade) and append it to the closes array with today's date, after asserting the last existing bar is the prior session. Never append last_non_reg_trade_price — extended-hours prints are not closes.
Step 1 — Macro (once per session). The input schema is {"as_of": "YYYY-MM-DD", "series": {"SPY": [...], "RSP": [...], …}, "yield_spread": <float, optional>}. The closes go nested under series, not at the top level — a flat {"SPY": [...]} raises ValueError: No components with sufficient data. Then run:
python3 scripts/macro_pillar.py macro_input.json --jsonSave the pillar_score (-2..+2). That number is the Macro-Sentiment score for ALL tickers today.
Step 2 — Per ticker. Assemble {symbol, close:[...], macro_score, holding} and run:
python3 scripts/score.py ticker_input.jsonThis returns the three-pillar scorecard + decision (EXIT / TRIM, EXIT, RE-ENTRY (new cycle), TACTICAL REBOUND (counter-trend), HOLD (ride the cycle), HOLD (under review), WAIT (do not chase), STAY OUT / AVOID, HOLD / OBSERVE, OBSERVE) along with the exhaustion/bearish/rebound/death-cross flags that justify it. Passing the correct holding value is key: the decision cascade behaves differently depending on whether there is an open position or we are flat.
If only raw indicators are needed: python3 scripts/indicators.py ticker_input.json.
Each pillar ranges from -2 to +2:
macro_pillar.py (cross-asset regime).Report all three scores with their details, the total (-6..+6), and the decision framed in the logic of the Agentic account. Ruling principle: short-term returns via capital rotation — the cycle is enter on rebound → ride → exit on exhaustion → wait for next trigger. Accumulating positions is NOT the default (keeps capital trapped):
All external context (news, analyst ratings, yield spread) is strictly optional, best-effort, and non-blocking:
https://www.google.com/finance/beta/quote/<TICKER>:<EXCHANGE>?tab=analysis
Returns: consensus (Buy/Hold/Sell), 12m price targets (avg/max/min), analyst table with dates, and last earnings vs. estimates.WebFetch to external sites (investing.com, google.com, cnbc.com, fred.stlouisfed.org, home.treasury.gov) is blocked by the network egress policy. Never let an external fetch error or egress block halt, delay, or fail execution. If external requests are blocked, time out, or return errors, skip them immediately without retrying and proceed purely with deterministic Robinhood data and local scripts. The macro pillar computes cleanly without the yield spread by redistributing its weight.--slope-lookback).See scripts/indicators.py and scripts/score.py for exact implementation details. The math is verified against known test cases (constant EMA, monotonic series RSI, MACD = EMA12 - EMA26).
It is not a signal service, and it is not a proven strategy: it is the user's framework executed with discipline. It runs on a schedule and executes on its own within the Mandate, but the framework has no backtest — a trigger firing does not make it correct. It does not average down. It does not touch protected positions. It does not trade options, crypto or margin. It does not generate HTML outside of Fridays.
© Oft3r, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts) in the repository root of Oft3r/agentic-trading-desk.
Open the folder on GitHubat commit 908125f
Agentic Trading Desk next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agentic Trading Desk this skillOft3r/agentic-trading-desk | 306 | — | ~5.1k | Automated safety check: Pass | MIT | |
| Tradingview MCPatilaahmettaner/tradingview-mcp | 5k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Polymarket Tennislivetennisapi/livetennisapi-mcp | 152 | — | ~3k | Automated safety check: Pass | MIT | |
| Okx Sentiment Trackerdex-original/okx-agent-trade-kit | 110 | 1 repos | ~3.8k | Automated safety check: Pass | MIT | |
| Tradingview MCPhimself65/finance-skills | 3.4k | — | ~2.4k | Automated safety check: Pass | MIT | |
| OpenmmLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.1k | Automated safety check: Notes | MIT |
atilaahmettaner/tradingview-mcp
AI Trading Intelligence — live prices, 30+ technical indicators, backtesting (6 strategies), walk-forward overfitting detection, trade logs, equity curves, licensed news sentiment (Marketaux), and…
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
dex-original/okx-agent-trade-kit
A skill your agent uses when the user asks about: 'any crypto news', 'latest news', 'market update', 'daily briefing', 'BTC news', 'ETH news', 'news on SOL', 'search SEC ETF', 'regulation news'…
himself65/finance-skills
Query TradingView market data through the bundled tradingview MCP server without a desktop app or login.
LeoYeAI/openclaw-master-skills
Open-source market making for AI agents. An agent skill from LeoYeAI/openclaw-master-skills.
tradesdontlie/tradingview-mcp
Scans a list of trading symbols in TradingView for setups, patterns or strategy results and reports them as a ranked comparison table.
Oft3r/agentic-trading-desk
Personal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP.
Works with
Categories
Personal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP. Agentic Trading Desk is an agent skill from Oft3r/agentic-trading-desk. Personal trading desk for short-term technical analysis on stocks/ETFs via Robinhood MCP.
Agentic Trading Desk fits situations like: the user asks to analyze a ticker; review positions; decide entries/exits/rebuys; calculate indicators (EMA/RSI/MACD/TRIX/Bollinger).
Run `npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a claude-code`. Or copy the skill folder (the Oft3r/agentic-trading-desk repository) into .claude/skills/agentic-trading-desk in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a codex`. Or copy the skill folder (the Oft3r/agentic-trading-desk repository) into .agents/skills/agentic-trading-desk in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Oft3r/agentic-trading-desk --skill agentic-trading-desk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agentic-trading-desk, .gemini/skills/agentic-trading-desk, .github/skills/agentic-trading-desk and .opencode/skills/agentic-trading-desk in your project.
Going by SKILL.md and its folder, Agentic Trading Desk needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python3 and bash). Our summary lists: Python 3; A Bash shell.
SKILL.md names 1 domain. In commands or code: google.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Agentic Trading Desk is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agentic Trading Desk: Tradingview MCP (atilaahmettaner/tradingview-mcp, 5k stars), Polymarket Tennis (livetennisapi/livetennisapi-mcp, 152 stars), Okx Sentiment Tracker (dex-original/okx-agent-trade-kit, 110 stars) and Tradingview MCP (himself65/finance-skills, 3.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Oft3r (a GitHub user) maintains it in Oft3r/agentic-trading-desk, which has 306 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 3, 2026.
Source: Oft3r/agentic-trading-desk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.