DEV Community

Petter Lindström
Petter Lindström

Posted on

How to Give Your AI Agent Capabilities It Doesn't Have (With One API Call)

Your AI agent is humming along — answering questions, making plans, executing tasks. Then it hits a wall.

It needs to validate a European VAT number. Or look up a company in Sweden's business registry. Or extract structured data from a page that blocks bots. Your agent doesn't have integrations for any of that, and building them means separate APIs, separate auth, separate billing, separate error handling.

This is the integration tax. And it's the reason 95% of AI agent pilots never make it to production.

Strale has been built to solve this. One API endpoint, hundreds of capabilities, audit trails on every call. Here's how it works.

The Problem: Every Capability = A New Integration

Say your agent needs to do a KYC check on a Swedish company. Without Strale, you need:

  1. An API key from the Swedish Companies Registration Office (Bolagsverket)
  2. A VAT validation integration with the EU's VIES service
  3. A sanctions screening provider
  4. Custom error handling for each
  5. Billing accounts for each
  6. A security review for each dependency

That's six integrations for one workflow. Multiply that by every capability your agent might need, and you understand why most agent projects stall.

The Fix: One Endpoint

`bashcurl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Look up Swedish company 5560125790 and get their details",
    "max_price_cents": 100
  }'`
Enter fullscreen mode Exit fullscreen mode

That's it. No capability slug needed — describe what you want in plain English, and Strale matches it to the right capability automatically.

The response:

json{
  "status": "completed",
  "capability_used": "swedish-company-data",
  "price_cents": 25,
  "wallet_balance_cents": 175,
  "latency_ms": 1230,
  "output": {
    "company_name": "Volvo Car Corporation",
    "org_number": "5560125790",
    "status": "Active",
    "registered_address": "..."
  }
}
Enter fullscreen mode Exit fullscreen mode

Every response is schema-validated, tagged with a transparency marker, and logged in an audit trail. Your agent knows exactly what it got and what it cost.

Spending Controls (Because Agents Shouldn't Have Blank Checks)

The max_price_cents parameter is your safety net. If the matched capability costs more than your limit, the call is rejected — no charge.

You can also preview costs before committing:

bashcurl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "capability_slug": "web-extract",
    "inputs": { "url": "https://example.com" },
    "dry_run": true
  }'
Enter fullscreen mode Exit fullscreen mode

This returns the matched capability and price without executing or charging. Useful when your agent is making autonomous decisions about which capabilities to use.

The Agent Fallback Pattern

You don't have to go all-in. The cleanest integration pattern is using Strale as a fallback — your agent tries the direct approach first, and calls Strale when it doesn't have what it needs:

python
from straleio import Strale

strale = Strale(api_key="sk_live_YOUR_KEY")

try:
    result = my_direct_scraper(url)
except (Blocked, RateLimited):
    result = strale.do(
        task="Extract structured data from this URL",
        inputs={"url": url},
        max_price_cents=50,
    )
Enter fullscreen mode Exit fullscreen mode

This means zero changes to your existing workflows. Strale only kicks in when your agent is stuck.

MCP Integration (For Claude, Cursor, and Friends)

If you're using MCP-compatible tools, Strale exposes all capabilities as MCP tools. Add this to your config and every capability is available as a tool your agent can call:

json{
  "mcpServers": {
    "strale": {
      "type": "streamableHttp",
      "url": "https://api.strale.io/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_YOUR_KEY"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

This works with Claude Desktop, Claude Code, Cursor, Windsurf, and 300+ other MCP clients. No npm install, no local server — just a remote endpoint.

What Capabilities Are Available?

The catalog covers the stuff agents actually need at runtime:

- Company data — Swedish, UK, US, and EU business registries
- Financial — IBAN, VAT, SWIFT/BIC validation, ECB exchange rates
- Compliance — EU AI Act classification, GDPR audits, sanctions screening
- Web scraping — JavaScript rendering, anti-bot bypass, structured extraction
- Document extraction — Invoices, contracts, receipts → structured JSON
- Security — Secret scanning, CVE lookup, SSL inspection, header audit
- Developer tools — SQL generation, OpenAPI validation, Dockerfile generation

Full catalog with input/output schemas and pricing: api.strale.io/v1/capabilities

Getting Started

  1. Register for free (€2.00 in credits, no card required):
bashcurl -X POST https://api.strale.io/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'
Enter fullscreen mode Exit fullscreen mode
  1. Make your first call:
bashcurl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Validate this IBAN: DE89370400440532013000",
    "max_price_cents": 50
  }'
Enter fullscreen mode Exit fullscreen mode
  1. Explore the docs or plug in the MCP server.

If you're building agents and running into the integration wall, I'd love to hear what capabilities you're missing. Drop a comment or find us at strale.dev.

Top comments (0)