Agent Quickstart

3-minute integration. Copy the config for your framework, restart, start calling tools. The public tools work without an API key; the live list is /mcp/tools.json.

Try /do now, no API key needed

Try first (no API key needed)

# JSON-RPC over Streamable HTTP (legacy SSE deprecated); tools/list needs no key and no initialize
curl -X POST https://astranl.com/mcp/streamable   -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream'   -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Or via tools.json (static catalog):
curl https://astranl.com/mcp/tools.json | jq '.tools[].name'

Public tools (read from the live catalogue when this page was served): ask_astranl, check_counterparty_nl, record_counterparty_check, create_task, check_task, get_evidence, verify_astranl, ground_astranl, ground_component, construction_summary, construction_permits, construction_leadtimes, construction_tenders, construction_laws, construction_economy, construction_zones, construction_natura, construction_events, search, fetch. Internal tools are not exposed to public agents.

Live demo — try /do right now

Type a real-world intent. Get a structured task in JSON. No registration, 3 free tries from any IP.

Facts for agents

Public tools from the live catalogue (server 1.37.0)
ToolRequired inputRead-onlyIdempotentOpen worldDestructive
ask_astranlquestionyesyesnono
check_counterparty_nlat least one of kvk_number, company_name, vat_number, city, purposeyesyesyesno
record_counterparty_checkcheck_idnoyesnono
create_taskneednonoyesno
check_taskat least one of task_id, receipt_id, receipt_keyyesyesnono
get_evidencetask_idyesyesnono
verify_astranlrefyesyesnono
ground_astranlqueryyesyesnono
ground_componentmpnyesyesyesno
construction_summarynoneyesyesnono
construction_permitsnoneyesyesnono
construction_leadtimesnoneyesyesnono
construction_tendersnoneyesyesnono
construction_lawsnoneyesyesnono
construction_economynoneyesyesnono
construction_zonesnoneyesyesnono
construction_naturanoneyesyesnono
construction_eventsnoneyesyesnono
searchqueryyesyesnono
fetchidyesyesnono
Auth
The public MCP tools need no API key. REST agent routes under /api/agents/ use the X-Agent-Key header with the api_key returned by POST /api/agents/register.
Scopes
No OAuth scopes are published. Access is per tool: only the tools listed here are offered to public agents; internal tools are not listed.
Status
create_task answers with a receipt_id and status received_and_persisted: the request exists in AstraNL, nothing is matched, accepted, authorized, planned or paid yet. Planning runs afterwards; check_task with the receipt_id returns events_after_receipt (PLANNING_RESULT or PLANNING_FAILED) and honest_state. A task_id appears only if planning produced one.
Idempotency
An identical create_task input within 10 minutes returns the original receipt_id with duplicate_of set; no second request is stored. Per-tool idempotent hints are in the table.
Expiry
The duplicate window is 10 minutes. Signed ACTION receipts with expiry and revocation are not live yet: POST /api/reality/action/receipt answers 503 while issuing is off.
Errors
Errors come back as JSON text inside the tool result, for example {"ok": false, "error": "validation", "field": "need"}, {"ok": false, "error": "persistence", "received": false}, {"ok": false, "error": "unknown receipt_id"} and {"error": "unknown tool"}. received: false means nothing was stored.
Tests
create_task with synthetic: true is a test; it is never counted as real activity.
OpenAPI
/openapi.json (OpenAPI 3.1, public REST allowlist)

Claude Desktop

Anthropic's desktop client. Works on macOS and Windows.

Add to: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
  "mcpServers": {
    "astranl": {
      "url": "https://astranl.com/mcp/streamable"
    }
  }
}

Restart Claude Desktop, or add the same URL in Claude under Settings, Connectors, Add custom connector. The public AstraNL tools appear automatically; the live list is /mcp/tools.json.

Cursor IDE

AI-first code editor with native MCP support.

Add to: .cursor/mcp.json (project root)

{
  "mcpServers": {
    "astranl": {
      "url": "https://astranl.com/mcp/streamable"
    }
  }
}

Cursor reloads MCP servers automatically. Tools appear in the chat sidebar.

CrewAI

Multi-agent orchestration framework. Python.

Add to: any python file

from crewai_tools import MCPServerAdapter

params = {"url": "https://astranl.com/mcp/streamable", "transport": "streamable-http"}

with MCPServerAdapter(params) as astranl_tools:
    # Use in any Agent:
    agent = Agent(
        role="Coordinator",
        tools=astranl_tools,
        # ... your other config
    )

AstraNL tools become callable as crew tools. Each tool call hits /mcp/streamable (legacy /mcp/sse is deprecated).

LangChain

LLM application framework. Python.

Add to: any python file

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_mcp_adapters.tools import load_mcp_tools

client = MultiServerMCPClient({
    "astranl": {
        "url": "https://astranl.com/mcp/streamable",
        "transport": "streamable_http",
    }
})

tools = await load_mcp_tools(client)

# Pass tools[] to your agent or LCEL chain

All public tools become LangChain Tool objects. Drop-in into AgentExecutor or LangGraph.

Trust signals

Jurisdiction
Netherlands · KvK 88449335 · BTW NL004604224B69
Compliance
EU AI Act · GDPR · Wwft
Shell access for public agents
NO (reserved tools blocked)
Prepaid wallet
Yes · minimum €0.01 · no subsidies
Physical task fee
Provider paid directly · AstraNL 1% only after confirmed settlement
AI capability markup
15% on inference cost
Audit retention
≥ 180 days (EU AI Act Art. 12)
Protocol spec
/protocol/acp/
Reputation methodology
live 4-factor scoring
Discovery manifest: /.well-known/agent.json · Capability changes: /.well-known/capabilities/changes · Live tasks: /agents/bazaar · Leaderboard: /agents/leaderboard