Servicialo
@servicialo/mcp-server
Die MCP-Schnittstelle auf Protokollebene für den Servicialo-Standard — die Zielschicht für menschliche Dienstleistungen im Zeitalter von KI-Agenten. HTTP machte Dokumente adressierbar. Servicialo macht Dienstleistungen adressierbar. MCP und A2A sind der Transport. Servicialo ist das Ziel, das Agenten erreichen.
Dieses Paket ist die MCP-Schnittstelle auf Protokollebene für jedes Servicialo-kompatible Backend — kein Connector für eine bestimmte Plattform. Coordinalo ist die Referenzimplementierung (und der Standard), aber du kannst dein eigenes Backend anbinden.
Protokoll: v0.10 (draft) · Spec: servicialo.com/spec · Dieses Paket versioniert unabhängig vom Protokoll (
0.9.xbis 1.0).
Road to 1.0
Das Servicialo-Protokoll tritt in die Stabilisierungsphase ein. Die erste formale RFC-Kohorte ist für Kommentare geöffnet für ein Mindestfenster von 4 Wochen, bevor sie in die Final Comment Period übergeht. Bis 1.0 bleiben die Releases 0.9.x-Patches, und jede breaking Änderung am Protokoll erfordert einen gemergten RFC und vorherige Kommunikation.
RFC-Kohorte (PR #13): servicialo/mcp-server#13
1.0-Prozess / Diskussion: servicialo/mcp-server#14
Ausstehende Meilensteine bis 1.0
Meilenstein | Status |
RFC-001 — RFC Process & Deprecation Policy | Draft / Open for Comment |
RFC-002 — Prepayment & Client Credit Balance | Draft / Open for Comment |
RFC-003 — Refunds & Credit Notes (Forward-Only Ledger) | Draft / Open for Comment |
RFC-004 — PII / PHI Classification Framework | Draft / Open for Comment |
Stabile Core-Erklärung (8 Dimensionen · 6+3-Zyklus · 6 Flows · 7 Prinzipien) mit Backwards-Compat-Garantien | Ausstehend |
≥ 3 unabhängige Implementierungen in Produktion | In Arbeit |
Related MCP server: DiviDen MCP Server
Architektur
@servicialo/mcp-server → interfaz MCP a nivel de protocolo
↓ se conecta a cualquier backend compatible con Servicialo
Coordinalo → implementación de referencia (default)
Tu implementación → trae tu propio backendDas Problem
KI-Agenten können im Web navigieren, Code schreiben und Gespräche führen. Aber bitte einen darum, eine Kinesiologie-Sitzung zu buchen, zu überprüfen, dass sie stattgefunden hat, und die Zahlung abzuwickeln — und er scheitert.
Heute ist jede Plattform ein Silo. Es gibt keinen Standard für:
Entdeckung — welcher Anbieter, in welcher Organisation, bietet das, was ich brauche?
Identität — in wessen Namen handelt dieser Agent, und was ist er autorisiert zu tun?
Lebenszyklus — in welchem Zustand ist diese Dienstleistung? Wer hat bestätigt? Wer war anwesend?
Liefernachweis — hat die Sitzung wirklich stattgefunden? Wie lange? Wo?
Abrechnung — wie viel, an wen, unter welchen vertraglichen Bedingungen?
Ohne ein gemeinsames Protokoll ist jede Integration Handarbeit. Jede Agent-Plattform-Verbindung ist eine eigene API. Das skaliert nicht.
Was ist Servicialo
Servicialo ist ein offenes Protokoll, keine Plattform. Es definiert, wie professionelle Dienstleistungen ihren Lebenszyklus durchlaufen — von der Entdeckung bis zur Zahlung — auf eine Weise, die jeder KI-Agent oder jede Plattform implementieren kann.
Die Beziehung ist wie HTTP mit Apache oder SMTP mit Gmail: Servicialo definiert die Regeln, die Implementierungen erwecken sie zum Leben.
Das Protokoll modelliert jede Dienstleistung über 8 Dimensionen, einen 6+3-Lebenszyklus (6 Kernzustände + 3 optionale finanzielle), 6 Ausnahmeflows und 7 fundamentale Prinzipien — universell über Branchen hinweg (Gesundheit, Recht, Bildung, häusliche Dienstleistungen):
Solicitado → Agendado → Confirmado → En Curso → Completado → Documentado → Facturado → Cobrado → VerificadoJede Dienstleistung, in jeder Branche, folgt dieser Sequenz. Die branchenspezifische Logik lebt innerhalb jedes Zustands, aber die Zustandsmaschine ist invariant.
Was Dieser MCP-Server Tut
Dieses Paket stellt das Servicialo-Protokoll als 40 MCP-Tools bereit, organisiert nach den 7 Phasen des Lebenszyklus einer Dienstleistung (0–6, einschließlich des Discovery-Resolvers — analog zu DNS, über HTTP), plus Ressourcenverwaltung, Resolver-Administration, Netzwerk-Intelligenz (market.*) und Cold-Start-Entdeckung (registry.list_* zur Kenntnis der Taxonomie, ohne sie vorher zu kennen). Ein Agent ruft keine Endpoints nach Datenbank-Entität auf — er folgt dem natürlichen Ablauf der Koordination einer Dienstleistung.
Phase 0 — DNS-Auflösung (3 Tools, ohne Auth)
Tool | Beschreibung |
| Ein orgSlug zu seinem MCP/REST-Endpoint und Vertrauensniveau auflösen (äquivalent zu DNS-Lookup) |
| Registrierte Organisationen nach Land und Branche im globalen Resolver suchen |
| Vertrauenswert einer Organisation abrufen (Score 0-100, Stufe, letzte Aktivität) |
Phase 1 — Entdeckung (6 Tools, ohne Auth)
Tool | Beschreibung |
| Organisationen nach Branche, Standort, Land suchen |
| Öffentliche Details abrufen: Dienstleistungen, Anbieter, Buchungskonfiguration |
| Server-Manifest abrufen: Fähigkeiten, Protokollversion, Organisations-Metadaten |
| Verfügbarkeit prüfen (3 Variablen: Anbieter ∧ Kunde ∧ Ressource) |
| Den öffentlichen Dienstleistungskatalog einer Organisation auflisten |
| Die A2A-Agent Card einer Organisation für die Inter-Agenten-Entdeckung abrufen |
Phase 2 — Verstehen (2 Tools)
Tool | Beschreibung | Scopes |
| Die 8 Dimensionen einer Dienstleistung abrufen |
|
| Vertragsbedingungen abrufen: erforderliche Nachweise, Stornierungsrichtlinie, Streitfenster |
|
Phase 3 — Verpflichten (3 Tools)
Tool | Beschreibung | Scopes |
| Kundenidentität per E-Mail/Telefon auflösen — in einem einzigen Aufruf suchen oder erstellen |
|
| Sitzung buchen → Zustand |
|
| Gebuchte Sitzung bestätigen → Zustand |
|
Phase 4 — Lebenszyklus (4 Tools)
Tool | Beschreibung | Scopes |
| Aktuellen Zustand, verfügbare Übergänge und Verlauf abrufen |
|
| Zustandsübergang mit Nachweis ausführen |
|
| Auf neues Datum/Uhrzeit umbuchen (vertragliche Richtlinie kann gelten) |
|
| Sitzung stornieren (Stornierungsrichtlinie des Vertrags wird angewendet) |
|
Phase 5 — Lieferung verifizieren (3 Tools)
Tool | Beschreibung | Scopes |
| Check-in mit GPS + Zeitstempel → Zustand |
|
| Check-out mit GPS + Zeitstempel → Zustand |
|
| Nachweis erfassen: |
|
Phase 6 — Abschließen (4 Tools)
Tool | Beschreibung | Scopes |
| Dienstleistungsprotokoll erstellen (klinische Notiz, Inspektionsbericht usw.) → Zustand |
|
| Belastung für dokumentierte Dienstleistung erstellen → Zustand |
|
| Erhaltene Zahlung gegen einen Verkauf erfassen |
|
| Zahlungsstatus eines Verkaufs oder Kontostand des Kunden abrufen |
|
Ressourcenverwaltung (6 Tools)
Tool | Beschreibung | Scopes |
| Physische Ressourcen einer Organisation auflisten |
|
| Details einer Ressource mit ihren Verfügbarkeits-Slots abrufen |
|
| Neue physische Ressource erstellen (Raum, Box, Ausstattung) |
|
| Ressource aktualisieren (semantischer Patch) |
|
| Ressource deaktivieren (Soft Delete: |
|
| Verfügbarkeit einer Ressource nach Datumsbereich abfragen |
|
Resolver-Administration (3 Tools)
Tool | Beschreibung | Scopes |
| Organisation im globalen Resolver mit MCP/REST-Endpoints registrieren |
|
| Registrierte Endpoints aktualisieren (Portabilität zwischen Backends) |
|
| Heartbeat an den Resolver senden, der anzeigt, dass der Knoten aktiv ist |
|
Netzwerk-Intelligenz (2 Tools, ohne Auth)
Anonymisierte Markt-Benchmarks zur operativen Telemetrie, die von den Knoten beigetragen wird. Politik Beitragen-für-Zugriff (k-Anonymität ≥ 5):
Herramienta | Descripción |
| Segmente |
| Die Bucket-Verteilung eines Segments abrufen (z. B. Anteil jedes |
Taxonomie-Erkennung (3 Werkzeuge, ohne Authentifizierung)
Cold-Start: Der Agent muss die Taxonomie des Protokolls nicht im Voraus kennen. Hier beginnen, wenn er ohne Kontext ankommt:
Herramienta | Descripción |
| In der Netzwerk vorhandene Verticals (deklariert + in 30-Tage-Telemetrie beobachtet) |
| Länder/Regionen ISO 3166-1 alpha-2 mit Aktivität im Netzwerk |
| Katalog der 4 Ereignistypen der operativen Telemetrie + deren |
Dokumentation (1 Werkzeug, ohne Authentifizierung)
Herramienta | Descripción |
| Die 5 Schritte des Quickstarts als strukturiertes JSON abrufen — Onboarding von Agenten ohne vorherigen Kontext |
Quickstart — 5 Schritte, um im Netzwerk zu sein
Schritt 1. MCP-Server installieren
npx -y @servicialo/mcp-serverEntdeckungsmodus — 15 öffentliche Werkzeuge, ohne Anmeldedaten. Probier es sofort aus:
{
"tool": "registry.search",
"arguments": { "vertical": "kinesiologia", "location": "santiago" }
}Schritt 2. Deine Organisation erstellen
Registriere deine Organisation auf coordinalo.com/signup. Coordinalo ist die Referenzimplementierung des Servicialo-Protokolls.
Schritt 3. MCP-Anmeldedaten abrufen
In Coordinalo: Settings → Servicialo → MCP-Anmeldedaten generieren. Du erhältst zwei Werte:
SERVICIALO_ORG_ID— Slug deiner Organisation (z. B.clinica-dental-sur)SERVICIALO_API_KEY— Bearer-Token für die Authentifizierung
Schritt 4. MCP-Client konfigurieren
Zur Konfiguration von Claude Desktop, Cursor oder einem beliebigen MCP-Client hinzufügen:
{
"mcpServers": {
"servicialo": {
"command": "npx",
"args": ["-y", "@servicialo/mcp-server"],
"env": {
"SERVICIALO_API_KEY": "<tu_api_key>",
"SERVICIALO_ORG_ID": "<tu_org_slug>"
}
}
}
}Den env-Block für den Nur-Entdeckungsmodus weglassen (15 öffentliche Werkzeuge).
Schritt 5. Im Servicialo-Netzwerk veröffentlichen
In Coordinalo: Settings → Servicialo → Veröffentlichen. Deine Organisation erscheint auf servicialo.com/network und ist für andere Agenten auffindbar.
Tipp: Ein Agent kann diese 5 Schritte als strukturiertes JSON abrufen, indem er das Werkzeug
docs.quickstartaufruft.
Netzwerk / Network
Das Servicialo-Netzwerk ist das globale Register von Organisationen, die das Protokoll implementieren. Jeder authentifizierte Knoten sendet einen periodischen Heartbeat, und jeder Agent kann Organisationen nach Land, Vertikal und Vertrauenswert entdecken.
Netzwerk erkunden: servicialo.com/network
Nach Vertikal suchen:
registry.search({ vertical: "kinesiologia", country: "cl" })Eine Organisation auflösen:
resolve.lookup({ org_slug: "clinica-dental-sur" })
Anmeldedaten
Wesentliche
Variable | Requerida | Default | Descripción |
| No | — | Bearer-Token. Aktiviert den authentifizierten Modus (25 zusätzliche Werkzeuge = 40 insgesamt) |
| No | — | Organisations-Slug. Aktiviert den authentifizierten Modus |
| No |
| API-Endpunkt der Servicialo-kompatiblen Plattform |
| No |
| Backend-Adapter: |
| No |
| Auf |
SERVICIALO_API_KEY und SERVICIALO_ORG_ID müssen zusammen konfiguriert werden. Wenn nur eine vorhanden ist, fällt der Server mit einer Warnung in den Entdeckungsmodus zurück.
Operative Telemetrie + Benchmarks (optional)
Diese Variablen ermöglichen es deinem Knoten, anonymisierte Ereignisse zu den Netzwerk-Benchmarks beizutragen und auf Echtzeitdaten zuzugreifen (Tier 2). Siehe docs/telemetry-operational.md:
Variable | Requerida | Default | Descripción |
| No |
| Deine Vertikale (z. B. |
| No |
| ISO 3166-1 alpha-2 des operativen Landes. Die Ereignisse werden damit gekennzeichnet |
| No | — |
|
| No |
| Auf |
| No |
| Im Protokoll deklarierte Version, die in den ausgegebenen Ereignissen angegeben wird |
| No |
| Empfänger-Endpunkt für operative Telemetrie (nur für Tests ändern) |
Wie es mit Benchmark-Stufen zusammenhängt: Ein Knoten, der ≥ 50 operative Ereignisse in 30 Tagen ausgibt, erreicht automatisch Stufe 2 und
market.get_benchmarkliefert Echtzeitdaten (anstelle der Standard-Stufe 0/1 mit 90 Tagen Verzögerung). Vollständige Politik: GOVERNANCE.md#contribute-to-access-policy-v01.
Die Anmeldedaten erhältst du auf coordinalo.com → Settings → Servicialo → MCP-Anmeldedaten generieren.
Eigene Implementierung verbinden
Dieser MCP-Server unterstützt jedes Servicialo-kompatible Backend über die Schicht der pluggbaren Adapter. Zwei Adapter sind enthalten:
coordinalo(Standard) — verbindet sich mit einem Coordinalo/Digitalo-Backend mit organisationsbezogenen Routen unter/api/organizations/{orgId}.http— verbindet sich mit jeder Implementierung, die die kanonischen Endpunkte vonHTTP_PROFILE.mdunter/v1/*bereitstellt.
3 Schritte zum Verbinden deiner Implementierung
Schritt 1. Implementiere die in HTTP_PROFILE.md definierten REST-Endpunkte auf deiner Plattform.
Schritt 2. Konfiguriere den MCP-Server, um den HTTP-Adapter zu verwenden:
SERVICIALO_ADAPTER=http \
SERVICIALO_BASE_URL=https://tu-plataforma.com \
SERVICIALO_API_KEY=tu_key \
npx -y @servicialo/mcp-serverSchritt 3. Füge zur Konfiguration deines MCP-Clients hinzu:
{
"mcpServers": {
"servicialo": {
"command": "npx",
"args": ["-y", "@servicialo/mcp-server"],
"env": {
"SERVICIALO_ADAPTER": "http",
"SERVICIALO_BASE_URL": "https://tu-plataforma.com",
"SERVICIALO_API_KEY": "tu_api_key",
"SERVICIALO_ORG_ID": "tu_org_id"
}
}
}
}Der HTTP-Adapter übersetzt die internen Routen in kanonische /v1/*-Endpunkte und sendet den Organisationskontext über den Header X-Servicialo-Org. Siehe HTTP_PROFILE.md für den vollständigen REST-Vertrag.
Modell der delegierten Agentur
Das Protokoll behandelt KI-Agenten als Erstklassige Akteure — vertraut ihnen aber nie implizit. Jede Agentenaktion erfordert ein ServiceMandate: eine explizite Delegation von Fähigkeiten von einem menschlichen Auftraggeber an einen Agenten.
So funktioniert es
Ein Mensch (Fachkraft, Patient oder Organisation) erteilt einem Agenten ein Mandat
Das Mandat legt fest, für wen der Agent handelt, was er tun darf (Scopes) und wie lange
Bei jedem Tool-Aufruf validiert der MCP-Server das Mandat gegen 8 Prüfungen, bevor er ausführt
Jede Aktion erzeugt einen Audit-Eintrag — Erfolg oder Fehlschlag
Beispiel für ein Mandat
{
"mandate_id": "550e8400-e29b-41d4-a716-446655440000",
"principal_id": "dra_barbara",
"principal_type": "professional",
"agent_id": "agent_booking_bot",
"agent_name": "Asistente de Agendamiento",
"acting_for": "professional",
"context": "org:clinica-kinesia",
"scopes": ["schedule:read", "schedule:write", "patient:write"],
"constraints": {
"max_actions_per_day": 50,
"allowed_hours": {
"start": "08:00",
"end": "20:00",
"timezone": "America/Santiago"
},
"require_confirmation_above": {
"amount": 100000,
"currency": "CLP"
}
},
"issued_at": "2026-03-01T00:00:00Z",
"expires_at": "2026-06-01T00:00:00Z",
"status": "active"
}Verwendung von Mandaten in Tool-Aufrufen
Wenn actor.type "agent" ist, mandate_id einfügen:
{
"tool": "scheduling.book",
"arguments": {
"service_id": "srv_123",
"provider_id": "prov_111",
"client_id": "cli_789",
"starts_at": "2026-03-03T10:00:00",
"actor": {
"type": "agent",
"id": "agent_booking_bot",
"mandate_id": "550e8400-e29b-41d4-a716-446655440000"
}
}
}Die 8 Validierungsprüfungen
Jeder Tool-Aufruf eines Agenten wird gegen Folgendes validiert:
# | Check | Qué previene |
1 | Status — Mandat muss | Verwendung widerrufener oder abgelaufener Mandate |
2 | Zeitliche Gültigkeit — | Zeitbasierte Angriffe |
3 | Agentenidentität — | Agenten-Identitätsdiebstahl |
4 | Scope-Abdeckung — die Scopes des Mandats decken die Anforderungen des Werkzeugs ab | Privilegienerweiterung |
5 | Kontext — der Kontext des Mandats stimmt mit der Anfrage überein | Organisationsübergreifender Datenzugriff |
6 | Interessenkonflikt — Agent kann nicht für beide Parteien handeln | Verstöße gegen Doppelvertretung |
7 | Einschränkungen — erlaubte Zeiten, Tageslimits, finanzielle Schwellenwerte | Übermäßig autonome Agenten |
8 | Audit — jede Aktion mit bereinigten Eingaben protokolliert | Nichtabstreitbarkeit |
Nicht-Agenten-Akteure (client, provider, organization) durchlaufen keine Mandatsvalidierung.
Anbieter-Erkennung
Agenten können im Register suchen und Anbieter mit den Bedürfnissen eines Patienten mithilfe strukturierter Abfragen abgleichen.
Im Register suchen
{
"tool": "registry.search",
"arguments": {
"vertical": "kinesiologia",
"location": "santiago",
"country": "cl"
}
}Gibt Organisationen zurück, die mit ihren Diensten und Anbietern übereinstimmen.
Verfügbarkeit abfragen
{
"tool": "scheduling.check_availability",
"arguments": {
"org_slug": "clinica-kinesia",
"service_id": "srv_rehab_pelvica",
"provider_id": "prov_111",
"date_from": "2026-03-10",
"date_to": "2026-03-14"
}
}Der 3-Variablen-Scheduler prüft gleichzeitig die Verfügbarkeit von Anbieter, Kunde und physischer Ressource.
Beispiel von Anfang bis Ende
1. registry.search({ vertical: "kinesiologia", location: "santiago" })
→ encuentra org "clinica-kinesia"
2. services.list({ org_slug: "clinica-kinesia" })
→ lista servicios disponibles
3. scheduling.check_availability({ org_slug: "clinica-kinesia", date_from: "2026-03-10", date_to: "2026-03-14" })
→ retorna slots disponibles
4. contract.get({ service_id: "srv_123", org_id: "org_456" })
→ cancelación: 0% si >24h, 50% si 2-24h, 100% si <2h
→ evidencia requerida: check_in + check_out + registro_clinico
5. clients.get_or_create({ email: "maria@mail.com", name: "Maria", last_name: "Lopez" })
→ client_id: "cli_789"
6. scheduling.book({ service_id: "srv_123", provider_id: "prov_111", client_id: "cli_789", starts_at: "2026-03-12T10:00:00" })
→ session_id: "ses_001", estado: "solicitado"
7. scheduling.confirm({ session_id: "ses_001" })
→ estado: "confirmado"
8. delivery.checkin({ session_id: "ses_001", location: { lat: -33.45, lng: -70.66 } })
→ estado: "en_curso"
9. delivery.checkout({ session_id: "ses_001", location: { lat: -33.45, lng: -70.66 } })
→ estado: "entregado", duración: 42min
10. documentation.create({ session_id: "ses_001", content: "Sesión de rehabilitación de piso pélvico..." })
→ estado: "documentado"
11. payments.create_sale({ client_id: "cli_789", service_id: "srv_123", unit_price: 35000 })
→ sale_id: "sale_001", estado: "cobrado"
12. lifecycle.transition({ session_id: "ses_001", to_state: "verified" })
→ estado: "verificado" ✓Protokollspezifikation
Die vollständige Spezifikation des Servicialo-Protokolls ist verfügbar unter:
Repository: github.com/servicialo/protocol
Website: servicialo.com
Current stable version: 0.9
JSON Schemas:
service.schema.json,service-order.schema.json,service-mandate.schema.json,resolution.schema.json,servicialo-config.schema.json
Die Spezifikation deckt die 8 Dimensionen des Dienstes, den Lebenszyklus 6+3, 6 Ausnahmeflüsse, 7 grundlegende Prinzipien, die Architektur mit zwei Entitäten (atomarer Dienst + Serviceauftrag), das Modell der delegierten Agentur, DNS-Auflösung und A2A-Interoperabilität ab.
Referenzimplementierung
Digitalo ist die erste Produktionsimplementierung des Servicialo-Protokolls und operiert im Gesundheitswesen in Chile. Es implementiert den vollständigen Lebenszyklus – von der Anbieterentdeckung bis zur Zahlungsabwicklung – und dient als Validierungsfeld für die Weiterentwicklung des Protokolls.
Dieser MCP-Server verbindet sich über SERVICIALO_BASE_URL mit jedem Servicialo-kompatiblen Backend. Digitalo ist eines dieser Backends. Das Protokoll ist so konzipiert, dass jedes CRM, HIS oder jede Plattform es als souveränen Knoten implementieren kann.
Zum Protokoll beitragen
Servicialo verwendet semantische Versionierung für die Protokollspezifikation:
Patch (0.7.x) – Klarstellungen, Tippfehlerkorrekturen, nicht-breaking Ergänzungen
Minor (0.x.0) – neue optionale Felder, neue Tool-Definitionen, neue Ausnahmeflüsse
Major (x.0.0) – breaking Änderungen an Schemas, Zustandsmaschine oder Kernsemantik
So schlägst du Änderungen vor
Öffne ein Issue, das das Problem und den Lösungsvorschlag beschreibt
Für bedeutende Änderungen schreibe ein RFC in
spec/mit der betroffenen AbschnittsnummerÄnderungen am Protokoll erfordern mindestens eine Referenzimplementierung vor dem Merge
Schema-Änderungen müssen ein aktualisiertes JSON Schema und Zod-Typen im MCP-Server enthalten
Bereiche, die aktiv Input suchen
Vertikalspezifische Evidenzanforderungen (über das Gesundheitswesen hinaus)
Mehrsprachige Unterstützung für Zustandsnamen des Lebenszyklus
Inter-Node-Föderation (wie zwei Servicialo-Implementierungen interoperieren)
Agent-SDK-Muster für Python und TypeScript
Telemetrie
Beim Start sendet der MCP-Server einen einzigen anonymen POST an https://servicialo.com/api/telemetry/instance mit:
{
"event": "node_initialized",
"version": "0.9.8",
"node_id": "a1b2c3d4-...",
"ts": 1711300000000
}Feld | Beschreibung |
| Immer |
| Paketversion |
| Persistente UUID, gespeichert in |
| Zeitstempel in Millisekunden |
Das ist alles, was gesendet wird. Es werden keine Organisationsinformationen, API-Schlüssel, Patientendaten oder persönliche Identifikatoren übertragen. Die IP wird serverseitig gehasht (SHA-256), bevor sie gespeichert wird. Der Ping ist fire-and-forget: Wenn er fehlschlägt, wird der Fehler still verworfen und blockiert niemals den Serverbetrieb.
Beim ersten Ausführen mit aktiver Telemetrie gibt der Server eine Warnung auf stderr aus, die angibt, was gesendet wird und wie man es deaktiviert.
Telemetrie deaktivieren
SERVICIALO_TELEMETRY=false npx -y @servicialo/mcp-serverOder in der MCP-Konfiguration:
{
"env": {
"SERVICIALO_TELEMETRY": "false"
}
}Weitere Details: servicialo.com/network
Dem Netzwerk beitreten
Bei der Installation von @servicialo/mcp-server registriert sich dein Knoten automatisch in der Netzwerk-Telemetrie. Dies hilft dem Ökosystem, die tatsächliche Adoption des Protokolls zu messen – ohne personenbezogene Daten oder Daten deiner Kunden zu sammeln.
Die Telemetrie meldet ausschließlich: Paketversion, eine persistente Knoten-UUID und einen IP-Hash (für ungefähre Geolokalisierung – wir speichern keine IPs). Du kannst sie jederzeit mit SERVICIALO_TELEMETRY=false deaktivieren.
Startmeldungen
Der Server schreibt zwei informative Hinweise auf stderr – niemals auf stdout, das JSON-RPC transportiert und durch alles andere beschädigt wird:
Das RFC-005-Kommentarfenster, solange es geöffnet ist. Es hat eine eingebaute Ablaufzeit: Es wird nach dem 2026-09-13, dem Ende des endgültigen Kommentarzeitraums, nicht mehr gedruckt. Ein im Oktober installierter Knoten sieht keine tote Ankündigung.
Wenn dein Knoten anonym ist, wie man ihn identifiziert (unten).
Beide werden einmal pro Prozess gedruckt und mit SERVICIALO_QUIET=true stummgeschaltet:
{
"env": {
"SERVICIALO_QUIET": "true"
}
}Diese Variable betrifft nur diese beiden Hinweise. Das Modus-Banner und der Hinweis zur ersten Telemetrie-Ausführung behalten ihr bisheriges Verhalten.
Identifiziere deinen Knoten
Standardmäßig ist dein Knoten anonym: Der Ping enthält Ereignis, Version, node_id und Zeitstempel, sonst nichts. Wenn du eine eigene Implementierung des Protokolls betreibst, identifizieren diese drei optionalen Variablen sie und nominieren sie als verifizierten Implementierer:
SERVICIALO_IMPL_NAME="Mi Plataforma" # Nombre de tu implementación
SERVICIALO_IMPL_URL="https://example.com" # Tu sitio web o repositorio
SERVICIALO_IMPL_CONTACT="admin@example.com" # Email de contacto — se hashea antes de salirWas verlässt deinen Rechner unter jeder Variable
Variable | Was übertragen wird | Was nicht übertragen wird |
| Der Name im Klartext, als | — |
| Die URL im Klartext, als | — |
| Nur | Die E-Mail. Sie verlässt den Host nicht, wird nicht protokolliert, nicht gespeichert und nirgends angezeigt. |
Ohne konfigurierte Variablen erscheint keines dieser Felder im Ping. Ein nicht konfigurierter Knoten verhält sich genau wie vor dieser Version.
Der Verifizierungszyklus
anonymous → pending → verified
anonymous– ohne konfigurierte Variablen. Dies ist der Standardzustand, und ein anonymer Knoten ist vollständig konform.pending– Wenn ein neuerimpl_namezum ersten Mal erscheint, bleibt der Eintrag ausstehend und das Team erhält eine Benachrichtigung mit Name, URL und Land. Der Kontakt-Hash ist nicht in dieser Benachrichtigung enthalten und könnte es auch nicht sein: Er wäre nutzlos.verified– Nach manueller Überprüfung gegen die Konformitäts-Checkliste erscheint deine Implementierung auf servicialo.com/implementors mit ihrem Level und der Anzahl der gemeldeten Hosts.
Die Verifizierung ist heute manuell. Die automatisierte Konformitätssuite steht auf der Roadmap; sie ist keine aktuelle Fähigkeit.
Wofür der Kontakt-Hash dient – und wofür nicht. Er ist ein Einweg-Digest: Niemand kann dich daraus kontaktieren, und das Konfigurieren abonniert dich nicht für Ankündigungen oder Listen. Er dient dem Gegenteil: Wenn du über deine Implementierung schreibst, bestätigt der Hash deiner E-Mail, dass du der Betreiber bist, der diese Pings gesendet hat.
So beendest du das Senden
Entferne die Variablen aus deiner MCP-Konfiguration (oder unset SERVICIALO_IMPL_NAME SERVICIALO_IMPL_URL SERVICIALO_IMPL_CONTACT) und starte den Server neu. Der nächste Ping ist wieder anonym, ohne Identitätsfelder. Bereits gesendete Pings behalten, was sie gesendet haben; um die Löschung vorhandener Einträge zu beantragen, öffne ein Issue im Repository.
Angrenzende Fähigkeit: wöchentliche Snapshots
Das Registry gibt jeden Montag um 00:00 UTC benchmark.weekly_snapshot an die abonnierten Endpunkte aus, mit HMAC-SHA256-signiertem Payload. Diese drei Variablen aktivieren es nicht. Es erfordert einen Eintrag im Registry und ein explizites Abonnement über die Webhooks-API und liefert Benchmark-Daten, keine Protokollankündigungen.
Lizenz
Apache-2.0 – jede Implementierung, kommerziell oder nicht, ist willkommen. Siehe LICENSE.
Available Tools
10 toolsa2a_get_agent_cardA
Get the A2A (Agent-to-Agent) Agent Card for an organization, enabling inter-agent discovery. Use this when your agent needs to communicate with another agent managing this organization — the card declares supported capabilities, endpoints, and authentication requirements. Do NOT use for human-facing discovery (use registry.get_organization) or service listing (use services.list). Returns a JSON-LD Agent Card following the A2A v0.3 specification.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Organization slug (e.g. "clinica-dental-sur") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes full responsibility for behavioral disclosure. It indicates the return format: 'Returns a JSON-LD Agent Card following the A2A v0.3 specification.' It also explains the content of the card: 'declares supported capabilities, endpoints, and authentication requirements.' This gives a clear picture of what the tool does and what the agent will receive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. The first sentence states the core purpose. The second provides usage guidelines. The third details return format and exclusions. Information is front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required string parameter, no output schema, no nested objects), the description covers all necessary aspects: purpose, usage alternatives, behavioral details, and return format. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter 'org_slug', so the baseline is 3. The description does not add additional semantic information beyond the schema's example ('clinica-dental-sur'), but this is acceptable as the schema already provides sufficient detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the A2A Agent Card for an organization, enabling inter-agent discovery.' It specifies the verb (Get), the resource (Agent Card), and the context (inter-agent discovery). It also distinguishes itself from sibling tools like registry.get_organization and services.list, which are explicitly mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'when your agent needs to communicate with another agent managing this organization.' It also provides explicit alternatives: 'Do NOT use for human-facing discovery (use registry.get_organization) or service listing (use services.list).' This leaves no ambiguity about the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_quickstartA
Get the complete 5-step onboarding guide as structured JSON data. Use this when helping a new organization join the Servicialo network — covers installation, signup, credentials, MCP client config, and publishing. Do NOT use for searching services (use registry.search) or checking availability (use scheduling.check_availability). Returns step-by-step instructions, config templates, and links. No parameters required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes what the tool returns (instructions, config templates, links) and implies a read-only operation. Lacks mention of any authentication or access requirements, but given the nature of a quickstart guide, this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with clear purpose: definition, usage guidance with exclusions, and output description. No wasted words, well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully covers the tool's purpose, when to use, what it returns, and exclusions. No missing information given the simplicity of the tool (no params, no output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. Description correctly states 'No parameters required' and does not need to add parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves the 5-step onboarding guide as structured JSON data. Distinguishes from siblings by explicitly excluding use for searching or availability checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (helping a new organization join) and when-not-to-use with alternative tool names (registry.search, scheduling.check_availability).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_get_organizationA
Get the full public profile of a specific organization: services offered, providers, and booking configuration. Use this after registry.search when you have an org_slug and need detailed info before booking. Do NOT use for searching across organizations (use registry.search). Returns service catalog with prices/durations, provider list, and booking policies.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Slug de la organización (ej: clinica-dental-sur) | |
| country | No | País ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: cl | cl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read operation by using 'Get' but does not explicitly state it is read-only, nor does it mention authentication, rate limits, or other behavioral traits. It does list return contents, which provides some transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. The first sentence immediately states the purpose, the second provides usage context, and the third summarizes the return content. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only 2 simple parameters, the description adequately covers what the tool returns (service catalog, provider list, booking policies). It also provides usage context. Slight improvement could be to mention that the response is a full profile object, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description does not add any additional meaning or context about the parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the full public profile of a specific organization, listing contents (services, providers, booking configuration). It distinguishes from sibling registry.search by explicitly saying not to use it for searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool ('after registry.search when you have an org_slug and need detailed info before booking') and when not to use it ('Do NOT use for searching across organizations'), with a named alternative (registry.search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_manifestA
Get the Servicialo server manifest: protocol version, server name, and available capabilities. Use this to verify server identity and protocol compatibility before interacting with tools. Do NOT use for organization discovery (use registry.search) or service details (use services.list). Returns static metadata about this MCP server instance, not about any specific organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It explains the tool returns static metadata about the server instance and not about organizations. It omits details like authentication or side effects, but for a read-only, parameterless tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are efficient and front-loaded: purpose, usage guidance, and scope clarification. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is fully complete. It clearly explains what the tool does, when to use it, and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters and 100% coverage. The description does not need to explain parameters since there are none. The baseline of 4 is appropriate as it adds context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the server manifest with specific fields (protocol version, server name, capabilities) and distinguishes it from sibling tools by explicitly stating what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (verify server identity and protocol compatibility) and when not to use, providing alternative tools (registry.search, services.list) for other purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_searchA
Search for Servicialo-compatible organizations by vertical, location, and country. Use this as the primary discovery tool when a user needs a service (e.g., "find a physiotherapist in Santiago"). Do NOT use if you already have an org_slug (use registry.get_organization instead). Returns a ranked list of organizations with names, slugs, and service summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| vertical | No | Vertical del servicio. Valores comunes: tecnologia, consultoria, kinesiologia, psicologia, dental, nutricion, fonoaudiologia, terapia-ocupacional, medicina, veterinaria, educacion, fitness, legal, belleza, hogar. Omitir para buscar en todas las verticales. | |
| location | No | City or district to filter by (e.g. "santiago", "providencia"). Omit for country-wide results. | |
| country | No | ISO 3166-1 alpha-2 country code (e.g. "cl", "mx", "ar"). Default: "cl" | cl |
| limit | No | Max results to return (1-100). Default: 10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It discloses that results are ranked and returns names, slugs, and service summaries, but does not explain ranking criteria, authentication needs, rate limits, or pagination beyond the limit parameter. Adequate but not fully detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no fluff. First sentence states purpose, second gives usage guidance, third describes output. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description partially compensates by mentioning return fields (names, slugs, service summaries). However, it lacks details on response structure (e.g., array format). Overall, sufficient for a search tool with optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds minimal extra meaning beyond summarizing the use case (e.g., 'by vertical, location, and country'). No new parameter details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for Servicialo-compatible organizations by vertical, location, and country' with a specific verb and resource. It also distinguishes from sibling tool registry_get_organization by noting when not to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use as primary discovery tool and provides an example ('find a physiotherapist in Santiago'). Also states not to use if org_slug is known, directing to registry_get_organization. No exclusions but clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_lookupA
Resolve an organization slug to its MCP/REST endpoints and trust level — the DNS of professional services. Use this when you know the org_slug and need its API endpoint before calling any other tool. Do NOT use for searching by vertical or location (use resolve.search or registry.search instead). Returns: endpoint URLs, trust score (0-100), trust level, and last heartbeat timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Slug de la organización (ej: clinica-dental-sur) | |
| country | No | País ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: cl | cl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It lists returned fields (endpoint URLs, trust score, trust level, last heartbeat timestamp), adding behavioral context. Could explicitly state read-only nature, but implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, usage guideline, return values. No fluff, front-loaded, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description details return structure. Purpose, parameters (via schema), usage, and returns are covered. Fully adequate for a simple lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add extra meaning beyond schema; it implies country is for regional endpoint but doesn't elaborate. Adequate but not improved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool resolves an organization slug to endpoints and trust level, using a strong metaphor ('DNS of professional services'). It distinguishes itself from siblings like resolve_search and registry_search by specifying what it does vs. what it doesn't.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (when you know org_slug and need API endpoint before other tools) and when not to use (searching by vertical/location, directing to resolve.search or registry.search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_searchA
Search the global Servicialo resolver for registered organizations by country and vertical. Use this for broad discovery when you need to find all organizations in a country/vertical (e.g., "what physiotherapy clinics exist in Chile?"). Do NOT use if you already have an org_slug (use resolve.lookup instead). Unlike registry.search, this queries the DNS-level resolver and returns endpoint URLs + trust levels.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | País ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: cl | cl |
| vertical | No | Vertical del servicio. Valores comunes: tecnologia, consultoria, kinesiologia, psicologia, dental, nutricion, fonoaudiologia, terapia-ocupacional, medicina, veterinaria, educacion, fitness, legal, belleza, hogar. Omitir para buscar en todas las verticales. | |
| limit | No | Cantidad máxima de resultados (1-100). Default: 20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions 'queries the DNS-level resolver and returns endpoint URLs + trust levels,' but lacks details on pagination, rate limits, or error handling. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with clear purpose: functional description, usage example, and differentiation. Efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 3 optional params and no output schema, the description covers purpose, usage, and basic behavior. Lacks details on response format beyond 'endpoint URLs + trust levels,' but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds little beyond schema: it repeats default values and provides an example vertical list, but does not significantly enhance param meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search the global Servicialo resolver for registered organizations by country and vertical.' It specifies the action, resource, and filtering dimensions, and distinguishes from siblings like resolve.lookup and registry.search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use ('broad discovery', example given), when not to use (if you have org_slug, use resolve.lookup), and differentiates from registry.search by highlighting the DNS-level query and returned data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduling_check_availabilityA
Query available time slots for booking at an organization. No authentication required. Use this after services.list when you know the org and need to find open slots before booking. Checks 3-way availability: provider schedule AND client conflicts AND physical resource (room/equipment). Do NOT use for searching organizations (use registry.search) or listing services (use services.list). Returns available slots grouped by date, each with start time, end time, provider, and resource.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Organization slug (e.g. "clinica-dental-sur"). Get this from registry.search results. | |
| service_id | No | Filter by service ID. Get valid IDs from services.list. Omit to check all services. | |
| provider_id | No | Filter by provider ID. Omit to check all available providers. | |
| resource_id | No | Filter by physical resource (room, equipment). Only needed if the service requires a specific resource. | |
| date_from | Yes | Start date in ISO format (e.g. "2026-03-01"). Must be today or later. | |
| date_to | Yes | End date in ISO format (e.g. "2026-03-07"). Max range: 30 days from date_from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses no authentication required, checks 3-way availability, and describes return format. Lacks details on error handling or empty results, but sufficient for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, each sentence adds value. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no output schema, and no annotations, the description is quite complete: explains purpose, usage context, what it checks, and output format. Minor lack of error handling info, but overall comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but description adds extra context (e.g., 'No authentication required', 'resource_id: Only needed if the service requires a specific resource'). Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Query' and resource 'available time slots for booking at an organization'. It distinguishes from siblings like registry.search and services.list by explicitly stating what not to use it for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('after services.list when you know the org and need to find open slots before booking') and when not to use ('Do NOT use for searching organizations...'). Provides context of 3-way availability check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
services_listA
List the public service catalog of an organization: names, prices, durations, and modalities. Use this after registry.search to see what services an organization offers before checking availability. Do NOT use for organization discovery (use registry.search) or checking time slots (use scheduling.check_availability). Returns active, publicly bookable services only — internal or draft services are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Slug de la organización |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses key behavioral trait: 'Returns active, publicly bookable services only — internal or draft services are excluded.' No contradictions. Lacks mention of pagination or limits, but acceptable for simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, usage context, and constraints. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, description covers return content, constraints, and predecessor/successor tools completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single param org_slug described in schema as 'Slug de la organización'). Description does not add new meaning beyond schema, but context of usage indirectly helps. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists public service catalog (names, prices, durations, modalities) and distinguishes from siblings by explicitly contrasting with registry.search (organization discovery) and scheduling.check_availability (time slots).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this after registry.search...' and lists two cases with alternatives: 'Do NOT use for organization discovery (use registry.search) or checking time slots (use scheduling.check_availability).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trust_get_scoreA
Get the trust score of an organization from the Servicialo resolver. Use this to evaluate reliability before booking — returns score (0-100), trust level (unverified → declared → vouched → verified), and last activity timestamp. Do NOT use this to find organizations (use resolve.search). Trust accumulates passively from verified service history; it cannot be purchased or self-declared.
| Name | Required | Description | Default |
|---|---|---|---|
| org_slug | Yes | Slug de la organización (ej: clinica-dental-sur) | |
| country | No | País ISO 3166-1 alpha-2. Default: cl | cl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses return values (score range, trust levels, timestamp) and key behavioral trait: trust accumulates passively, cannot be purchased. Lacks details on error handling or permissions but covers core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with verb and resource, no redundant words. Every sentence serves a purpose: action, usage guidance, and behavioral insight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations or output schema, description covers purpose, return values, usage boundaries, and key behavioral constraints. Sufficient for agent to correctly select and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for both parameters. Description adds no new parameter-level semantics beyond context already present in schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get' and resource 'trust score', and explicitly distinguishes from sibling 'resolve.search' by saying 'Do NOT use this to find organizations (use resolve.search)'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to evaluate reliability before booking' and provides a clear negative use case 'Do NOT use this to find organizations' with alternative. Also explains passive accumulation, guiding appropriate use.
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.
10 tool updates
v0.1.1- Added
a2a_get_agent_card - Added
docs_quickstart - Added
registry_get_organization - Added
registry_manifest - Added
registry_search - Added
resolve_lookup - Added
resolve_search - Added
scheduling_check_availability - Added
services_list - Added
trust_get_score
TDQS
Scored across 10 tools
Each tool targets a distinct function, with clear separation through 'Do NOT use' guidance. However, registry_search and resolve_search both perform discovery with different outputs, and registry_get_organization and resolve_lookup both operate on a specific org_slug but return different data, creating minor ambiguity.
Names use underscores but follow mixed patterns: some are verb_noun (a2a_get_agent_card, registry_get_organization), others are noun_verb (registry_search, services_list), and some lack a verb (registry_manifest, docs_quickstart). This inconsistency could confuse agents.
10 tools is a well-scoped set for a service discovery and scheduling platform, covering discovery, profiles, services, availability, and trust without being overwhelming.
The tool surface covers discovery and pre-booking steps but lacks any tool for actual booking (create, update, cancel). This is a significant gap as users cannot complete the core action implied by the server's purpose.
Maintenance
Related MCP Connectors
Escrow, verification, and settlement platform for AI agents hiring other AI agents.
Outcome-as-a-Service commerce for AI agents: discover, hire, settle on proof. Live on devnet.
Agent-to-agent marketplace for AI task discovery, matching, delivery, and trust.
MCP layer for local businesses: discover, query, book, and transact with verified SMB AI agents.
Related MCP Servers
- MIT
- AlicenseNot gradedqualityCmaintenanceOpen coordination network for AI agents and their humans. 13 tools for structured coordination, job marketplace, reputation system. Dual-protocol: MCP + A2A. MIT licensed.1MIT
- AlicenseBqualityBmaintenanceAgent trust checks, reputation and signed passports. Glama's build is a separate local Guild with an empty graph and its own issuer. Registrations and evidence stay local. Use the remote MCP connector for the shared hosted Guild; its free preflight and metered trust services are separate.43Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to post real-world tasks, match them to people, and release payments through a delegation-based authorization system that enforces scoped, spend-capped permissions.-