Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add seonglae/openportfolio --skill openportfolio-forecastgit clone --depth 1 https://github.com/seonglae/openportfolioWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/seonglae/openportfolio/openportfolio-forecast)<a href="https://agentmods.dev/skills/seonglae/openportfolio/openportfolio-forecast"><img src="https://agentmods.dev/badge/skills/seonglae/openportfolio/openportfolio-forecast/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/seonglae/openportfolio/openportfolio-forecast"><img src="https://agentmods.dev/badge/skills/seonglae/openportfolio/openportfolio-forecast.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00074 | $0.00829 |
| Opus 5.5 | $0.00030 | $0.00332 |
| Sonnet 5.5 | $0.00015 | $0.00166 |
| Haiku 4.5 | $0.00007 | $0.00083 |
Grade A, and why
openportfolio-forecast scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 58 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Registering a forecast
A view that is never scored costs nothing to be wrong about. openportfolio registers it with a probability, a horizon and a resolution criterion, and none of the three can be edited afterwards. There is no update tool, on purpose: a call that can be revised after the fact is a record of nothing.
Needs the openportfolio MCP server. See the openportfolio-book skill for setup.
The call
record_forecast takes:
| argument | rule |
|---|---|
subject |
what the call is about, in plain words |
probability |
0 to 1. The chance the criterion is met, not a confidence in the reasoning |
horizonSec |
seconds until it comes due. At least 3600, at most five years |
resolutionCriterion |
the condition that settles it |
rationale |
optional, why |
author |
optional, who made it, for example claude. The record can be filtered by author |
authorType |
optional, agent or user |
Write a criterion a machine can settle
The form SYMBOL comparator VALUE can be evaluated against evidence. A symbol alone never authorizes automatic settlement:
BTC > 100000
VWRL >= 118.5
KOSPI < 3,000
Comparators are >, >=, <, <=, ==, !=. Symbols may carry dots, colons, slashes and dashes (035420.KS, BRK-B). Anything else, for example "the central bank cuts in March", is valid but prose: it waits in due_forecasts with a null symbol until someone settles it by hand. Prefer the machine form whenever the claim allows it.
Automatic settlement requires a resolutionTarget registered with the call: assetId, symbol, assetClass, venue and currency. For the supported Yahoo equity/ETF path, set observationPolicy to last_completed_minute, priceBasis to provider_close, sessions to all and maxAgeMs to a value from 60000 to 345600000. The policy uses the most recent completed provider-returned minute at or before dueAt, including extended hours, within that precommitted age. It uses the provider's quote.close basis, which can reflect corporate-action adjustments or later provider revisions. The source, retrieval time and parsed-response hash are recorded. This is not an immutable as-traded exchange tape. Missing or expired historical data stays open. Registration refuses any other target: no adapter observes a price at the exact dueAt. Legacy symbol-only calls and stored unsupported targets remain manual and require a source note. No quote-source environment override affects settlement. An optional baselineProbability registers a comparator before outcomes.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +12 lines e6cd67834b0a
- 16d ago First seen · 46 lines · 74 tokens per session scan A ea29818824dc
openportfolio-forecast is a skill published in the GitHub repository seonglae/openportfolio (3 stars, last pushed 2d ago), licensed Apache-2.0. It adds 74 tokens to every session and 829 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-30.
Other skills, from other repositories
research-stocks
Read current stock research, technical backtests, saved analyses or saved backtests. Use for a named ticker or watchlist research history; preserve source dates, model limitations and risk factors.
track-tariff-trends
Retrieve a country's average applied tariff over time — the MFN rate on all products, or the rate it applies on goods from one partner and/or in one product group — plus the optional US effective tariff rate. Use when the user asks how a country's tariffs have changed, or what it charges another country on average.…
get-prediction-markets
Retrieve active prediction-market contracts (Polymarket) with live yes-price probabilities, volume, and close dates, filterable by category or keyword. Use when the user asks what the market odds are on a geopolitical, economic, or election outcome.
tvchart
Drive a live TradingView Lightweight Charts widget end-to-end via PyWry MCP tools — symbol, interval, indicators, markers, price lines, layouts, state.
tbank-messenger
A chat connection for T-Bank, a Russian bank, that lets an agent read conversations, download attachments, and contact bank support. It works with chats inside the bank app, not SMS codes or push notifications.
aifi-daily-report
A tool for producing a Chinese end-of-day report on United States stock markets as a self-contained HTML file. HTML is the standard format used to display web pages.