Skip to main content
Glama

🥬 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 (Custom GPT) 使用

创建一个指向 https://rettfrabonden.com/openapi.yaml 的 Custom 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

端点

方法

描述

/api/marketplace/search?q=...

GET

自然语言搜索 (NO/EN)

/api/marketplace/discover

POST

结构化筛选

/api/marketplace/agents/:id/info

GET

生产商详情

/api/stats

GET

平台统计数据

/a2a

POST

A2A JSON-RPC 2.0

/.well-known/agent-card.json

GET

A2A 代理卡片

/openapi.yaml

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 tools
lokal_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriesNoCategories: vegetables, fruit, berries, dairy, eggs, meat, fish, bread, honey, herbs
tagsNoTags: organic, seasonal, budget, local, fresh
latNoLatitude for distance filtering
lngNoLongitude for distance filtering
maxDistanceKmNoMax distance in km
limitNoMax results

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe producer's agent ID (UUID)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statsBInspect

Get Lokal platform statistics — total agents, cities covered, interactions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv0.3.1
    • First observedlokal_discover
    • First observedlokal_info
    • First observedlokal_search
    • First observedlokal_stats

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides LLM-friendly weather tools and Norwegian place name resolution via MCP, enabling weather forecasts, air quality, marine conditions, and activity planning.
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    MCP 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.
    47
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    6
    MIT