The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Lokal listing page.
Live: https://rettfrabonden.com | MCP Server: https://rettfrabonden.com/mcp | API Spec: https://rettfrabonden.com/openapi.yaml
Rett fra Bonden is the discovery layer for local food in Norway. 1,371+ producers — farms, farm shops, REKO rings, farmers markets, and cooperatives — discoverable by AI agents and humans alike.
Not an app. Not a webshop. Infrastructure — the DNS for food agents.
The recommended setup for Claude.ai users: connect the remote MCP server directly, no local install required.
https://rettfrabonden.com/mcpOnce connected, ask Claude things like:
If you prefer a local install over remote:
Developer Mode: Add https://rettfrabonden.com/mcp as the MCP server URL.
Custom GPT: Create a GPT with Actions pointing to https://rettfrabonden.com/openapi.yaml. Instructions in custom-gpt-instructions.md.
The remote MCP endpoint at /mcp exposes four tools and two resources.
| Tool | Purpose | Read/Write |
|---|---|---|
lokal_search | Natural-language producer search (NO/EN). Auto-starts a conversation with top matches so sellers can respond. | Read + Write |
lokal_discover | Structured filter — categories, tags, geo-radius. Auto-starts conversations. | Read + Write |
lokal_info | Full producer profile — address, products, opening hours, certifications. | Read only |
lokal_stats | Platform-level metrics — total agents, cities covered. | Read only |
| Resource URI | Mime | Description |
|---|---|---|
lokal://producers/overview | text/plain | Aggregate view of producers by city |
lokal://producers/{agentId} | application/json | Detailed info about a specific producer |
| Endpoint | Method | Description |
|---|---|---|
/mcp | POST/GET/DELETE | MCP Streamable HTTP (remote MCP transport) |
/api/marketplace/search?q=... | GET | Natural language search (NO/EN) |
/api/marketplace/discover | POST | Structured filtering |
/api/marketplace/agents/:id/info | GET | Producer details |
/api/stats | GET | Platform statistics |
/a2a | POST | A2A JSON-RPC 2.0 |
/.well-known/agent-card.json | GET | A2A Agent Card |
/.well-known/mcp/server-card.json | GET | MCP Server Card (human + machine-readable metadata) |
/openapi.yaml | GET | OpenAPI 3.1 spec |
/llms.txt | GET | AI-discovery index |
/privacy | GET | Privacy policy (NO/EN) |
Full spec: https://rettfrabonden.com/openapi.yaml
Your farm/market might already be listed. Visit https://rettfrabonden.com to check, and claim your agent to update your info and respond to buyer queries.
"The connector can't reach the server"
Check that your client is pointed at https://rettfrabonden.com/mcp (HTTPS, no trailing slash). The server uses the Streamable HTTP transport — stdio clients should use the lokal-mcp npm package instead.
"CORS error in the browser"
Browser-based MCP clients must send an Origin header. The server allow-lists https://claude.ai, https://www.claude.ai, https://chatgpt.com, and https://chat.openai.com. If you're hosting your own agent on a different origin, open an issue and we'll add it.
"tools/list returns an empty array"
Hit POST /mcp with a proper initialize request first and capture the Mcp-Session-Id response header. Subsequent calls must include that header — session IDs are sticky per connection.
"Search returns no results for a Norwegian query"
The server handles both NO and EN, but accents matter. Use økologisk rather than okologisk for best relevance. Try widening with lokal_discover — it accepts lat/lng + radius instead of free text.
"I claimed my agent but the dashboard is empty"
Claims are verified by email. Check spam for the verification code from kontakt@rettfrabonden.com. The token is valid for 24 hours.
Rate limits
Public endpoints allow 150 searches and 300 general API calls per 15-minute window. MCP tools/call counts against the search bucket. If your agent hits the limit, back off for 15 minutes — we don't block IPs, only throttle.
Still stuck Open an issue at https://github.com/slookisen/lokal/issues with the request payload (redact anything sensitive) and the response status code.
MIT