# Strale

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/strale-io/strale  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/strale

## Description
Trust and quality infrastructure for AI agents. 225+ quality-scored capabilities with audit trails.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "strale": {
    "command": "npx",
    "args": ["-y","strale"]
  }
}
```

## Documentation & README

# Strale

Trust and quality infrastructure for AI agents.

[![strale MCP server](https://glama.ai/mcp/servers/strale-io/strale/badges/card.svg)](https://glama.ai/mcp/servers/strale-io/strale)

[![npm](https://img.shields.io/npm/v/strale-mcp?label=strale-mcp)](https://www.npmjs.com/package/strale-mcp)
[![npm](https://img.shields.io/npm/v/straleio?label=straleio)](https://www.npmjs.com/package/straleio)
[![PyPI](https://img.shields.io/pypi/v/straleio?label=straleio%20PyPI)](https://pypi.org/project/straleio/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![strale.dev](https://img.shields.io/badge/strale.dev-live-green)](https://strale.dev)

## What Strale is

Strale is a capability marketplace for AI agents. Agents call `strale.do()`
at runtime to reach verified capabilities — company registry lookups,
compliance checks, financial validation, Web3 security, and more — plus
bundled solutions for multi-step workflows like a full KYB check or company
due diligence, instead of the agent's own code hardcoding integrations and
managing credentials for every data source it might need.

Every capability is watched: free-tier capabilities are tested against real
upstreams on a schedule, paid capabilities are watched through production
observability and an enforced quality floor, and every call returns a
structured, auditable result with source provenance. The current catalog,
free-tier list, and country coverage are live values, not numbers printed
here — see [How to use it](#how-to-use-it) below for where to read them.

## How to use it

### MCP server (recommended: no install)

```json
{
  "mcpServers": {
    "strale": {
      "type": "streamableHttp",
      "url": "https://api.strale.io/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}
```

Works with Claude Desktop, Claude Code, Cursor, and any MCP client
supporting Streamable HTTP. For local stdio instead, or the full tool
surface, see [`packages/mcp-server/README.md`](https://github.com/strale-io/strale/blob/HEAD/packages/mcp-server/README.md).

### TypeScript SDK

```bash
npm install straleio
```

```typescript
import Strale from "straleio";

const strale = new Strale({ apiKey: process.env.STRALE_API_KEY });
const result = await strale.do("eu-vat-validate", { vat_number: "SE556000000001" });
```

Full reference: [`packages/sdk-typescript/README.md`](https://github.com/strale-io/strale/blob/HEAD/packages/sdk-typescript/README.md).

### Python SDK

```bash
pip install straleio
```

```python
from straleio import Strale

strale = Strale(api_key="your_api_key")
result = strale.do("eu-vat-validate", {"vat_number": "SE556000000001"})
```

Full reference: [`packages/sdk-python/README.md`](https://github.com/strale-io/strale/blob/HEAD/packages/sdk-python/README.md).

### Get started without an API key

A subset of capabilities (email/IBAN/crypto-address validation, DNS lookup,
JSON repair, URL-to-markdown, and more) work with no signup, no API key, and
no wallet — only an IP-based daily rate limit. Read the current list from
`GET /v1/platform/facts` (`free_tier_slugs`), not from a number in this
file. Get a key and trial credits at [strale.dev](https://strale.dev) when
you need the rest of the catalog.

### Framework integrations

| Package | Registry | Description |
| --- | --- | --- |
| [`strale-mcp`](https://www.npmjs.com/package/strale-mcp) | npm | MCP server — the full capability catalog via Claude, Cursor, any MCP host |
| [`straleio`](https://www.npmjs.com/package/straleio) | npm | TypeScript/JavaScript SDK |
| [`straleio`](https://pypi.org/project/straleio/) | PyPI | Python SDK |
| [`langchain-strale`](https://pypi.org/project/langchain-strale/) | PyPI | LangChain toolkit (`StraleToolkit`) |
| [`crewai-strale`](https://pypi.org/project/crewai-strale/) | PyPI | CrewAI integration — drop-in BaseTools for agents |
| [`strale-semantic-kernel`](https://www.npmjs.com/package/strale-semantic-kernel) | npm | Semantic Kernel plugin for .NET and TypeScript agents |
| [`composio-strale`](https://pypi.org/project/composio-strale/) | PyPI | Composio integration — custom actions |

Each package's own README is the reference for that integration; this file
only points at them. Every distribution PR against an external framework
repo, and every publish of one of these packages, follows CLAUDE.md's
Distribution PR Integrity Protocol — a package claiming framework-native
integration is verified against the published artefact, not the source
tree, before the claim ships.

### Web3

Web3 capabilities (wallet risk scoring, token honeypot detection, ENS
resolution, DeFi protocol data, gas oracle, EU MiCA VASP verification,
market sentiment) and bundled solutions for on-chain agents are available
via the x402 payment protocol — pay per call with USDC on Base mainnet, no
signup required. Not every capability is x402-eligible; read the live,
dynamic subset from:

```
GET https://api.strale.io/x402/catalog
GET https://api.strale.io/.well-known/x402.json
```

### Quality

Capabilities are continuously tested against their real upstreams: known-
answer, schema, negative, edge-case, and dependency-health checks, plus
piggyback checks fed by real production traffic where a capability's cost
model rules out proactive testing. An enforced quality floor quarantines a
capability that falls below it on real traffic and promotes it back
automatically on recovery. Strale deliberately publishes no single numeric
composite quality score — an earlier one was retired because it compressed
unrelated failure modes into a number that looked more precise than it
was. What is exposed instead is the raw evidence per capability: status,
last-tested timestamp, recent test history, known limitations, and the
data source behind it.

```
GET https://api.strale.io/v1/capabilities/vat-validate
```

Every capability publishes its limitations honestly, including coverage
gaps. Methodology: [strale.dev/quality](https://strale.dev/quality).

### IDE rules for safe data handling

Drop these into your project to give your coding agent security guidance
for trust-sensitive data (IBANs, company registries, sanctions, PII):

- **Cursor:** [`docs/ide-rules/strale-compliance.mdc`](https://github.com/strale-io/strale/blob/HEAD/docs/ide-rules/strale-compliance.mdc) → `.cursor/rules/`
- **Windsurf:** [`docs/ide-rules/strale-compliance.windsurfrules`](https://github.com/strale-io/strale/blob/HEAD/docs/ide-rules/strale-compliance.windsurfrules) → project root, or `.windsurf/rules/` as `.md`
- **Claude Code:** the snippet at [`docs/claude-md-snippet.md`](https://github.com/strale-io/strale/blob/HEAD/docs/claude-md-snippet.md) → your project's `CLAUDE.md`

These prevent the most common vibe-coding vulnerabilities: client-side IBAN
validation, hardcoded API keys, missing provenance metadata, and direct
registry scraping.

### Agent Skills & code examples

- **[Agent Skills](https://github.com/strale-io/agent-skills)** — `SKILL.md` files for Claude Code, Cursor, Copilot, and Codex. Copy `skills/strale/` into `.claude/skills/`, `.github/skills/`, or `.cursor/skills/`.
- [Verify a company with Strale](https://gist.github.com/petterlindstrom79/5e22945748c3ce42155bf6d41f46c4e0) (Python)
- [Validate IBANs — free, no API key](https://gist.github.com/petterlindstrom79/7f83fdc892dcafbc280735af5d0e360d) (Python)
- [Build an agent with Strale](https://gist.github.com/petterlindstrom79/2e4750eb919d314db7c697a504086e0b) (TypeScript)
- [Connect Strale to Claude](https://gist.github.com/petterlindstrom79/c08ddc1cb3dfed3ca434c70305dc9e54) (setup guide)

### More

- [strale.dev](https://strale.dev) — homepage and sign-up
- [strale.dev/docs](https://strale.dev/docs) — API reference
- [strale.dev/pricing](https://strale.dev/pricing) — pricing
- [scan.strale.io](https://scan.strale.io) — Beacon, a free agent-readiness scanner
- [api.strale.io/mcp](https://api.strale.io/mcp) — MCP endpoint (Streamable HTTP)
- [Examples](https://github.com/strale-io/strale-examples) — copy-paste examples for every integration

## How the code is organised

```
strale/
├── apps/api/          Hono API server: routes, capability executors,
│                       Drizzle schema + queries, Stripe/matching/auth
│                       helpers. drizzle/ holds the migration history.
├── packages/           Published SDKs and framework integrations (see the
│                       table above) plus internal workspace packages.
├── manifests/          One YAML file per live capability: pricing, data
│                       source, field-reliability declarations, test
│                       fixtures. The onboarding pipeline
│                       (apps/api/scripts/onboard.ts) is the only
│                       sanctioned way a capability enters the system —
│                       see CLAUDE.md's Capability Onboarding Protocol.
├── design/             Design tokens as data (colors, type, spacing) —
│                       one active file per surface, candidates carry a
│                       status, promotion is a decision plus a file swap.
├── config/              Cross-cutting configuration as data, e.g. the
│                       environment-variable manifest every process.env
│                       read is registered against.
└── scripts/            Repo-root tooling: the checkers behind every
                        `npm run *:check` script, the session-handoff
                        gate, and one-off operator scripts.
```

`apps/api/scripts/` and `apps/api/src/capabilities/` carry the same idea at
capability-authoring scope — read `CLAUDE.md`'s "Adding New Capabilities"
section before writing a new executor.

## How the company runs the repository

**Where truth lives.** Product, state, and roadmap truth is migrating from
Notion into this repository (`docs/project/`), but the migration is not
complete: `docs/project/START-HERE.md` and the rest of `docs/project/` are
explicitly **candidates** (`authority_active: false`) until a founder-
confirmed cutover. Until then, Notion (Project Home, the To-do & Build
Plan, the Decisions DB) is authoritative, and `CLAUDE.md` / `AGENTS.md` say
so at the top of every session. `docs/README.md` indexes every `docs/`
subtree with its current authority status; `docs/project/STRUCTURE.md`
records exactly where the repo's layout still deviates from the migration's
target and why.

**Where work in flight lives.** Multi-batch work is tracked in
`docs/programs/` (start at `docs/programs/README.md`): each program has a
`PROGRAM.md` with a "Resume here" section and a machine-checked
`tracks.yaml`. A session resuming a program reads only those two files and
follows their pointers — chat history is never required.

**How sessions work.** `CLAUDE.md` is the canonical operating manual for
Claude Code sessions; `AGENTS.md` is its condensed derivative for Codex-CLI
sessions and points back at `CLAUDE.md` for anything that can drift rather
than restating it. Every session ends through a handoff gate
(`scripts/handoff/handoff-check.mjs`, installed as a git hook) that refuses
to let a session leave uncommitted work, an unpushed branch, a stale
worktree, or code changes with no resume surface for the next session.
Batch work happens in an isolated `git worktree`, never the shared primary
checkout — see `WORKTREES.md`.

**What CI checks, by category, not by exhaustive list** (see
`.github/workflows/ci.yml` for the exact, current set): an ephemeral-
Postgres integration lane for money- and audit-chain-critical behavior;
typecheck and lint across `apps/api` and every published package; capability
manifest structural and fixture-consistency gates; framework-package
integrity (a published `*-strale` package must contain real code from the
framework it claims to integrate with); a family of content-as-data
registers, each with its own checker and generated index — research
(`docs/research/`), design tokens (`design/`), the environment-variable
manifest (`config/`), the model-id registry, the public claims register
(`docs/company/claims.yaml`), program track registers
(`docs/programs/*/tracks.yaml`), and this repository's own `docs/`
structure (`docs:check`, `archive:index -- --check`); and the session-
handoff gate itself. Every one of these checkers plants a failure case in a
throwaway fixture and proves it fails before the fix — see
`docs/company/LESSONS.md` family F5.

## Where history lives

`archive/` holds closed, historical, and superseded material — see
`archive/README.md` for what each subtree holds, generated (with hand-
written prose above it) by `npm run archive:index`. `handoff/` holds one
file per session's end-of-session record; `handoff/README.md` is a
generated, reverse-chronological index of all of them by date and stated
intent. Neither directory is required reading to resume work — the program
register and `docs/project/START-HERE.md` are.

## License

MIT

