Integrations

Use Factor Weave from where you already work

A dozen doorways into the same API and data. Pick the one that matches your workflow — the script, the agent, the spreadsheet, the chat tool, the shell. All driven by the same tier-gated quota and the same nightly-fresh data.

Hand-written SDKs: Python · TypeScript · R · CLI (fw) · Google Sheets · Auto-generated clients: Go · Rust · Ruby · PHP · Dart · (Java/C#/Kotlin/Swift on-demand) · Protocols: REST · OpenAPI 3.0 · MCP (12 tools) · webhooks · Web Push · Recipes & connectors: Jupyter notebooks · Postman collection · Slack/Discord/n8n transformers · drop-in MCP configs

🐍 Python SDK

pip install factorweave

The most-direct ergonomic for quant scripts and notebooks — typed methods over every endpoint, pandas/polars adapters, tier-aware exceptions you can catch.

import factorweave as fw
client = fw.Client(api_key="fw_live_…")

row  = client.features("AAPL")[0]
hist = client.features("AAPL", start="2024-01-01", end="2024-12-31").to_polars()
top  = client.top("mom", n=25).to_pandas()
card = client.report_card("AAPL")     # HOBBY+
risk = client.risk_cluster("TSLA")    # PRO+

Source: github.com/Blazing-Customs/factorweave-tools/python · PyPI: pypi.org/project/factorweave · Ships an fw CLI too (see below)

⌨️ fw CLI

pip install factorweave

The Python package also installs a fw command. Friendly tables by default, --json for pipes. Reads FACTORWEAVE_API_KEY from the environment. Useful for quick checks, cron jobs, shell pipelines.

export FACTORWEAVE_API_KEY=fw_live_…

fw features AAPL                          # latest factor row
fw top mom -n 25                          # top 25 momentum names
fw similar AAPL --method cosine --limit 10
fw market-context
fw report-card NVDA                       # HOBBY+
fw embedding TSLA --json | jq .vector     # QUANT

fw --help                                 # full command list

Shipped as a console_scripts entry on the Python SDK — no separate install.

📘 TypeScript / JavaScript SDK

npm install @blazing-customs/factorweave

Server-side Node 18+ / Bun / Deno / serverless. Native fetch, dual ESM+CJS, full TypeScript types, typed errors (AuthError, TierError, RateLimitError, …), automatic backoff on 429 + 5xx. The right SDK for Next.js API routes, Vercel/Cloudflare functions, and LangChain.js agents.

import { FactorWeave } from '@blazing-customs/factorweave';

const fw = new FactorWeave({ apiKey: process.env.FACTORWEAVE_API_KEY });

const row  = await fw.latestFeatures('AAPL');
const top  = await fw.top({ factor: 'mom', n: 25 });
const hits = await fw.similar('AAPL', { method: 'cosine', limit: 10 });
const ctx  = await fw.marketContext();          // FREE+
const card = await fw.reportCard('AAPL');       // HOBBY+
const risk = await fw.riskCluster('TSLA');      // PRO+
const emb  = await fw.embedding('NVDA');        // QUANT

Source: factorweave-tools/typescript · npm: @blazing-customs/factorweave

⚠ Server-side only — your fw_live_… key is a bearer credential. For browser apps, proxy through your own backend.

📈 R package

install.packages("factorweave", repos = "https://blazing-customs.r-universe.dev")

For academic and finance work in R. Idiomatic data.frame returns, httr2-based with retry on 429/5xx, tier-aware errors.

library(factorweave)
client <- fw_client(api_key = "fw_live_…")

row  <- fw_latest_features(client, "AAPL")
hist <- fw_features(client, "AAPL", start = "2024-01-01", end = "2024-12-31")
top  <- fw_top(client, "mom", n = 25)
hits <- fw_similar(client, "AAPL", method = "cosine", limit = 10)

ctx  <- fw_market_context(client)
card <- fw_report_card(client, "AAPL")   # HOBBY+
risk <- fw_risk_cluster(client, "TSLA")  # PRO+
emb  <- fw_embedding(client, "NVDA")     # QUANT

Source: factorweave-tools/r

🤖 MCP Server — Claude · Cursor · any MCP client

HOBBY+

Drop one block into your AI client and your agent gets 12 typed tools — factor lookups, similarity search, market context, risk clusters, report cards, embeddings, alerts, usage. Conversational quant research, no glue code.

{
  "mcpServers": {
    "factorweave": {
      "url": "https://factorweave.com/api/mcp",
      "transport": "streamable-http",
      "headers": { "Authorization": "Bearer fw_live_…" }
    }
  }
}

Full MCP guide · Drop-in configs for Claude Desktop, Cursor, Continue, Cline, Windsurf: factorweave-tools/mcp-configs

📜 OpenAPI 3.0 spec

/api/openapi.json

A typed schema for every endpoint with both Bearer + X-API-Key auth declared. Drop it into anything that consumes OpenAPI — LangChain OpenAPIToolkit, LlamaIndex, OpenAI Function Calling, Anthropic tool use, ChatGPT Actions, or any autogenerated client SDK.

# LangChain
from langchain_community.agent_toolkits.openapi.toolkit import OpenAPIToolkit
from langchain_community.tools.openapi.utils.openapi_utils import OpenAPISpec
spec = OpenAPISpec.from_url("https://factorweave.com/api/openapi.json")
toolkit = OpenAPIToolkit.from_llm_spec(llm, spec, headers={"X-API-Key": "fw_live_…"})

# ChatGPT Actions → paste the URL above into the Actions setup.

Clickable explorer: /api/docs/swagger

⚙️ Auto-generated clients — Go · Rust · Ruby · PHP · Dart

+ Java · C# · Kotlin · Swift on demand

For languages we don't (yet) ship a hand-written SDK in, we generate clients directly from the OpenAPI spec via openapi-generator. The five most-requested languages are committed; the rest are one shell command away.

# vendor a client into your project
git clone --depth 1 https://github.com/Blazing-Customs/factorweave-tools.git
cp -r factorweave-tools/generated/go    ./internal/factorweave    # Go
cp -r factorweave-tools/generated/rust  ./crates/factorweave      # Rust
cp -r factorweave-tools/generated/ruby  ./lib/factorweave         # Ruby
cp -r factorweave-tools/generated/php   ./vendor/factorweave      # PHP
cp -r factorweave-tools/generated/dart  ./packages/factorweave    # Dart

# need Java / C# / Kotlin / Swift? regenerate from the spec:
bash factorweave-tools-monorepo/scripts/regenerate_clients.sh java csharp kotlin swift

Source: factorweave-tools/generated · regenerated whenever the OpenAPI spec changes.

📊 Google Sheets add-on

=FACTORWEAVE("AAPL","rsi")

Apps Script project — paste once, then call from any cell. Four custom functions cover the common needs without leaving the spreadsheet.

=FACTORWEAVE("AAPL", "rsi")          → 83.5
=FW_TOP("mom", 25)                   → 25 rows of top-momentum tickers
=FW_MARKET_CONTEXT()                  → today's regime / dispersion / breadth
=FW_REPORT_CARD("AAPL")               → full per-ticker digest  (HOBBY+)

Source + install guide: factorweave-tools/sheets · 2-minute paste into Extensions → Apps Script.

📡 Webhook alert delivery

Slack · Discord · Zapier · Make · n8n

Define a rule (e.g. "RSI > 80"); attach a delivery_url. Once a UTC day after the nightly bundle, Factor Weave POSTs a JSON digest of every matching ticker to that URL. Works with any HTTPS receiver — Slack/Discord incoming webhooks, a Zapier/Make/n8n hook, or your own service.

POST https://hooks.slack.com/services/…
Content-Type: application/json

{
  "source": "factorweave",
  "rule":   { "id": "...", "name": "RSI overbought", "indicator": "rsi",
              "condition": ">", "value": 70 },
  "as_of":  "2026-05-22",
  "count":  374,
  "matches": [{ "ticker": "NVDA", "value": 88.3 }, ...]
}

→ Create rules at factorweave.com → Alerts · Drop-in Slack/Discord/n8n transformers + `fire-test-payload.sh`: factorweave-tools/webhooks

📓 Notebooks & Postman collection

research workflows · API exploration

Two more on-ramps for everyday work:

🔔 PWA + browser push

HOBBY+

Install Factor Weave as an app on iOS, Android, or desktop — and opt in to native browser notifications when an alert rule fires. The dashboard works offline; pushes arrive even when the tab is closed.

In the SPA: Alerts → Enable browser alerts · Install app (when offered by your browser).

Get a free key & pick a doorway

250 calls/day, no card. The research note explains what the data does and doesn't do.