# PlugRail JP Recall

> Search Japanese product recalls by keyword and category using public Consumer Affairs Agency data.

- name: dev.plugrail/jp-recall
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 95/100 flags: duplicate-repo
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.plugrail%2Fjp-recall
- tools: https://api.protogrid.dev/v1/servers/dev.plugrail%2Fjp-recall/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "jp-recall": {
      "type": "http",
      "url": "https://jp-recall.plugrail.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${JP_RECALL_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${JP_RECALL_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 97
- freshness: 100
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-93% +updated-19d-ago -duplicate-repo(3 names)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### 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: search_recalls (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_recall_detail (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- pass `tools.token_cost`: about 385 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 50 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- fail `stability.rug_pull`: 1 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: 2, about 385 tokens to load them all
- tool set hash: 32b36bd34dabeb5e424285c99eefc42b
- tools last changed: 2026-10-06T19:17:42.651Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.plugrail/jp-recall.svg)](https://protogrid.dev/servers/dev.plugrail/jp-recall)
- 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-06 `get_recall_detail` changed (inputSchema)
- 2026-10-06 `search_recalls` changed (description, inputSchema) **meaning changed**
  - before: 消費者庁リコール情報サイトをキーワード＋カテゴリで検索します。検索語は日本語推奨（英語の代表語は日本語に読み替えます。例: stroller→ベビーカー）。JAN・型番の照会は keyword にそのまま渡せます。入力例: {"keyword": "サーキュレーター", "category": "0", "limit": 15}
  - after: 消費者庁リコール情報サイトをキーワード＋カテゴリで検索します。検索語は日本語推奨（英語の代表語は日本語に読み替えます。例: stroller→ベビーカー）。かな/全角/英語を読み替えて検索した場合は summary に「〜として検索しました」と明記します。JAN・型番の照会は keyword にそのまま渡せます。入力例: {"keyword": "サーキュレーター", "category": "0", "limit": 15}掲載日の絞り込み posted_since/posted_until（YYYY-MM-DD・両端含む）を指定すると、上流の新しい順に最大5ページ（75件）まで走査して絞り込みます。total_count・range・nextCursor はいずれも limit 単位の論理位置（絞り込みありは絞り込み後、なしは上流順の続き）を示します。上限で打ち切った場合は summary に「上流の先頭75件までを確認」と明記します。
- 2026-10-03 `search_recalls` changed (description, inputSchema)
  - before: 消費者庁リコール情報サイトをキーワード＋カテゴリで検索します。JAN・型番の照会は keyword にそのまま渡せます。入力例: {"keyword": "サーキュレーター", "category": "0", "limit": 15}
  - after: 消費者庁リコール情報サイトをキーワード＋カテゴリで検索します。検索語は日本語推奨（英語の代表語は日本語に読み替えます。例: stroller→ベビーカー）。JAN・型番の照会は keyword にそのまま渡せます。入力例: {"keyword": "サーキュレーター", "category": "0", "limit": 15}

Full history: https://api.protogrid.dev/v1/servers/dev.plugrail%2Fjp-recall/changes

## Remotes

- https://jp-recall.plugrail.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9285714)

## Packages

_none_

## Tools (2)

- `get_recall_detail`: 管理番号（11桁）からリコール詳細1件を取得します。入力例: {"management_number": "00000035877"}
- `search_recalls`: 消費者庁リコール情報サイトをキーワード＋カテゴリで検索します。検索語は日本語推奨（英語の代表語は日本語に読み替えます。例: stroller→ベビーカー）。かな/全角/英語を読み替えて検索した場合は summary に「〜として検索しました」と明記します。JAN・型番の照会は keyword にそのまま渡せます。入力例: {"keyword": "サーキュレーター", "category": "0", "limit": 15}掲載日の絞り込み posted_since/posted_until（YYYY-MM-DD・両端含む）を指定すると、上流の新しい順に最大5ページ（75件）まで走査して絞り込みます。total_count・range・nextCursor はいずれも limit 単位の論理位置（絞り込みありは絞り込み後、なしは上流順の続き）を示します。上限で打ち切った場合は summary に「上流の先頭75件までを確認」と明記します。
