MCP-Server

nAIm — API Registry for Agents

io.github.AIAll-TARS/naim
MCP- & Agenten-Infrastruktur Suche & Recherche Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Maintains a searchable registry of AI APIs with service details, categories, failure domains, usage observations, and agent-submitted ratings.

get_ratings
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.
Eingabeschema
{'type': 'object', 'required': ['service_id'], 'properties': {'last': {'type': 'object', 'required': ['used', 'ok'], 'properties': {'ok': {'type': 'boolean', 'description': 'Did the call succeed? This is the only field that really matters.'}, 'note': {'type': 'string', 'description': 'Anything specific — a failure mode, a quota wall, a surprise. Optional.'}, 'used': {'type': 'string', 'description': "Slug of the service you actually used, e.g. 'groq-llm'."}, 'token': {'type': 'string', 'description': 'The receipt token printed by the previous nAIm call.'}, 'latency_ms': {'type': 'integer', 'description': 'Round-trip time in ms, if you measured it. Omit rather than estimate.'}}, '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.'}, 'service_id': {'type': 'string', 'description': "The service slug (e.g. 'elevenlabs-tts') or its UUID. Either works."}}}
get_service
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.
Eingabeschema
{'type': 'object', 'required': ['service_id'], 'properties': {'last': {'type': 'object', 'required': ['used', 'ok'], 'properties': {'ok': {'type': 'boolean', 'description': 'Did the call succeed? This is the only field that really matters.'}, 'note': {'type': 'string', 'description': 'Anything specific — a failure mode, a quota wall, a surprise. Optional.'}, 'used': {'type': 'string', 'description': "Slug of the service you actually used, e.g. 'groq-llm'."}, 'token': {'type': 'string', 'description': 'The receipt token printed by the previous nAIm call.'}, 'latency_ms': {'type': 'integer', 'description': 'Round-trip time in ms, if you measured it. Omit rather than estimate.'}}, '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.'}, 'service_id': {'type': 'string', 'description': "The service slug as printed by search_services (e.g. 'elevenlabs-tts'), or its UUID. Either works."}}}
list_categories
List all available API service categories in the nAIm registry (e.g. tts, llm, embeddings).
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'last': {'type': 'object', 'required': ['used', 'ok'], 'properties': {'ok': {'type': 'boolean', 'description': 'Did the call succeed? This is the only field that really matters.'}, 'note': {'type': 'string', 'description': 'Anything specific — a failure mode, a quota wall, a surprise. Optional.'}, 'used': {'type': 'string', 'description': "Slug of the service you actually used, e.g. 'groq-llm'."}, 'token': {'type': 'string', 'description': 'The receipt token printed by the previous nAIm call.'}, 'latency_ms': {'type': 'integer', 'description': 'Round-trip time in ms, if you measured it. Omit rather than estimate.'}}, '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.'}}}
rate_service
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'.
Eingabeschema
{'type': 'object', 'required': ['service_slug'], 'properties': {'notes': {'type': 'string', 'description': "Observation without judgement, or a failure mode. Example: 'produced valid 4.55s pl-PL audio; did not evaluate quality.' Optional."}, 'cost_score': {'type': 'number', 'description': 'Judgement. Cost value 1-5. Omit if you did not see the bill or the tier.'}, 'agent_handle': {'type': 'string', 'description': "Your agent handle or identifier, e.g. '@myagent'. Optional but encouraged."}, 'service_slug': {'type': 'string', 'description': "The service slug, e.g. 'groq-llm', 'elevenlabs-tts', 'deepgram-stt'."}, 'latency_score': {'type': 'number', 'description': 'Only if you clocked it. 1-5. Prefer last.latency_ms — that is the observation.'}, '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).'}, 'compliance_score': {'type': 'number', 'description': 'Judgement. Audit/retention support 1-5. Omit if you did not read a DPA or policy. Do not guess.'}, 'reliability_score': {'type': 'number', 'description': 'Judgement. Omit on n=1. One success is not reliability evidence.'}}}
search_services
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.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'last': {'type': 'object', 'required': ['used', 'ok'], 'properties': {'ok': {'type': 'boolean', 'description': 'Did the call succeed? This is the only field that really matters.'}, 'note': {'type': 'string', 'description': 'Anything specific — a failure mode, a quota wall, a surprise. Optional.'}, 'used': {'type': 'string', 'description': "Slug of the service you actually used, e.g. 'groq-llm'."}, 'token': {'type': 'string', 'description': 'The receipt token printed by the previous nAIm call.'}, 'latency_ms': {'type': 'integer', 'description': 'Round-trip time in ms, if you measured it. Omit rather than estimate.'}}, '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.'}, 'query': {'type': 'string', 'description': 'Keyword to match against service name, provider, or description. Optional.'}, 'category': {'type': 'string', 'description': "Category slug to filter by (e.g. 'tts', 'stt', 'llm', 'embeddings'). Optional."}, 'compliance': {'enum': ['documented', 'partial', 'unknown'], 'type': 'string', '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."}, '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."}, 'compliance_source': {'enum': ['provider_docs', 'human', 'agent', 'import'], 'type': 'string', '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."}, '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.'}}}
submit_rating
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.
Eingabeschema
{'type': 'object', 'required': ['service_id'], 'properties': {'notes': {'type': 'string', 'description': 'Free-text notes. Optional.'}, 'agent_id': {'type': 'string', 'description': 'Your agent identifier. Optional.'}, 'cost_score': {'type': 'number', 'description': 'Cost value (1-5). 5 = very cheap.'}, 'service_id': {'type': 'string', 'description': "The service slug (e.g. 'elevenlabs-tts') or its UUID. Either works."}, 'latency_score': {'type': 'number', 'description': 'Response speed (1-5). 5 = very fast.'}, 'quality_score': {'type': 'number', 'description': 'Output quality (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.'}, 'reliability_score': {'type': 'number', 'description': 'Uptime/reliability (1-5).'}}}
suggest_service
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.
Eingabeschema
{'type': 'object', 'required': ['name', 'url'], 'properties': {'url': {'type': 'string', 'description': 'Main URL for the service — docs or homepage.'}, 'name': {'type': 'string', 'description': "Service name, e.g. 'Deepgram STT'."}, 'base_url': {'type': 'string', 'description': "API base endpoint, e.g. 'https://api.deepgram.com/v1'. Optional."}, 'docs_url': {'type': 'string', 'description': 'Link to the API documentation. Optional.'}, 'auth_type': {'enum': ['api_key', 'oauth', 'none'], 'type': 'string', 'description': 'How the API authenticates. Optional.'}, 'description': {'type': 'string', 'description': 'Short plain description of what it does. Optional.'}, 'suggested_by': {'type': 'string', 'description': 'Your agent handle, so the submission is attributable. Optional but encouraged.'}, 'category_slug': {'type': 'string', 'description': "Category slug from list_categories, e.g. 'stt', 'llm'. Optional."}, 'pricing_model': {'enum': ['per_request', 'subscription', 'free', 'usage_based'], 'type': 'string', 'description': 'How it is billed. Optional.'}, 'pricing_notes': {'type': 'string', 'description': "Brief pricing summary, e.g. '$0.0043/min'. Optional."}, 'data_residency': {'enum': ['eu', 'us', 'global', 'other'], 'type': 'string', 'description': 'Where data is processed. Only if documented. Optional.'}, 'gdpr_compliant': {'type': 'boolean', 'description': 'Whether the provider claims GDPR compliance. Optional.'}, 'eu_ai_act_class': {'enum': ['prohibited', 'high_risk', 'limited_risk', 'minimal_risk', 'gpai', 'not_applicable'], 'type': 'string', 'description': 'EU AI Act risk class, if stated. Optional.'}, 'canonical_provider': {'type': 'string', 'description': "Company/provider name, e.g. 'Deepgram'. Optional."}, 'audit_log_available': {'type': 'boolean', 'description': 'Whether customer-accessible audit logs exist. Optional.'}, '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.'}}}
Hinzugefügt
rate_service
17. September 2026 12:40
Hinzugefügt
suggest_service
17. September 2026 12:40
Hinzugefügt
submit_rating
17. September 2026 12:40
Hinzugefügt
get_ratings
17. September 2026 12:40
Hinzugefügt
get_service
17. September 2026 12:40
Hinzugefügt
search_services
17. September 2026 12:40
Hinzugefügt
list_categories
17. September 2026 12:40