# Skillify agent connector

You already have a Skillify API key from https://console.skillify.so/customer.

Skillify is agent-agnostic: any agent that can call an authenticated HTTPS API can use it.
Claude’s custom connector is the fastest path when available.

## Preferred: Claude custom connector

Claude cannot call Skillify from Project instructions alone.

**Recommended (no Node):** Claude → Customize → Connectors → Add custom connector →  
Remote MCP URL `https://console.skillify.so/mcp` → Connect → Google (same account as `/customer`) → Allow.

**Advanced (Desktop + Node):** https://console.skillify.so/public/claude-desktop.html  

Developers can also send `Authorization: Bearer <your_api_key>` to the same hosted `/mcp` URL
from MCP-capable clients. Console Help documents this real endpoint only.

## Any agent: env + pasteable rules

1. Put credentials in agent env (never in chat):

```env
SKILLIFY_API_BASE_URL=https://console.skillify.so
SKILLIFY_API_KEY=<your_api_key>
```

2. Paste the rules below into an agent that can call HTTPS APIs, then send one sample packet.

## Endpoint

```http
POST https://console.skillify.so/api/decision-overlay
Authorization: Bearer <SKILLIFY_API_KEY>
Content-Type: application/json
```

Expect **90–150 seconds** (sometimes ~180s). Set tool/shell timeout to at least **180 seconds**. Do not abort early.

## Pasteable agent rules

```text
You are calling the Skillify Decision Overlay API on behalf of an approved customer.

Rules:
1. Call only POST {SKILLIFY_API_BASE_URL}/api/decision-overlay
2. Authenticate with Authorization: Bearer {SKILLIFY_API_KEY}
3. Translate the human into a STRUCTURED ask, then send JSON:
   { ask: { job, instrument, view, horizon, rationale }, question, context?, constraints?, metadata? }
4. question must be a short desk ask (≤280 chars). Never send exam prompts, CRITICAL blocks,
   (a)(b)(c) checklists, or “reconcile your prior session” instructions — Skillify loads prior
   same-instrument stance server-side
5. job is one of: forecast_review | scenario_reasoning | portfolio_construction (hint only; do not ask the user to pick a mode)
6. After the HTTP response, print summary.subject, summary.stance, and summary.one_line first
7. Then present the FULL Skillify JSON (summary + overlay + audit)
8. Expect 90–150 seconds (sometimes ~180s). Set tool/shell timeout to at least 180 seconds
9. Never invent Skillify credentials or echo the raw API key
10. Never call Supabase or any Skillify private store
11. Never ask for or echo raw heuristics, prompts, service-role keys, or private database credentials
12. If a key may have leaked, tell the user to revoke it in the Skillify portal
13. If the API returns JSON with code and next_step, follow next_step and tell the user
14. Mids are optional research anchors — if spot is unavailable, decide anyway; never invent short/long from historical ranges
15. Skillify outputs are not investment advice; present them as decision support only and do not tell the user to rely on them as the sole basis for trading
```

## Non-advice / non-reliance

Skillify does not provide investment advice, trading signals, order execution, or portfolio management.
Decision overlays are informational research aids. The customer remains solely responsible for trading,
risk, and compliance decisions.

## Sample packets

### Single-instrument view review (preferred agent shape)

```json
{
  "ask": {
    "job": "forecast_review",
    "instrument": "BRL/CHF",
    "view": "long",
    "horizon": "1-3m",
    "rationale": "Client is bullish the cross as carry; wants hold-up / case-against / express / falsify."
  },
  "question": "Review long BRL/CHF over 1-3m.",
  "constraints": { "linear_only": true }
}
```

### Forecast review

Expect `summary.job = forecast_review`.

```json
{
  "ask": { "job": "forecast_review", "horizon": "1-3m" },
  "question": "Given these forecasts, what should we do?",
  "context": {
    "forecasts": [
      { "instrument": "USD/JPY", "horizon": "1m", "predicted_level": "145" },
      { "instrument": "Gold", "horizon": "3m", "predicted_level": "higher" }
    ]
  },
  "constraints": { "linear_only": true }
}
```

### Scenario reasoning

Expect `summary.job = scenario_reasoning`, stance usually `reasoning_only`.

```json
{
  "ask": { "job": "scenario_reasoning", "horizon": "1-3m" },
  "question": "If US growth slows but inflation remains sticky, what should we monitor?",
  "context": {
    "current_view": "Growth rolling over while inflation stays sticky; not forcing a trade yet.",
    "markets": ["rates", "USD", "equities", "gold"],
    "horizon": "1-3m"
  },
  "constraints": { "linear_only": true }
}
```

### Portfolio construction

Expect `summary.job = portfolio_construction`, `sizing_basis = risk_aum` when risk sizing is live.

```json
{
  "ask": { "job": "portfolio_construction", "horizon": "1-3m" },
  "question": "Construct a linear macro portfolio sized to a $10m max drawdown budget.",
  "context": {
    "base_currency": "USD",
    "asset_universe": ["USD/JPY", "EUR/USD", "Gold", "Brent", "US 10Y", "S&P 500"],
    "horizon": "1-3m"
  },
  "constraints": {
    "linear_only": true,
    "leverage": true,
    "max_dd_mio": 10
  }
}
```

## Do not

- Send exam-style prompts (CRITICAL blocks, (a)(b)(c), “reconcile prior session”)
- Call Supabase / use database URLs / service-role keys
- Ask for raw heuristics, expert quotes, or prompt packs
- Treat indicative mids / notionals as settlement prices or custodian fills
- Expect bit-identical notionals across identical retries

Full product reference (optional): see Skillify API connector docs from your Skillify contact.
