SFConnect: SignalForge API (v1) and MCP

Access to your accounts, EA status, signal history and signal submission to your EA. Create a personal key in the API keys card at the bottom of your dashboard home (keys look like sfk_...). Available on the Trader, Pro and Elite plans, trial included.

Key scopes

A key is read by default: it reads your data and can preview signals (dry_run). To send live signals, create the key with the trade scope; a live send with a read-only key returns 403 scope_required.

Quick start

curl https://api.signalforge-ai.com/api/v1/me \
  -H "Authorization: Bearer sfk_YOUR_KEY"

Submit a signal

curl -X POST https://api.signalforge-ai.com/api/v1/signals \
  -H "Authorization: Bearer sfk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action": "buy", "symbol": "XAUUSD", "lot": 0.1}'

dry_run=true (default) only validates and previews the payload. With dry_run=false the signal is injected into your own webhook, exactly like a TradingView alert (same filters and transformations). Requires a plan with trading; cap 10 signals/min. account_id (optional) must be one of your accounts (the id from GET /api/v1/accounts). Order fields (price, percent, side, order_type, entry_pips, entry_pct, breakeven, trailing, tp1-tp5) are passed through like a TradingView alert; pendings need price and close accepts percent. Note: closebuy/closesell are non-directional aliases - they close ALL positions of the symbol regardless of side; use close with side to close one direction only.

Retries: send an optional idempotency_key (any string up to 100 characters, e.g. your own order id) with live signals. If the same key arrives again within 24 h the signal is NOT sent twice and the response says "duplicate": true. The same key with a different signal answers 409 idempotency_conflict and sends nothing: use a new key for each order. If the webhook rejects the signal, or the connection could not be opened, the key is freed so you can retry. If the delivery state is unknown (502 after connecting), check GET /api/v1/signals before sending it again.

Endpoints

MCP (AI clients)

Use this API from Claude, Cursor or any MCP client:
Endpoint https://api.signalforge-ai.com/mcp (POST, Streamable HTTP, stateless) with header Authorization: Bearer sfk_YOUR_KEY.
Tools: me, accounts, ea_status, recent_signals, signal_detail, send_signal.

Spec

Full machine-readable spec: /api/v1/openapi.json (OpenAPI 3.0).

Rate limits: 60 requests per minute and 10 signals per minute per key.