strale-mcp
Strale MCP server exposes Strale's pay-per-call capability marketplace so agents can discover, execute, and audit 250+ data, compliance, validation, and Web3 tools, with some free no-key tools.
Health-check the server and see tool/capability counts.
Get onboarding info and list free no-API-key capabilities (email, DNS, JSON repair, URL-to-markdown, IBAN).
Search 250+ capabilities by keyword/category.
Execute a capability by slug with inputs and optional max price, returning structured JSON, SQS quality score, latency, and provenance.
Check wallet balance (API key required).
Read quality/trust methodology and SQS scoring.
Check a capability/solution trust profile before production use.
Retrieve past transaction records by ID for debugging/audit.
Provides drop-in BaseTools for CrewAI, allowing agents to utilize a marketplace of verified capabilities including web extraction, validation, and financial data lookups.
Integrates with LangChain via the StraleToolkit, offering over 200 verified tools for company lookups, compliance checks, and financial data analysis.
Features a utility to convert web URLs directly to Markdown, facilitating easy content extraction and processing for agents.
Provides a Semantic Kernel plugin for .NET agents to access a marketplace of 200+ verified and quality-scored capabilities.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Strale
Pay-per-call tools for AI agents — one API key or an x402 wallet. MCP server, REST API, TypeScript and Python SDKs.
What Strale is
Strale is a capability marketplace for AI agents. Agents call strale.do()
at runtime to reach tools — 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.
Each tool page lists inputs, output fields, price, limitations and source. Testing modes vary by tool. Read the current catalogue, free-tier list and country coverage from platform facts.
Related MCP server: ENTIA Entity Verification
How to use it
MCP server (recommended: no install)
{
"mcpServers": {
"strale": {
"type": "streamableHttp",
"url": "https://api.strale.io/mcp?src=gh-readme",
"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.
TypeScript SDK
npm install straleioimport 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.
Python SDK
pip install straleiofrom 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.
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 when
you need the rest of the catalog.
Framework integrations
Package | Registry | Description |
npm | MCP server — the full capability catalog via Claude, Cursor, any MCP host | |
npm | TypeScript/JavaScript SDK | |
PyPI | Python SDK | |
PyPI | LangChain toolkit ( | |
PyPI | CrewAI integration — drop-in BaseTools for agents | |
npm | Semantic Kernel plugin for .NET and TypeScript agents | |
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?src=gh-readme
GET https://api.strale.io/.well-known/x402.jsonTesting and source context
Testing modes vary by tool. Inspect current availability, test mode and last-tested time in public test signals, and read limitations and sources in the catalogue before use.
GET https://api.strale.io/v1/capabilities/vat-validateEvery capability publishes its limitations honestly, including coverage gaps. Methodology: 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→.cursor/rules/Windsurf:
docs/ide-rules/strale-compliance.windsurfrules→ project root, or.windsurf/rules/as.mdClaude Code: the snippet at
docs/claude-md-snippet.md→ your project'sCLAUDE.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 —
SKILL.mdfiles for Claude Code, Cursor, Copilot, and Codex. Copyskills/strale/into.claude/skills/,.github/skills/, or.cursor/skills/.Verify a company with Strale (Python)
Validate IBANs — free, no API key (Python)
Build an agent with Strale (TypeScript)
Connect Strale to Claude (setup guide)
More
strale.dev — homepage and sign-up
strale.dev/docs — API reference
strale.dev/pricing — pricing
scan.strale.io — Beacon, a free agent-readiness scanner
api.strale.io/mcp — MCP endpoint (Streamable HTTP)
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
Available Tools
9 toolsstrale_balanceRead wallet balanceARead-onlyIdempotentInspect
Returns the current Strale wallet balance. Call this before executing paid capabilities to verify sufficient funds, or after a series of calls to reconcile spend. Returns balance in EUR cents (integer) and formatted EUR string. Requires an API key — returns an auth instruction if none is configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/no-destruction, and the description adds genuinely new context: the response is EUR cents (integer) plus a formatted EUR string, and it discloses the auth requirement and that a missing API key produces an auth instruction rather than an error. That return-shape and auth-failure behavior are valuable since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, usage timing, and return/auth behavior, in that order. Every sentence carries distinct information with no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read tool with no output schema, the description fully covers what an agent needs: what it returns, when to call it, and what happens when unauthenticated. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly says nothing about inputs, avoiding noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the current Strale wallet balance') and is unambiguous against siblings like strale_execute or strale_transaction, which do not read balance. An agent knows exactly what this tool yields without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use triggers ('before executing paid capabilities to verify sufficient funds', 'after a series of calls to reconcile spend'), which implicitly points at strale_execute. It stops short of naming an alternative or stating a when-not-to-use condition, but no sibling overlaps here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_executeExecute a paid toolADestructiveInspect
Executes a Strale capability by slug and returns the result. Use this when you need to perform any verification, validation, lookup, or data extraction from the capability registry. Call strale_search first to find the right slug and required input fields. Returns a result object with the capability output, latency, price charged, and data provenance. Several capabilities are free without an API key (monthly per-IP allowance; see GET /v1/platform/facts, static.free_tier_monthly_limit) — strale_search reports which. Paid capabilities debit from the wallet — check strale_balance first for high-value calls.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Capability slug from strale_search results, e.g. 'swedish-company-data', 'vat-validate', 'iban-validate' | |
| inputs | Yes | Input parameters matching the capability's required fields. Check strale_search results for the expected input_fields. | |
| max_price_cents | No | Maximum price in EUR cents. Default: 200 (€2.00). Execution fails if capability costs more. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: paid capabilities debit the wallet, execution fails above max_price, and the response includes latency, price charged, and provenance. That effectively explains the destructiveHint=true as a financial side effect. It stops short of addressing idempotentHint=false — nothing warns that a retry of a paid call may charge twice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the action and immediately followed by the routing instructions and cost model. Every sentence carries information, though the parenthetical 'GET /v1/platform/facts, static.free_tier_monthly_limit' is dense and slightly awkward inline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly describes the return object (output, latency, price, provenance), and it covers prerequisites, free tier, and the price guard. It leaves retry/idempotency behavior and non-price failure modes unspecified, which matters for a paid, non-idempotent call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains slug, inputs, and the max_price_cents default and failure mode. The description reinforces the slug/inputs sourcing from strale_search but adds no format or syntax detail beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Executes a Strale capability by slug and returns the result') and enumerates the job families it covers: verification, validation, lookup, data extraction. The sibling relationship is made explicit by directing the agent to strale_search to obtain a slug, so it is not confused with the search or balance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit call order: strale_search first to find the slug and required input fields, strale_balance first for high-value calls. It also names a when-not/condition case by flagging that several capabilities are free without an API key under a monthly per-IP allowance, which strale_search reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_getting_startedGet started with StraleARead-onlyIdempotentInspect
Explains how to start using Strale and what is available without credentials. Call this on first connection. Returns the current free-tier capability list with example inputs, the pay-per-call (x402) route that needs no signup, and how to reach the full registry. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new context — no API key, no signup for the x402 route, and what the response contains. It doesn't state the response format (text vs. structured), which is the one behavioral detail left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, purpose first, trigger second, payload content third — well front-loaded with no filler. Minor redundancy between 'what is available without credentials' and 'No API key required' keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return content and does so at a category level (free-tier capabilities, example inputs, x402 route, registry path). The omission is the response format, which matters slightly more here precisely because there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 by rule. The description reinforces this implicitly by noting that no credentials or setup inputs are required, leaving nothing for an agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — it explains how to start using Strale — and clearly separates itself from the operational siblings (balance, execute, search) by being the onboarding entry point. An agent can identify this as the first-call tool without consulting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this on first connection' is an explicit, unambiguous trigger condition, which is more than most definitions offer. It stops short of naming when-not-to-call or explicitly routing to a sibling afterwards, so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_methodologyRead testing and source notesBRead-onlyIdempotentInspect
Explains testing modes, source context and transaction retrieval. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely useful context that no API key is needed, but says nothing about what the returned notes look like or whether output is static text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose, with no padding. The second sentence about API keys is a useful prerequisite stated compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema and read-only annotations, the definition is close to sufficient, but it does not tell the agent the shape of the returned notes or how they differ from strale_getting_started content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly implies nothing needs to be supplied, and there are no parameter semantics to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('Explains') and lists topics (testing modes, source context, transaction retrieval), but the phrasing is loose and 'transaction retrieval' sits oddly next to documentation topics. There is no differentiation from the sibling strale_getting_started, which plausibly covers similar overview ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this instead of strale_getting_started or strale_search. The only usable cue is 'No API key required', which hints at a prerequisite but not a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_pingCheck connectionARead-onlyIdempotentInspect
Checks that the Strale API is reachable and the MCP server is running. Call this before a series of capability executions to verify connectivity, or when troubleshooting connection issues. Returns server status, version, tool count, capability count, solution count, and a timestamp. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds genuinely new context beyond annotations: 'No API key required' resolves an auth question the agent would otherwise have to guess at, and it enumerates what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences ordered by value: what it does, when to call it, what comes back, auth caveat. The return-field enumeration is slightly listy, but each item is informative given no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the response, and it does so (status, version, tool count, capability count, solution count, timestamp). Combined with the no-API-key note, an agent has everything needed to call this correctly; only response types/format remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The schema accepts no properties and the description correctly implies a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Checks that the Strale API is reachable and the MCP server is running'), which is clearly distinguishable from the capability-execution siblings like strale_execute. An agent can tell instantly this is a connectivity probe, not a business operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers: 'Call this before a series of capability executions to verify connectivity, or when troubleshooting connection issues.' This is concrete when-to-use guidance rather than implied usage, and no sibling competes for this role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_searchSearch tools and bundlesARead-onlyIdempotentInspect
Searches the Strale capability registry by keyword, category, or natural language query. Use this when you need to find the right capability for a task but don't know the exact slug. Returns matching capabilities and solutions ranked by relevance, each with slug, name, description, category, and price in EUR cents. The registry spans company data, compliance, finance, web intelligence, and developer tools. No API key required to search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (matched against name, description, slug) | |
| offset | No | Number of results to skip (for pagination). Default: 0 | |
| category | No | Filter by category: compliance, validation, data-extraction, developer-tools, web3, security, domain-intel, recruiting, sales, legal, text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts: results are ranked by relevance, each carries slug/name/description/category/price in EUR cents, and no API key is required to search — real auth and return-shape context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, purpose front-loaded, no filler. The registry-domain list and the return-field enumeration are doing some work but sit close to the edge of padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating returned fields and price units, and it covers auth requirements. Pagination behavior and result-count limits are the only omission for a 3-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all three parameters; the description only reinforces that the query can be a natural-language phrase rather than a literal keyword. It says nothing about offset/pagination or how the category argument constrains results, so the baseline of 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches the Strale capability registry') plus the three search modes (keyword, category, natural language), which lets an agent distinguish it from the execute/balance/transaction siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when you need to find the right capability for a task but don't know the exact slug' gives an explicit triggering condition and implicitly routes known-slug callers elsewhere. It stops short of naming strale_execute as the alternative, so the exclusions are inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_transactionRead a transaction recordARead-onlyIdempotentInspect
Retrieve a past execution record by transaction ID. Returns inputs, outputs, latency, price, data provenance, success/failure status, and failure categorization. Use this to inspect what a previous strale_execute call returned, debug failures, or provide an audit trail. Free-tier transactions are accessible by ID without an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes | Transaction ID returned from a strale_execute call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds useful context beyond annotations: the exact returned fields (inputs, outputs, latency, price, provenance, status, failure categorization) and the API-key exemption for free-tier records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose, followed by return contents, use cases, and an access note. Every sentence adds information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates what is returned, and it covers the relevant auth nuance. It does not discuss retention limits or error behavior when an ID is not found, but it is otherwise complete for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as the transaction ID returned from strale_execute. The description reinforces the ID's origin but adds no syntax, format, or lookup constraints beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (a past execution record by transaction ID), and explicitly ties it to the sibling strale_execute by saying it lets you inspect what a previous call returned. An agent can distinguish it from strale_execute and strale_search without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use cases: inspecting a previous strale_execute result, debugging failures, and building an audit trail. It also notes free-tier access without an API key. It does not explicitly name when not to use it or an alternative for broader searching, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_trust_profileRead current test and availability signalsARead-onlyIdempotentInspect
Reads current public test results for a tool or bundle: badge, tested flag, recent pass rate and last-tested time where available. Use the catalogue for inputs, limitations and sources. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Capability or solution slug, e.g. 'swedish-company-data' or 'eu-company-due-diligence' | |
| type | No | Whether this is a capability or a bundled solution | capability |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is clear. The description adds useful behavioral context: results are public, some values are only available 'where available', and no API key is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three front-loaded sentences with no wasted text. Purpose, supporting-resource guidance and the API-key caveat each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with rich annotations and fully documented parameters, the description is largely complete and even lists the return signals despite there being no output schema. It offloads some detail to the catalogue, which is reasonable but keeps it from being fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented by the schema. The description's phrase 'for a tool or bundle' loosely maps to the type parameter but adds no syntax or format detail beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: reads current public test results for a tool or bundle. It enumerates the returned fields (badge, tested flag, pass rate, last-tested time), making the purpose clear, but it does not explicitly differentiate this from nearby sibling tools such as web3_assurance or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking test and availability signals and points to the catalogue for inputs, limitations and sources. It does not state when to use this instead of alternatives, nor does it give exclusions or prerequisites beyond 'No API key required'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strale_web3_assuranceCheck on-chain counterpartyARead-onlyIdempotentInspect
Returns a decision-ready answer about an on-chain counterparty (wallet, smart contract, token, DeFi protocol, or bridge) in a single call. Surfaces verdict (proceed/review/block/insufficient_evidence), reason_codes (machine-parsable UPPERCASE_SNAKE_CASE), critical_flags, suggested_action, evidence map (sanctions, mixer-graded, scam-cluster, wallet-history, token-safety, contract-verification, protocol-risk, EAS attestations, ERC-8004 reputation, more), and a sidecar audit_url. Two modes: 'outbound' (agent vetting recipient pre-payment, full evaluator set, 8s budget) or 'reverse-call' (service publisher gating an inbound x402 buyer in real-time, critical evaluators only, limited evaluator set). Use before any agent transacts on-chain — sending value, swapping, staking, minting, bridging, or interacting with a contract.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default 'outbound' (agent → recipient, 8s budget, all evidence). Use 'reverse-call' when you are an x402 service publisher gating an inbound buyer (critical evidence only, limited evaluator set). | |
| chain | No | Chain. EVM: 'ethereum' (default), 'base', 'polygon', 'arbitrum', 'optimism', 'bsc'. Or 'solana'. | |
| action | No | Optional intended action. When provided, enables pre-trade simulation (outbound mode) and tunes verdict severity. | |
| target | Yes | On-chain target. EVM wallet/contract/token (0x...), Solana address, or DeFi protocol slug (e.g. 'aave', 'uniswap-v3'). | |
| agent_id | No | Optional ERC-8004 agent identifier for the calling agent. | |
| amount_usd | No | Optional amount in USD. Sharpens verdict for high-value flows. | |
| target_type | No | Target kind. Inferred when omitted: 0x... → wallet (default), .eth/.sol → wallet, slug → protocol. | |
| caller_jurisdiction | No | Optional ISO country code for jurisdiction-aware verdict (US, EU, UK, etc.). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive; the description adds context those cannot carry — the two evaluator modes with their trade-offs (outbound: full evaluator set, 8s budget; reverse-call: critical evaluators only, limited set), the four verdict outcomes including insufficient_evidence, the enumerated evidence categories, and a sidecar audit_url for verification. This tells the agent latency and coverage expectations before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then modes, then the usage trigger — a sensible ordering. The return-value enumeration is a long parenthetical list that verges on overstuffed, but every element (verdict vocabulary, evidence categories) carries information the agent needs since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the return payload: verdict enum, reason_codes format, critical_flags, suggested_action, evidence map, and audit_url. Combined with mode selection, latency budget, and supported targets, an agent has everything needed to call it correctly in one shot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries a substantive description, so the baseline of 3 applies. The prose reinforces mode semantics and target_type inference but introduces no syntax, format, or constraint details absent from the schema — much of the mode and action guidance is restated rather than added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns a decision-ready answer') and a precisely scoped resource (on-chain counterparty), enumerating the target kinds: wallet, smart contract, token, DeFi protocol, bridge. An agent immediately knows what it gets back (verdict, reason_codes, flags, evidence, audit_url). It does not differentiate itself from the closely related sibling strale_trust_profile, which is the only remaining ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger: 'Use before any agent transacts on-chain — sending value, swapping, staking, minting, bridging, or interacting with a contract,' and names the condition that selects reverse-call ('when you are an x402 service publisher gating an inbound buyer'). No exclusions or named alternatives among siblings (e.g. strale_trust_profile), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.1- Added
strale_web3_assurance
8 tool updates
v0.1.0- First observed
strale_balance - First observed
strale_execute - First observed
strale_getting_started - First observed
strale_methodology - First observed
strale_ping - First observed
strale_search - First observed
strale_transaction - First observed
strale_trust_profile
TDQS
Scored across 9 tools
Most tools target clearly distinct concerns (connectivity, search, execute, wallet, transaction lookup, trust profile). The main boundary issue is strale_web3_assurance versus strale_execute with a web3 slug, and strale_methodology's vague description ('testing modes, source context and transaction retrieval') overlaps with strale_trust_profile and strale_transaction.
All tools share a consistent strale_ prefix and snake_case naming. The only deviation is stylistic: some names are verbs (execute, search, ping) while others are nouns (balance, transaction, methodology), though each is still readable and predictable.
Nine tools is well within the sweet spot for a capability-registry gateway. Each tool maps to a distinct step in the workflow (connect, onboard, search, check funds, execute, audit, etc.) and none feels redundant.
The core lifecycle — search, execute, inspect transactions, check balance, verify trust, onboarding, connectivity — is covered. Minor gaps: no dedicated list/history endpoint for transactions or capabilities (search partially covers), and no key/wallet management, but agents can work around these.
Maintenance
Related MCP Connectors
EU compliance checks for AI agents: sanctions, company, VAT ID, IBAN, email. Pay per call.
Register every AI agent, log every action, prove it. EU AI Act compliance built in.
Verified business identity for AI agents: 11.3M entities, EU VAT (VIES), BORME, GLEIF. Free trial.
European business verification for AI agents: registry, VAT, sanctions, IBAN. Pay-per-call x402.
Related MCP Servers
- AlicenseAqualityDmaintenanceURL intelligence for AI agents. One URL in, structured security and data quality signals out across 7 dimensions. 13 tools, risk score 0-100 with 23 configurable weights.1676 npm1MIT
- AlicenseAqualityCmaintenanceStructured business intelligence for AI agents. 11.3M verified entities, 40.3M BORME mercantile acts, EU VAT validation (VIES), GLEIF LEI and healthcare registries. 12 tools.61MIT
- AlicenseAqualityDmaintenanceCompliance and guardrails infrastructure for AI agents, enabling safe operations within regulatory boundaries like GDPR and EU AI Act.625 PyPIMIT

Qinisoofficial
AlicenseAqualityBmaintenanceThe deterministic fact-verification layer for AI agents. Validates the structured facts an agent emits — IBANs, payment cards, VAT and national tax IDs, crypto and bank addresses, domains, emails, phone numbers, securities and academic identifiers, plus dates, currencies and holidays — against checksums and curated authoritative data, not guesses.561Apache 2.0