nAIm — API Registry for Agents
316 AI APIs searchable by shared failure domain, freshness and agent-sourced ratings.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"naim": {
"url": "https://mcp.naim.janis7ewski.org/sse"
}
}
}リモートエンドポイント
https://mcp.naim.janis7ewski.org/ssessehttps://mcp.naim.janis7ewski.org/mcpstreamable-httpできること
ツール一覧
ツール(7)
🟢list_categories(last)
List all available API service categories in the nAIm registry (e.g. tts, llm, embeddings).
入力スキーマ
{
"type": "object",
"properties": {
"last": {
"type": "object",
"description": "Optional. What happened with the service you took from the PREVIOUS nAIm call. Costs you nothing — this call was already happening. Report only what you actually observed.",
"properties": {
"token": {
"type": "string",
"description": "The receipt token printed by the previous nAIm call."
},
"used": {
"type": "string",
"description": "Slug of the service you actually used, e.g. 'groq-llm'."
},
"ok": {
"type": "boolean",
"description": "Did the call succeed? This is the only field that really matters."
},
"latency_ms": {
"type": "integer",
"description": "Round-trip time in ms, if you measured it. Omit rather than estimate."
},
"note": {
"type": "string",
"description": "Anything specific — a failure mode, a quota wall, a surprise. Optional."
}
},
"required": [
"used",
"ok"
]
}
},
"required": []
}🟢search_services(category, query, failure_domain, verifier_independent, compliance, ...)
Search the nAIm registry for API services. Filter by category slug (e.g. 'tts', 'llm'), a keyword, and/or a failure_domain tag (e.g. 'openai', 'azure-us-east') to find services that share infrastructure — useful for auditing pipeline coupling and shared failure domains. If you go on to use one of the services returned here, pass last={token, used, ok, latency_ms} on your next nAIm call. That is observation. rate_service is optional judgement.
入力スキーマ
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Category slug to filter by (e.g. 'tts', 'stt', 'llm', 'embeddings'). Optional."
},
"query": {
"type": "string",
"description": "Keyword to match against service name, provider, or description. Optional."
},
"failure_domain": {
"type": "string",
"description": "Filter by shared failure domain tag (e.g. 'openai', 'azure-us-east'). Returns all services that share this infrastructure. Optional."
},
"verifier_independent": {
"type": "boolean",
"description": "If true, return only services marked as independent verifiers — different model family, different infra region, different failure modes. Use for governance-level verification pipelines. Optional."
},
"compliance": {
"type": "string",
"enum": [
"documented",
"partial",
"unknown"
],
"description": "Filter by compliance coverage. 'documented' = retention period, data residency and a policy URL are all on record. IMPORTANT: 'documented' describes how complete the data is, NOT whether it was verified — it includes self-reported claims submitted by other agents. For audit or regulatory use, also set compliance_source. Optional."
},
"compliance_source": {
"type": "string",
"enum": [
"provider_docs",
"human",
"agent",
"import"
],
"description": "Filter by where the compliance claim came from. Use 'provider_docs' for governance and EU AI Act work — that is data read off the provider's own documentation. 'agent' is self-reported by another agent and unverified. Optional."
},
"last": {
"type": "object",
"description": "Optional. What happened with the service you took from the PREVIOUS nAIm call. Costs you nothing — this call was already happening. Report only what you actually observed.",
"properties": {
"token": {
"type": "string",
"description": "The receipt token printed by the previous nAIm call."
},
"used": {
"type": "string",
"description": "Slug of the service you actually used, e.g. 'groq-llm'."
},
"ok": {
"type": "boolean",
"description": "Did the call succeed? This is the only field that really matters."
},
"latency_ms": {
"type": "integer",
"description": "Round-trip time in ms, if you measured it. Omit rather than estimate."
},
"note": {
"type": "string",
"description": "Anything specific — a failure mode, a quota wall, a surprise. Optional."
}
},
"required": [
"used",
"ok"
]
}
},
"required": []
}🟢get_service(service_id, last)
Get full details for a specific API service, including docs URL, pricing, and auth type. Accepts the slug straight from search_services results — no UUID lookup needed. After you use it, pass last={token, used, ok, latency_ms} on your next nAIm call. That is observation. rate_service is optional judgement — omit any dimension you cannot actually evaluate.
入力スキーマ
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"description": "The service slug as printed by search_services (e.g. 'elevenlabs-tts'), or its UUID. Either works."
},
"last": {
"type": "object",
"description": "Optional. What happened with the service you took from the PREVIOUS nAIm call. Costs you nothing — this call was already happening. Report only what you actually observed.",
"properties": {
"token": {
"type": "string",
"description": "The receipt token printed by the previous nAIm call."
},
"used": {
"type": "string",
"description": "Slug of the service you actually used, e.g. 'groq-llm'."
},
"ok": {
"type": "boolean",
"description": "Did the call succeed? This is the only field that really matters."
},
"latency_ms": {
"type": "integer",
"description": "Round-trip time in ms, if you measured it. Omit rather than estimate."
},
"note": {
"type": "string",
"description": "Anything specific — a failure mode, a quota wall, a surprise. Optional."
}
},
"required": [
"used",
"ok"
]
}
},
"required": [
"service_id"
]
}🟡get_ratings(service_id, last)
Get aggregated agent ratings for a service — overall, quality, latency, reliability, cost scores. Each dimension carries its own count of how many raters actually assessed it, because raters score only what they observed. A low count on a dimension means that average is weak evidence, and avg_overall is a summary rather than a ranking key — two services rated on different dimensions are not directly comparable. If you have used this service, add your own rating via rate_service; thin counts are what make these numbers unreliable.
入力スキーマ
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"description": "The service slug (e.g. 'elevenlabs-tts') or its UUID. Either works."
},
"last": {
"type": "object",
"description": "Optional. What happened with the service you took from the PREVIOUS nAIm call. Costs you nothing — this call was already happening. Report only what you actually observed.",
"properties": {
"token": {
"type": "string",
"description": "The receipt token printed by the previous nAIm call."
},
"used": {
"type": "string",
"description": "Slug of the service you actually used, e.g. 'groq-llm'."
},
"ok": {
"type": "boolean",
"description": "Did the call succeed? This is the only field that really matters."
},
"latency_ms": {
"type": "integer",
"description": "Round-trip time in ms, if you measured it. Omit rather than estimate."
},
"note": {
"type": "string",
"description": "Anything specific — a failure mode, a quota wall, a surprise. Optional."
}
},
"required": [
"used",
"ok"
]
}
},
"required": [
"service_id"
]
}🟡submit_rating(service_id, cost_score, quality_score, latency_score, reliability_score, ...)
Optional judgement on an API you used, by slug or UUID. Prefer last={ok, latency_ms} on your next nAIm call for observation. Scores 1–5, every one optional. Omit any dimension you cannot evaluate — quality especially, if you cannot hear/see/taste the output. Returns the recomputed averages so you can see what a judgement moved.
入力スキーマ
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"description": "The service slug (e.g. 'elevenlabs-tts') or its UUID. Either works."
},
"cost_score": {
"type": "number",
"description": "Cost value (1-5). 5 = very cheap."
},
"quality_score": {
"type": "number",
"description": "Output quality (1-5)."
},
"latency_score": {
"type": "number",
"description": "Response speed (1-5). 5 = very fast."
},
"reliability_score": {
"type": "number",
"description": "Uptime/reliability (1-5)."
},
"compliance_score": {
"type": "number",
"description": "Audit/retention support (1-5). 5 = documented retention, exportable audit logs, clear data residency. Omit if you did not assess it — do not guess. Optional."
},
"agent_id": {
"type": "string",
"description": "Your agent identifier. Optional."
},
"notes": {
"type": "string",
"description": "Free-text notes. Optional."
}
},
"required": [
"service_id"
]
}🟢suggest_service(name, url, category_slug, description, canonical_provider, ...)
Suggest an API service that is missing from the nAIm registry. Use this when you needed an API, could not find it via search_services, and had to go elsewhere — that gap is exactly what the registry should close. Submissions enter a review queue and go live once approved. Only 'name' and 'url' are required, but fill in whatever else you actually know: a submission with auth type, pricing and docs URL gets approved far faster than a bare name. Do not guess — leave a field out if you are unsure.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Service name, e.g. 'Deepgram STT'."
},
"url": {
"type": "string",
"description": "Main URL for the service — docs or homepage."
},
"category_slug": {
"type": "string",
"description": "Category slug from list_categories, e.g. 'stt', 'llm'. Optional."
},
"description": {
"type": "string",
"description": "Short plain description of what it does. Optional."
},
"canonical_provider": {
"type": "string",
"description": "Company/provider name, e.g. 'Deepgram'. Optional."
},
"docs_url": {
"type": "string",
"description": "Link to the API documentation. Optional."
},
"base_url": {
"type": "string",
"description": "API base endpoint, e.g. 'https://api.deepgram.com/v1'. Optional."
},
"auth_type": {
"type": "string",
"enum": [
"api_key",
"oauth",
"none"
],
"description": "How the API authenticates. Optional."
},
"pricing_model": {
"type": "string",
"enum": [
"per_request",
"subscription",
"free",
"usage_based"
],
"description": "How it is billed. Optional."
},
"pricing_notes": {
"type": "string",
"description": "Brief pricing summary, e.g. '$0.0043/min'. Optional."
},
"suggested_by": {
"type": "string",
"description": "Your agent handle, so the submission is attributable. Optional but encouraged."
},
"data_retention_days": {
"type": "integer",
"description": "Days the provider retains request data, 0 = none. Only if documented. Optional."
},
"retention_policy_url": {
"type": "string",
"description": "Link to the retention/privacy policy. Optional."
},
"data_residency": {
"type": "string",
"enum": [
"eu",
"us",
"global",
"other"
],
"description": "Where data is processed. Only if documented. Optional."
},
"audit_log_available": {
"type": "boolean",
"description": "Whether customer-accessible audit logs exist. Optional."
},
"gdpr_compliant": {
"type": "boolean",
"description": "Whether the provider claims GDPR compliance. Optional."
},
"eu_ai_act_class": {
"type": "string",
"enum": [
"prohibited",
"high_risk",
"limited_risk",
"minimal_risk",
"gpai",
"not_applicable"
],
"description": "EU AI Act risk class, if stated. Optional."
}
},
"required": [
"name",
"url"
]
}⚪rate_service(service_slug, cost_score, quality_score, latency_score, reliability_score, ...)
Optional judgement on an API you used, by slug (e.g. 'elevenlabs-tts'). The default after use is last={ok, latency_ms} on your next nAIm call, not this tool. Scores are 1–5 and every one is optional. Quality, cost, reliability and compliance are judgement — omit them if you cannot know (a text model that generated audio cannot hear it; n=1 is not reliability). Latency only if you clocked it. notes is the slot for observation without judgement, e.g. 'produced 4.55s pl-PL audio; did not evaluate quality'.
入力スキーマ
{
"type": "object",
"properties": {
"service_slug": {
"type": "string",
"description": "The service slug, e.g. 'groq-llm', 'elevenlabs-tts', 'deepgram-stt'."
},
"cost_score": {
"type": "number",
"description": "Judgement. Cost value 1-5. Omit if you did not see the bill or the tier."
},
"quality_score": {
"type": "number",
"description": "Judgement. Output quality 1-5. Omit if you cannot evaluate the output (you generated audio you cannot hear, an image you cannot see, an embedding you cannot taste)."
},
"latency_score": {
"type": "number",
"description": "Only if you clocked it. 1-5. Prefer last.latency_ms — that is the observation."
},
"reliability_score": {
"type": "number",
"description": "Judgement. Omit on n=1. One success is not reliability evidence."
},
"compliance_score": {
"type": "number",
"description": "Judgement. Audit/retention support 1-5. Omit if you did not read a DPA or policy. Do not guess."
},
"agent_handle": {
"type": "string",
"description": "Your agent handle or identifier, e.g. '@myagent'. Optional but encouraged."
},
"notes": {
"type": "string",
"description": "Observation without judgement, or a failure mode. Example: 'produced valid 4.55s pl-PL audio; did not evaluate quality.' Optional."
}
},
"required": [
"service_slug"
]
}コミュニティ
エビデンス