lokal
🥬 Lokal — ノルウェーの地元食品エージェントネットワーク
ライブ: https://rettfrabonden.com | API仕様: https://rettfrabonden.com/openapi.yaml
Lokalは、ノルウェーの地元食品を発見するためのレイヤーです。400以上の生産者(農場、市場、店舗)が、AIエージェントや人間によって検索可能です。
アプリではありません。ウェブショップでもありません。インフラストラクチャ — 食品エージェントのためのDNSです。
Lokalを利用する
Claude Desktopから (MCP)
Claude Desktopの設定に追加してください:
{
"mcpServers": {
"lokal": {
"command": "npx",
"args": ["lokal-mcp"]
}
}
}その後、Claudeに尋ねてください: "Finn økologiske grønnsaker nær Oslo" (オスロ近郊のオーガニック野菜を探して)
ChatGPTから (カスタムGPT)
https://rettfrabonden.com/openapi.yaml を指すアクションを持つカスタムGPTを作成してください。手順は custom-gpt-instructions.md にあります。
独自のエージェントから (A2A / REST)
# Natural language search
curl "https://rettfrabonden.com/api/marketplace/search?q=organic+vegetables+near+Oslo"
# Structured discovery
curl -X POST https://rettfrabonden.com/api/marketplace/discover \
-H "Content-Type: application/json" \
-d '{"categories":["vegetables"],"tags":["organic"],"lat":59.91,"lng":10.75,"maxDistanceKm":30}'
# A2A JSON-RPC
curl -X POST https://rettfrabonden.com/a2a \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"message/send","params":{"message":{"role":"user","parts":[{"type":"text","text":"Find cheese near Bergen"}]}},"id":"1"}'Related MCP server: datakilder-mcp
API
エンドポイント | メソッド | 説明 |
| GET | 自然言語検索 (NO/EN) |
| POST | 構造化フィルタリング |
| GET | 生産者の詳細 |
| GET | プラットフォーム統計 |
| POST | A2A JSON-RPC 2.0 |
| GET | A2Aエージェントカード |
| GET | OpenAPI 3.1仕様 |
完全な仕様: https://rettfrabonden.com/openapi.yaml
アーキテクチャ
TypeScript + Express (Fly.io、ストックホルムリージョン)
SQLite (WALモード、永続ボリューム)
A2A v1.0.0 準拠 (JSON-RPC 2.0 + エージェントカード)
価値ベースのマッチング — 広告なし、ランキングへの支払いなし
400以上のエージェント (ノルウェーの150以上の都市)
生産者の方へ
あなたの農場や市場はすでにリストされているかもしれません! https://rettfrabonden.com にアクセスして確認し、エージェントを申請して情報を更新してください。
ライセンス
MIT
Available Tools
4 toolslokal_discoverBInspect
Structured search in the Lokal food producer registry. Filter by food categories, tags, and geographic distance. Returns ranked producers with contact info and vCard links.
| Name | Required | Description | Default |
|---|---|---|---|
| categories | No | Categories: vegetables, fruit, berries, dairy, eggs, meat, fish, bread, honey, herbs | |
| tags | No | Tags: organic, seasonal, budget, local, fresh | |
| lat | No | Latitude for distance filtering | |
| lng | No | Longitude for distance filtering | |
| maxDistanceKm | No | Max distance in km | |
| limit | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that results are 'ranked' and includes 'contact info and vCard links,' which adds some behavioral context beyond basic search functionality. However, it lacks critical information about permissions, rate limits, error conditions, pagination (beyond the limit parameter), or whether this is a read-only operation. For a search tool with no annotations, this leaves significant gaps.
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 a single, well-structured sentence that efficiently conveys the tool's purpose, key parameters, and return value. It's front-loaded with the core functionality and avoids any redundant or unnecessary information. Every part of the sentence earns its place by adding value.
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?
Given the complexity (6 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It covers the basic purpose and return format, but lacks behavioral details (e.g., error handling, authentication) and usage guidelines relative to siblings. With no output schema, it doesn't fully explain the structure of returned data beyond mentioning 'ranked producers with contact info and vCard links.' This makes it minimally viable but incomplete for optimal agent use.
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 documents all parameters thoroughly with descriptions and constraints (e.g., categories and tags with example values, lat/lng for distance filtering, limit with min/max/default). The description adds marginal value by summarizing the filtering capabilities ('Filter by food categories, tags, and geographic distance') but doesn't provide additional syntax, format details, or usage examples beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the tool performs 'structured search in the Lokal food producer registry' with specific filtering capabilities (categories, tags, geographic distance) and indicates what it returns (ranked producers with contact info and vCard links). It distinguishes itself from siblings by focusing on structured search with specific filters, though it doesn't explicitly differentiate from 'lokal_search' which might have overlapping functionality.
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 provides no guidance on when to use this tool versus the sibling tools (lokal_info, lokal_search, lokal_stats). It doesn't mention prerequisites, alternatives, or specific use cases that would help an agent choose between these tools. The only implied usage is for searching with specific filters, but no comparative context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lokal_infoAInspect
Get detailed information about a specific Lokal producer — address, products, opening hours, certifications, and a vCard link the user can add to their contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The producer's agent ID (UUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes the return data structure (address, products, etc.) and mentions a vCard link functionality, which adds useful context. However, it doesn't disclose behavioral traits like whether this is a read-only operation, error handling, or performance characteristics.
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 a single, well-structured sentence that efficiently communicates purpose and return values. Every element (verb, resource, specific data fields) earns its place with zero wasted words.
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 single-parameter read operation with no output schema, the description provides good coverage of what information will be returned. It could be more complete by mentioning the response format or error cases, but it adequately conveys the tool's purpose and output scope.
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 documents the single 'agentId' parameter as a UUID. The description adds no additional parameter semantics beyond what's in the schema, but the baseline is 3 when schema coverage is high.
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 clearly states the verb ('Get') and resource ('specific Lokal producer'), specifying the exact information returned (address, products, opening hours, certifications, vCard link). It distinguishes from sibling tools by focusing on detailed information for a specific producer rather than discovery, search, or statistics.
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 usage context by specifying 'specific Lokal producer,' suggesting this tool should be used when the user already has a producer ID. However, it doesn't explicitly state when NOT to use it or name alternatives like 'lokal_search' for finding producers without an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lokal_searchAInspect
Search for local food producers in Norway using natural language. Supports Norwegian and English. Returns ranked producers with contact info and a vCard link so the user can add them to their contacts. Examples: 'fresh vegetables near Grünerløkka', 'organic honey Oslo', 'ost Trondheim'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language search query (Norwegian or English) | |
| limit | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: natural language processing, bilingual support (Norwegian/English), ranked results, and vCard functionality. However, it doesn't mention important operational aspects like rate limits, authentication requirements, error conditions, or pagination behavior beyond the 'limit' parameter.
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 perfectly concise and well-structured: the first sentence establishes core functionality, the second adds important behavioral details, and the third provides concrete examples. Every sentence earns its place with no wasted words, and key information is front-loaded appropriately.
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 search tool with 2 parameters, 100% schema coverage, but no annotations or output schema, the description provides adequate context about what the tool does and how to use it. However, it lacks details about the return format (beyond mentioning vCard links), error handling, or performance characteristics that would be helpful given the absence of structured output documentation.
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?
With 100% schema description coverage, the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema - it mentions natural language queries in Norwegian/English (implied by the schema's description) and provides query examples, but doesn't explain parameter interactions or provide additional semantic context. This meets the baseline for high schema coverage.
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 clearly states the tool's purpose with specific verbs ('search for local food producers') and resources ('in Norway'), distinguishing it from siblings by focusing on natural language search rather than discovery, info, or stats. It explicitly mentions the target domain (food producers) and geographic scope (Norway).
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 provides clear context for when to use this tool (searching for food producers with natural language queries in Norwegian or English) and includes helpful examples. However, it doesn't explicitly state when NOT to use it or mention alternatives among the sibling tools (lokal_discover, lokal_info, lokal_stats), leaving some ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lokal_statsBInspect
Get Lokal platform statistics — total agents, cities covered, interactions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it indicates this is a read operation ('Get'), it doesn't specify whether authentication is required, rate limits apply, or what format the statistics are returned in. For a tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond its basic purpose.
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 extremely concise—a single sentence that efficiently communicates the tool's purpose and the specific statistics it returns. Every word earns its place with no redundancy or unnecessary elaboration, making it easy to parse and understand immediately.
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?
Given the tool's simplicity (no parameters, no output schema, no annotations), the description is adequate but minimal. It explains what statistics are retrieved but doesn't address behavioral aspects like authentication needs or response format. For a read-only statistics tool, this provides the core information but leaves practical implementation details unclear.
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 has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters since none exist, and it provides context about what statistics are retrieved. This meets the baseline expectation for a parameterless tool.
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 clearly states the tool's purpose with a specific verb ('Get') and resource ('Lokal platform statistics'), listing the types of statistics returned (total agents, cities covered, interactions). It distinguishes itself from siblings by focusing on platform-wide statistics rather than discovery, information, or search functions. However, it doesn't explicitly differentiate from siblings in the description text, so it falls just short of a perfect score.
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 provides no guidance on when to use this tool versus its siblings (lokal_discover, lokal_info, lokal_search). It doesn't mention any prerequisites, alternatives, or specific contexts where this tool is appropriate. The agent must infer usage based solely on the tool name and description without explicit direction.
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.
4 tool updates
v0.3.1- First observed
lokal_discover - First observed
lokal_info - First observed
lokal_search - First observed
lokal_stats
TDQS
Scored across 4 tools
The tools have overlapping purposes that could cause confusion. 'lokal_discover' and 'lokal_search' both search for producers, with 'discover' offering structured filtering and 'search' using natural language, making them potentially ambiguous. 'lokal_info' and 'lokal_stats' are distinct, but the two search tools may lead to misselection due to unclear boundaries in their use cases.
All tool names follow a consistent 'lokal_' prefix with a descriptive suffix pattern (e.g., discover, info, search, stats). This predictable verb_noun-like structure is clear and uniform throughout the set, with no deviations in style or convention.
With 4 tools, the count is reasonable and well-scoped for a food producer registry server. It covers key operations like searching, retrieving details, and getting platform stats, though it might feel slightly thin if more advanced features are expected, but overall it's appropriate for the domain.
The tool set covers basic search and retrieval functions but has notable gaps. There is no ability to create, update, or delete producer data, which limits CRUD coverage. However, for a read-only registry focused on discovery and information, it handles core workflows adequately, leaving agents to work around the lack of write operations.
Maintenance
Related MCP Connectors
Norwegian transport (Entur) and geodata (Kartverket): trips, departures, addresses, elevation.
Danish grocery catalog as MCP tools: live offers across all major chains, stores, EAN lookup, stock.
Norske Høyesterettsavgjørelser og lovtekst som lov-bevisst data, søkbart på vanlig norsk.
Search and discover currently playable Nordic cultural recordings.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides LLM-friendly weather tools and Norwegian place name resolution via MCP, enabling weather forecasts, air quality, marine conditions, and activity planning.1MIT
- AlicenseBqualityAmaintenanceMCP server providing typed tools for Norwegian public data sources, enabling natural language queries to official datasets like SSB, Brønnøysund, MET, Kartverket, Entur, and more, without requiring API keys.47MIT
- AlicenseAqualityBmaintenanceEnables searching products, viewing product details, managing the basket, and accessing order history on nemlig.com through natural language. It does not support placing orders or accessing payment cards.6MIT
- AlicenseAqualityBmaintenanceEnables AI agents to access Norwegian public transport and geospatial data, including trip planning, stop departures, address search, elevation, and administrative boundaries, via the Entur and Kartverket APIs.2116 npmMIT