Skip to main content
Glama

@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.x bis 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.

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 backend

Das 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 → Verificado

Jede 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

resolve.lookup

Ein orgSlug zu seinem MCP/REST-Endpoint und Vertrauensniveau auflösen (äquivalent zu DNS-Lookup)

resolve.search

Registrierte Organisationen nach Land und Branche im globalen Resolver suchen

trust.get_score

Vertrauenswert einer Organisation abrufen (Score 0-100, Stufe, letzte Aktivität)

Phase 1 — Entdeckung (6 Tools, ohne Auth)

Tool

Beschreibung

registry.search

Organisationen nach Branche, Standort, Land suchen

registry.get_organization

Öffentliche Details abrufen: Dienstleistungen, Anbieter, Buchungskonfiguration

registry.manifest

Server-Manifest abrufen: Fähigkeiten, Protokollversion, Organisations-Metadaten

scheduling.check_availability

Verfügbarkeit prüfen (3 Variablen: Anbieter ∧ Kunde ∧ Ressource)

services.list

Den öffentlichen Dienstleistungskatalog einer Organisation auflisten

a2a.get_agent_card

Die A2A-Agent Card einer Organisation für die Inter-Agenten-Entdeckung abrufen

Phase 2 — Verstehen (2 Tools)

Tool

Beschreibung

Scopes

service.get

Die 8 Dimensionen einer Dienstleistung abrufen

service:read

contract.get

Vertragsbedingungen abrufen: erforderliche Nachweise, Stornierungsrichtlinie, Streitfenster

service:read order:read

Phase 3 — Verpflichten (3 Tools)

Tool

Beschreibung

Scopes

clients.get_or_create

Kundenidentität per E-Mail/Telefon auflösen — in einem einzigen Aufruf suchen oder erstellen

patient:write

scheduling.book

Sitzung buchen → Zustand solicitado. resource_id optional für physische Ressourcen

schedule:write

scheduling.confirm

Gebuchte Sitzung bestätigen → Zustand confirmado

schedule:write

Phase 4 — Lebenszyklus (4 Tools)

Tool

Beschreibung

Scopes

lifecycle.get_state

Aktuellen Zustand, verfügbare Übergänge und Verlauf abrufen

service:read

lifecycle.transition

Zustandsübergang mit Nachweis ausführen

service:write

scheduling.reschedule

Auf neues Datum/Uhrzeit umbuchen (vertragliche Richtlinie kann gelten)

schedule:write

scheduling.cancel

Sitzung stornieren (Stornierungsrichtlinie des Vertrags wird angewendet)

schedule:write

Phase 5 — Lieferung verifizieren (3 Tools)

Tool

Beschreibung

Scopes

delivery.checkin

Check-in mit GPS + Zeitstempel → Zustand en_curso

evidence:write

delivery.checkout

Check-out mit GPS + Zeitstempel → Zustand entregado (Dauer automatisch berechnet)

evidence:write

delivery.record_evidence

Nachweis erfassen: gps, firma, foto, documento, duración, notas

evidence:write

Phase 6 — Abschließen (4 Tools)

Tool

Beschreibung

Scopes

documentation.create

Dienstleistungsprotokoll erstellen (klinische Notiz, Inspektionsbericht usw.) → Zustand documentado

document:write

payments.create_sale

Belastung für dokumentierte Dienstleistung erstellen → Zustand cobrado

payment:write

payments.record_payment

Erhaltene Zahlung gegen einen Verkauf erfassen

payment:write

payments.get_status

Zahlungsstatus eines Verkaufs oder Kontostand des Kunden abrufen

payment:read

Ressourcenverwaltung (6 Tools)

Tool

Beschreibung

Scopes

resource.list

Physische Ressourcen einer Organisation auflisten

resource:read

resource.get

Details einer Ressource mit ihren Verfügbarkeits-Slots abrufen

resource:read

resource.create

Neue physische Ressource erstellen (Raum, Box, Ausstattung)

resource:write

resource.update

Ressource aktualisieren (semantischer Patch)

resource:write

resource.delete

Ressource deaktivieren (Soft Delete: is_active = false)

resource:write

resource.get_availability

Verfügbarkeit einer Ressource nach Datumsbereich abfragen

resource:read

Resolver-Administration (3 Tools)

Tool

Beschreibung

Scopes

resolve.register

Organisation im globalen Resolver mit MCP/REST-Endpoints registrieren

resolve:write

resolve.update_endpoint

Registrierte Endpoints aktualisieren (Portabilität zwischen Backends)

resolve:write

telemetry.heartbeat

Heartbeat an den Resolver senden, der anzeigt, dass der Knoten aktiv ist

telemetry:write

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

market.list_segments

Segmente (event_type × vertical × region) mit verfügbaren Daten auflisten (filtert nach k-anon ≥ 5 verschiedenen Beitragenden)

market.get_benchmark

Die Bucket-Verteilung eines Segments abrufen (z. B. Anteil jedes price_band für payment_settled in health/CL). Tier 0/1 sehen Daten mit 90 Tagen Verzögerung; Tier 2 (≥ 50 Ereignisse in 30 Tagen) sieht Echtzeit

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

registry.list_verticals

In der Netzwerk vorhandene Verticals (deklariert + in 30-Tage-Telemetrie beobachtet)

registry.list_regions

Länder/Regionen ISO 3166-1 alpha-2 mit Aktivität im Netzwerk

registry.list_event_types

Katalog der 4 Ereignistypen der operativen Telemetrie + deren payload_fields

Dokumentation (1 Werkzeug, ohne Authentifizierung)

Herramienta

Descripción

docs.quickstart

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-server

Entdeckungsmodus — 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.quickstart aufruft.

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

SERVICIALO_API_KEY

No

Bearer-Token. Aktiviert den authentifizierten Modus (25 zusätzliche Werkzeuge = 40 insgesamt)

SERVICIALO_ORG_ID

No

Organisations-Slug. Aktiviert den authentifizierten Modus

SERVICIALO_BASE_URL

No

http://localhost:3000

API-Endpunkt der Servicialo-kompatiblen Plattform

SERVICIALO_ADAPTER

No

coordinalo

Backend-Adapter: coordinalo oder http

SERVICIALO_TELEMETRY

No

true

Auf false setzen, um die anonyme Knoten-Telemetrie (Heartbeat) zu deaktivieren

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

SERVICIALO_VERTICAL

No

unspecified

Deine Vertikale (z. B. health, legal, home). Notwendig, damit die Ereignisse dem richtigen Segment zugeordnet werden

SERVICIALO_REGION

No

CL

ISO 3166-1 alpha-2 des operativen Landes. Die Ereignisse werden damit gekennzeichnet

SERVICIALO_NODE_TOKEN

No

ownership_token deines Knotens im Register. Wird als Header X-Servicialo-Node-Token in den market.*-Aufrufen gesendet, um deine Stufe zu identifizieren (einschließlich Stufe 2 = Echtzeitzugriff)

SERVICIALO_OPERATIONAL_TELEMETRY

No

true

Auf false setzen, um die automatische Ausgabe operativer Ereignisse zu deaktivieren (booking_created, service_completed, dispute_opened, payment_settled)

SERVICIALO_PROTOCOL_VERSION

No

0.9

Im Protokoll deklarierte Version, die in den ausgegebenen Ereignissen angegeben wird

SERVICIALO_TELEMETRY_BASE_URL

No

https://servicialo.com

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_benchmark liefert 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 von HTTP_PROFILE.md unter /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-server

Schritt 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

  1. Ein Mensch (Fachkraft, Patient oder Organisation) erteilt einem Agenten ein Mandat

  2. Das Mandat legt fest, für wen der Agent handelt, was er tun darf (Scopes) und wie lange

  3. Bei jedem Tool-Aufruf validiert der MCP-Server das Mandat gegen 8 Prüfungen, bevor er ausführt

  4. 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 active sein

Verwendung widerrufener oder abgelaufener Mandate

2

Zeitliche Gültigkeitissued_at ≤ now < expires_at

Zeitbasierte Angriffe

3

Agentenidentitätmandate.agent_id === anfragender Agent

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:

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

  1. Öffne ein Issue, das das Problem und den Lösungsvorschlag beschreibt

  2. Für bedeutende Änderungen schreibe ein RFC in spec/ mit der betroffenen Abschnittsnummer

  3. Änderungen am Protokoll erfordern mindestens eine Referenzimplementierung vor dem Merge

  4. 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

event

Immer "node_initialized"

version

Paketversion

node_id

Persistente UUID, gespeichert in ~/.servicialo/node_id

ts

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-server

Oder 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 salir

Was verlässt deinen Rechner unter jeder Variable

Variable

Was übertragen wird

Was nicht übertragen wird

SERVICIALO_IMPL_NAME

Der Name im Klartext, als impl_name. Er ist öffentlich: Er wird unter /implementors angezeigt, sobald er verifiziert ist.

SERVICIALO_IMPL_URL

Die URL im Klartext, als impl_url. Ebenfalls öffentlich, sobald verifiziert.

SERVICIALO_IMPL_CONTACT

Nur impl_contact_hash: der SHA-256 der E-Mail in Kleinbuchstaben und ohne Leerzeichen, berechnet auf deinem Rechner vor jeder Netzwerkanfrage.

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

anonymouspendingverified

  1. anonymous – ohne konfigurierte Variablen. Dies ist der Standardzustand, und ein anonymer Knoten ist vollständig konform.

  2. pending – Wenn ein neuer impl_name zum 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.

  3. 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 tools
a2a_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesOrganization slug (e.g. "clinica-dental-sur")

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesSlug de la organización (ej: clinica-dental-sur)
countryNoPaís ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: clcl

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesSlug de la organización (ej: clinica-dental-sur)
countryNoPaís ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: clcl

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesOrganization slug (e.g. "clinica-dental-sur"). Get this from registry.search results.
service_idNoFilter by service ID. Get valid IDs from services.list. Omit to check all services.
provider_idNoFilter by provider ID. Omit to check all available providers.
resource_idNoFilter by physical resource (room, equipment). Only needed if the service requires a specific resource.
date_fromYesStart date in ISO format (e.g. "2026-03-01"). Must be today or later.
date_toYesEnd date in ISO format (e.g. "2026-03-07"). Max range: 30 days from date_from.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesSlug de la organización

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_slugYesSlug de la organización (ej: clinica-dental-sur)
countryNoPaís ISO 3166-1 alpha-2. Default: clcl

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 10 tool updatesv0.1.1
    • Addeda2a_get_agent_card
    • Addeddocs_quickstart
    • Addedregistry_get_organization
    • Addedregistry_manifest
    • Addedregistry_search
    • Addedresolve_lookup
    • Addedresolve_search
    • Addedscheduling_check_availability
    • Addedservices_list
    • Addedtrust_get_score

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count5/5

10 tools is a well-scoped set for a service discovery and scheduling platform, covering discovery, profiles, services, availability, and trust without being overwhelming.

Completeness2/5

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

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers