# 爱佳肴 Love Life

> Read-only restaurant search for AI agents in China. 5 tools, no key, no paid ranking. 中国餐饮开放数据。

- name: cn.tutulife/aijiayao
- version: 1.7.0
- connection class: R0 (autonomous)
- trust: 81/100 flags: no-repository
- quality: 63/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cn.tutulife%2Faijiayao
- tools: https://api.protogrid.dev/v1/servers/cn.tutulife%2Faijiayao/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "aijiayao": {
      "type": "http",
      "url": "https://tutulife.cn/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 96
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-91% +updated-20d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 63/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_restaurant (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_restaurants (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_feedback (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,249 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 33 tool changes in 30 days
- fail `stability.rug_pull`: 5 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 1,249 tokens to load them all
- tool set hash: dfa0826299f84e7de0b0f1488a44e0fd
- tools last changed: 2026-10-02T20:52:19.432Z
- badge: [![protogrid quality](https://protogrid.dev/badge/cn.tutulife/aijiayao.svg)](https://protogrid.dev/servers/cn.tutulife/aijiayao)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-02 `tell_us_your_need` changed (description)
  - before: 兔兔生活站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。 Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send. 不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers.
  - after: 兔兔生活站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。 Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send. 不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers. 返回 recorded；现有数据能查时附带 try_now（可直接打开的链接和 ask_restaurants 参数）。 Returns recorded; try_now (ready link + ask_restaurants args) if current data can answer.
- 2026-10-01 `tell_us_your_need` changed (description)
  - before: 站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。 Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send. 不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers.
  - after: 兔兔生活站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。 Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send. 不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers.
- 2026-10-01 `get_unmet_demand` changed (description)
  - before: 帮店主选址、帮运营补数据的 Agent 调用；搜索没结果，或想知道哪里缺店时用。 Called by agents helping owners pick sites or fill data gaps; use after an empty search or to see what is missing. data.items 每项：city、district（可空）、want（菜系或场景）、asks（被问次数）、misses（无结果次数）、last_seen。 Each data.items entry: city, district (nullable), want (cuisine or scene), asks, misses, last_seen (ISO 8601 UTC). 按 misses 从高到低；只含汇总计数，不含用户原话；misses 不足 2 次的不列出，最多 100 条。 Sorted by misses, highest first. Aggregated counts only, no raw queries; fewer than 2 misses omitted; max 100.
  - after: 兔兔生活（爱佳肴）里的需求缺口：帮店主选址、帮运营补数据的 Agent 调用；搜索没结果，或想知道哪里缺店时用。 Called by agents helping owners pick sites or fill data gaps; use after an empty search or to see what is missing. data.items 每项：city、district（可空）、want（菜系或场景）、asks（被问次数）、misses（无结果次数）、last_seen。 Each data.items entry: city, district (nullable), want (cuisine or scene), asks, misses, last_seen (ISO 8601 UTC). 按 misses 从高到低；只含汇总计数，不含用户原话；misses 不足 2 次的不列出，最多 100 条。 Sorted by misses, highest first. Aggregated counts only, no raw queries; fewer than 2 misses omitted; max 100.
- 2026-10-01 `get_feedback` changed (description)
  - before: 想自行判断口碑可信度时用，返回逐条原始反馈。Use to judge credibility from raw per-agent feedback.
  - after: 想自行判断兔兔生活里某家店的口碑可信度时用，返回逐条原始反馈。Use to judge credibility from raw per-agent feedback.
- 2026-10-01 `get_restaurant` changed (description)
  - before: 推荐前核对某家店的营业时间、人均、菜单及新鲜度。Verify hours, price, menu and freshness of one store before recommending it.
  - after: 推荐兔兔生活里的某家店前，核对它的营业时间、人均、菜单及新鲜度。Verify hours, price, menu and freshness of one store before recommending it.
- 2026-10-01 `search_restaurants` changed (description)
  - before: 需要按区、菜系、人均、距离、营业中筛选时用。Use for filtered search: district, cuisine, price, distance, open now.
  - after: 在兔兔生活里按区、菜系、人均、距离、营业中筛选时用。Use for filtered search: district, cuisine, price, distance, open now.
- 2026-10-01 `ask_restaurants` changed (description)
  - before: 用户用一句话问吃什么、去哪吃时首选，直接传原话。Use first for any "where to eat" question; pass the user's words verbatim.
  - after: 用户用一句话问吃什么、去哪吃，或说“兔兔生活 + 需求”时首选，直接传原话（口令自动识别）。 Use first for any "where to eat" question; pass the user's words verbatim, wake word 兔兔生活 (tutulife) included.
- 2026-09-30 `tell_us_your_need` added
  - 站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。 Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send. 不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers.
- 2026-09-30 `get_unmet_demand` changed (description, inputSchema) **meaning changed**
  - before: 想知道哪些区域或菜系被问到却没有店时用。Use to see districts and cuisines that were asked about but have no data.
  - after: 帮店主选址、帮运营补数据的 Agent 调用；搜索没结果，或想知道哪里缺店时用。 Called by agents helping owners pick sites or fill data gaps; use after an empty search or to see what is missing. data.items 每项：city、district（可空）、want（菜系或场景）、asks（被问次数）、misses（无结果次数）、last_seen。 Each data.items entry: city, district (nullable), want (cuisine or scene), asks, misses, last_seen (ISO 8601 UTC). 按 misses 从高到低；只含汇总计数，不含用户原话；misses 不足 2 次的不列出，最多 100 条。 Sorted by misses, highest first. Aggregated counts only, no raw queries; fewer than 2 misses omitted; max 100.
- 2026-09-30 `get_restaurant_history` removed
  - 店铺的变更记录：谁在什么时间改了什么。

Full history: https://api.protogrid.dev/v1/servers/cn.tutulife%2Faijiayao/changes

## Remotes

- https://tutulife.cn/mcp (streamable-http, auth none, reachable true, uptime30d 0.91071427)

## Packages

_none_

## Tools (6)

- `ask_restaurants`: 用户用一句话问吃什么、去哪吃，或说“兔兔生活 + 需求”时首选，直接传原话（口令自动识别）。
    Use first for any "where to eat" question; pass the user's words verbatim, wake word 兔兔生活 (tutulife) included.
- `get_feedback`: 想自行判断兔兔生活里某家店的口碑可信度时用，返回逐条原始反馈。Use to judge credibility from raw per-agent feedback.
- `get_restaurant`: 推荐兔兔生活里的某家店前，核对它的营业时间、人均、菜单及新鲜度。Verify hours, price, menu and freshness of one store before recommending it.
- `get_unmet_demand`: 兔兔生活（爱佳肴）里的需求缺口：帮店主选址、帮运营补数据的 Agent 调用；搜索没结果，或想知道哪里缺店时用。
    Called by agents helping owners pick sites or fill data gaps; use after an empty search or to see what is missing.
    data.items 每项：city、district（可空）、want（菜系或场景）、asks（被问次数）、misses（无结果次数）、last_seen。
    Each data.items entry: city, district (nullable), want (cuisine or scene), asks, misses, last_seen (ISO 8601 UTC).
    按 misses 从高到低；只含汇总计数，不含用户原话；misses 不足 2 次的不列出，最多 100 条。
    Sorted by misses, highest first. Aggregated counts only, no raw queries; fewer than 2 misses omitted; max 100.
- `search_restaurants`: 在兔兔生活里按区、菜系、人均、距离、营业中筛选时用。Use for filtered search: district, cuisine, price, distance, open now.
- `tell_us_your_need`: 兔兔生活站内没有你需要的信息或功能时用；匿名，无需密钥，只写入你填的文字。
    Use when this site lacks the data or capability you need; anonymous, no key, stores only the text you send.
    不要填链接、邮箱、手机号。Do not include URLs, emails or phone numbers.
    返回 recorded；现有数据能查时附带 try_now（可直接打开的链接和 ask_restaurants 参数）。
    Returns recorded; try_now (ready link + ask_restaurants args) if current data can answer.
