Building an AI agent is the easy part. Getting it reliable data is the hard part.
Your agent can reason brilliantly, but at some point it needs to validate an IBAN, look up a VAT number, check a company's beneficial ownership, or pull a business registry entry. Every one of those data sources has its own API, its own auth, its own error handling, its own schema. Before you know it you've spent a week plumbing data integrations instead of building the thing you actually set out to build.
langchain-strale and crewai-strale solve this. They give your agent instant access to 250+ tested data capabilities — company registries, compliance checks, financial data, web extraction, and more — with a single import.
Install
# For LangChain agents
pip install langchain-strale
# For CrewAI agents
pip install crewai-strale
The simplest case: call a capability directly
No agent needed. Get the tools, find the one you want, call it.
from langchain_strale import StraleToolkit
toolkit = StraleToolkit(api_key="sk_live_...")
tools = toolkit.get_tools()
# Find the IBAN validator
iban_tool = next(t for t in tools if t.name == "iban-validate")
result = iban_tool._run(iban="GB82WEST12345698765432")
print(result)
# {"valid": true, "country_code": "GB", "bank_code": "WEST", ...}
The same pattern works for any of the 250+ capabilities — VAT validation, sanctions screening, company lookups, web scraping, and more. iban-validate is free tier, so you can run this without spending any credits.
With a LangChain agent
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_strale import StraleToolkit
llm = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_messages([
("system", "You are a compliance analyst with access to EU business data tools."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
toolkit = StraleToolkit(api_key="sk_live_...")
tools = toolkit.get_tools() # All 250+ capabilities as LangChain BaseTool instances
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)
result = executor.invoke({
"input": "Validate VAT number SE556703748501 and tell me what you find about the company"
})
print(result["output"])
With a CrewAI agent
from crewai import Agent, Task, Crew
from crewai_strale import StraleToolkit
toolkit = StraleToolkit(api_key="sk_live_...")
tools = toolkit.get_tools()
analyst = Agent(
role="EU Business Compliance Analyst",
goal="Validate and research European companies using official data sources",
backstory="Expert in EU business registries, VAT systems, and compliance data",
tools=tools,
)
task = Task(
description="Check if VAT number SE556703748501 is valid and find out what you can about the company",
agent=analyst,
expected_output="Validation status and available company information",
)
crew = Crew(agents=[analyst], tasks=[task])
result = crew.kickoff()
print(result)
What's in the toolkit
Every Strale capability becomes a tool with a name, a description (including price), and a typed input schema generated from the capability's own JSON Schema. The agent knows what each tool costs before it calls it.
Some categories worth knowing about:
- EU/Nordic business data — Swedish, Norwegian, Danish, Finnish company registries; VAT validation via VIES; IBAN validation; beneficial ownership lookups
- KYC & compliance — PEP screening, adverse media checks, sanctions screening across 27 countries
- Web extraction — screenshots, structured scraping, metadata extraction, URL-to-markdown
- Financial data — crypto prices, stock quotes, currency conversion, economic indicators
- Data utilities — JSON repair, CSV cleaning, address parsing, phone normalization
Two meta-tools come included in every toolkit:
-
strale_search— describe what you need in plain English, get back matching capabilities -
strale_balance— check your wallet balance from within the agent
Filter by category
If you don't want to expose all 250+ tools to your agent (reasonable — it can make tool selection noisier), filter by category:
tools = toolkit.get_tools(categories=["compliance", "finance"])
Quality scoring
Every capability on Strale has a Strale Quality Score — a dual-profile score covering quality (correctness, schema compliance, error handling, edge cases) and reliability (availability, success rate, latency, upstream health). You're not calling an untested endpoint. You're calling something that's been continuously tested and scored.
Try it free
Five capabilities are completely free — no API key, no credits, no signup:
curl -X POST https://api.strale.io/v1/do \
-H "Content-Type: application/json" \
-d '{"capability_slug": "iban-validate", "inputs": {"iban": "GB82WEST12345698765432"}}'
For all 250+ capabilities, sign up at strale.dev — new accounts get €2 in free trial credits, no card required.
Top comments (0)