praveenmanikandan/spera
v1.1.2MIT
Build, inspect, backtest, and document Spera trading strategies with portable Agent Skills and MCP tools.
Changelog
1.1.2 - 2026-09-16
- Cursor can sign in. Cursor desktop decides a server needs sign-in only from a
401oninitialize. The server answered a tokenlessinitializewith200for anonymous discovery, so Cursor showed thesperaserver as Error and never offered Authenticate. The server now challenges any tokenless request that carriesX-Spera-MCP-Mode, which everymcp.jsonin this repository sends; requests by URL alone (ChatGPT connectors, tool scanners) still get anonymous discovery. No manifest URL changes: the header stays in every MCP config and is now load-bearing. scripts/doctor.mjsprobes anonymous discovery without the header and adds a sign-in trigger probe that expects401oninitializewith it;/spera-doctordescribes the new probe.- Sync four skills with the current server: branch-addressed reads (
version: { branchId }) inspera-build-strategy,spera-foundations, andspera-run-backtest; research studies and the Spera-only research discipline inspera-foundations,spera-run-backtest, andspera-deliver-strategy; and result cards inspera-foundations. - README: Cursor Directory install and the Authenticate step, the header's role in sign-in, and the current 42-tool count.
- Versions move from 1.1.0 to 1.1.2 to match the canonical profile; 1.1.1 was never published.
1.1.0 - 2026-09-05
- Declare the authoring URL. Every manifest now points at
https://api.spera.bot/mcp?mode=authoringinstead of the bare endpoint plus anX-Spera-MCP-Modeheader. Connector interfaces routinely drop custom headers, so the header alone negotiated a read-only grant and every authoring tool then failed with403 insufficient_scopeafter an OAuth flow that had otherwise succeeded. The header is still sent for clients that forward it; the two now agree. This is what the OpenAI app review was configured to hit. - Correct the submission validator, which asserted the bare URL and would have rejected the fix.
- Teach
scripts/doctor.mjsthe server's current contract:initializeis now answered without a token so app-store tool scanners can enumerate the catalogue, so the doctor checks that anonymous discovery succeeds and reads the scope challenge from a guarded method instead. It previously demanded a 401 oninitializeand would have reported FAIL against a correctly working server. - Add the OAuth identity layer to the live smoke test:
openidandemailinscopes_supported, the RFC 8414 path-inserted authorization-server document, the OpenID configuration, and a non-empty JWKS. - Sync
spera-run-backtestwith the current server: optionalbacktestSettingsand the reportedsettingsSource,spera_strategy_settings_set, theedgeresults section, and the non-terminal Edge Check poll. - Ship the
/spera-connectand/spera-doctorcommands with the plugin.
1.0.0 - 2026-08-21
- Add the Claude Code adapter:
.claude-plugin/plugin.json,.claude-plugin/mcp.json, and a single-plugin marketplace so users install with/plugin marketplace addand/plugin install. - Rewrite the README around installation per client, the ten OAuth scopes, the measured context cost, and an explicit list of what the plugin deliberately cannot do.
- Make the data-handling commitment client-neutral rather than Cursor-specific.
- Extend the submission validator to cover the Claude manifests.
1.0.0 - 2026-08-20 (initial packaging)
- Add the vendor-neutral Agent Plugins 1.0.0 manifest and Streamable HTTP MCP configuration.
- Publish eight portable Spera Agent Skills.
- Preserve Cursor and ChatGPT/Codex compatibility manifests.
- Add transparent marketplace icons and cross-format submission validation.