Skip to main content
Glama

@servicialo/mcp-server

The protocol-level MCP interface for the Servicialo standard — the destination layer for human services in the age of AI agents. HTTP made documents addressable. Servicialo makes services addressable. MCP and A2A are the transport. Servicialo is the destination agents arrive at.

This package is the protocol-level MCP interface for any Servicialo-compatible backend — not a connector to a specific platform. Coordinalo is the reference implementation (and the default), but you can connect your own backend.

Protocol: v0.10 (draft) · Spec: servicialo.com/spec · This package versions independently of the protocol (0.9.x until 1.0).

Road to 1.0

The Servicialo protocol is entering its stabilization phase. The first formal RFC cohort is open for comments for a minimum 4-week window before moving to Final Comment Period. Until 1.0, releases remain 0.9.x patches, and any breaking protocol change requires its merged RFC and prior communication.

Pending milestones toward 1.0

Milestone

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

Stable Core declaration (8 dimensions · 6+3 cycle · 6 flows · 7 principles) with backwards-compat guarantees

Pending

≥ 3 independent implementations in production

In progress

Related MCP server: maiat-protocol

Architecture

@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

The Problem

AI agents can browse the web, write code, and hold conversations. But ask one to book a kinesiology session, verify it happened, and process the payment — and it falls apart.

Today, every platform is a silo. There is no standard for:

  • Discovery — which provider, in which organization, offers what I need?

  • Identity — on whose behalf is this agent acting, and what is it authorized to do?

  • Lifecycle — what state is this service in? Who confirmed? Who attended?

  • Proof of delivery — did the session actually happen? For how long? Where?

  • Settlement — how much, to whom, under what contractual terms?

Without a shared protocol, every integration is handcrafted. Every agent-platform connection is a custom API. This doesn't scale.

What Servicialo Is

Servicialo is an open protocol, not a platform. It defines how professional services move through their lifecycle — from discovery to payment — in a way that any AI agent or platform can implement.

The relationship is like HTTP with Apache, or SMTP with Gmail: Servicialo defines the rules, implementations bring them to life.

The protocol models each service through 8 dimensions, a 6+3 lifecycle (6 core states + 3 optional financial ones), 6 exception flows, and 7 fundamental principles — universal across verticals (health, legal, education, home services):

Solicitado → Agendado → Confirmado → En Curso → Completado → Documentado → Facturado → Cobrado → Verificado

Any service, in any vertical, follows this sequence. Vertical-specific logic lives inside each state, but the state machine is invariant.

What This MCP Server Does

This package exposes the Servicialo protocol as 40 MCP tools organized by the 7 phases of a service's lifecycle (0–6, including the discovery resolver — analogous to DNS, over HTTP), plus resource management, resolver administration, network intelligence (market.*), and cold-start discovery (registry.list_* to learn the taxonomy without knowing it beforehand). An agent doesn't call endpoints by database entity — it follows the natural flow of coordinating a service.

Phase 0 — DNS Resolution (3 tools, no auth)

Tool

Description

resolve.lookup

Resolve an orgSlug to its MCP/REST endpoint and confidence level (equivalent to a DNS lookup)

resolve.search

Search registered organizations by country and vertical in the global resolver

trust.get_score

Get an organization's trust score (score 0-100, level, last activity)

Phase 1 — Discovery (6 tools, no auth)

Tool

Description

registry.search

Search organizations by vertical, location, country

registry.get_organization

Get public details: services, providers, booking configuration

registry.manifest

Get server manifest: capabilities, protocol version, organization metadata

scheduling.check_availability

Check availability (3 variables: provider ∧ client ∧ resource)

services.list

List an organization's public service catalog

a2a.get_agent_card

Get an organization's A2A Agent Card for inter-agent discovery

Phase 2 — Understand (2 tools)

Tool

Description

Scopes

service.get

Get a service's 8 dimensions

service:read

contract.get

Get contract terms: required evidence, cancellation policy, dispute window

service:read order:read

Phase 3 — Commit (3 tools)

Tool

Description

Scopes

clients.get_or_create

Resolve client identity by email/phone — look up or create in a single call

patient:write

scheduling.book

Book session → solicitado state. resource_id optional for physical resources

schedule:write

scheduling.confirm

Confirm booked session → confirmado state

schedule:write

Phase 4 — Lifecycle (4 tools)

Tool

Description

Scopes

lifecycle.get_state

Get current state, available transitions, and history

service:read

lifecycle.transition

Execute a state transition with evidence

service:write

scheduling.reschedule

Reschedule to a new date/time (contractual policy may apply)

schedule:write

scheduling.cancel

Cancel session (contract cancellation policy applies)

schedule:write

Phase 5 — Verify Delivery (3 tools)

Tool

Description

Scopes

delivery.checkin

Check-in with GPS + timestamp → en_curso state

evidence:write

delivery.checkout

Check-out with GPS + timestamp → entregado state (duration auto-calculated)

evidence:write

delivery.record_evidence

Record evidence: gps, firma, foto, documento, duración, notas

evidence:write

Phase 6 — Close (4 tools)

Tool

Description

Scopes

documentation.create

Generate service record (clinical note, inspection report, etc.) → documentado state

document:write

payments.create_sale

Create charge for documented service → cobrado state

payment:write

payments.record_payment

Record payment received against a sale

payment:write

payments.get_status

Get payment status for a sale or client account balance

payment:read

Resource Management (6 tools)

Tool

Description

Scopes

resource.list

List an organization's physical resources

resource:read

resource.get

Get resource details with its availability slots

resource:read

resource.create

Create a new physical resource (room, box, equipment)

resource:write

resource.update

Update resource (semantic patch)

resource:write

resource.delete

Deactivate resource (soft delete: is_active = false)

resource:write

resource.get_availability

Check resource availability by date range

resource:read

Resolver Administration (3 tools)

Tool

Description

Scopes

resolve.register

Register organization in the global resolver with MCP/REST endpoints

resolve:write

resolve.update_endpoint

Update registered endpoints (portability between backends)

resolve:write

telemetry.heartbeat

Send heartbeat to the resolver indicating the node is active

telemetry:write

Network Intelligence (2 tools, no auth)

Anonymized market benchmarks on operational telemetry contributed by nodes. Contribute-to-access policy (k-anonymity ≥ 5):

Tool

Description

market.list_segments

List segments (event_type × vertical × region) with available data (filters by k-anon ≥ 5 distinct contributors)

market.get_benchmark

Get the bucket distribution of a segment (e.g. share of each price_band for payment_settled in health/CL). Tier 0/1 see data with 90-day delay; tier 2 (≥ 50 events in 30 days) see real-time

Taxonomy Discovery (3 tools, no auth)

Cold-start: the agent does not need to know the protocol taxonomy in advance. Start here if it arrives without context:

Tool

Description

registry.list_verticals

Verticals present on the network (declared + observed in 30d telemetry)

registry.list_regions

ISO 3166-1 alpha-2 countries/regions with activity on the network

registry.list_event_types

Catalog of the 4 operational telemetry event types + their payload_fields

Documentation (1 tool, no auth)

Tool

Description

docs.quickstart

Get the 5 quickstart steps as structured JSON — onboarding for agents with no prior context

Quickstart — 5 steps to get on the network

Step 1. Install the MCP server

npx -y @servicialo/mcp-server

Discovery mode — 15 public tools, no credentials. Try it right away:

{
  "tool": "registry.search",
  "arguments": { "vertical": "kinesiologia", "location": "santiago" }
}

Step 2. Create your organization

Register your organization at coordinalo.com/signup. Coordinalo is the reference implementation of the Servicialo protocol.

Step 3. Get MCP credentials

In Coordinalo: Settings → Servicialo → Generate MCP credentials. You will get two values:

  • SERVICIALO_ORG_ID — your organization's slug (e.g. clinica-dental-sur)

  • SERVICIALO_API_KEY — bearer token for authentication

Step 4. Configure the MCP client

Add to the configuration of Claude Desktop, Cursor, or any MCP client:

{
  "mcpServers": {
    "servicialo": {
      "command": "npx",
      "args": ["-y", "@servicialo/mcp-server"],
      "env": {
        "SERVICIALO_API_KEY": "<tu_api_key>",
        "SERVICIALO_ORG_ID": "<tu_org_slug>"
      }
    }
  }
}

Omit the env block for discovery-only mode (15 public tools).

Step 5. Publish to the Servicialo network

In Coordinalo: Settings → Servicialo → Publish. Your organization appears at servicialo.com/network and is discoverable by other agents.

Tip: An agent can get these 5 steps as structured JSON by calling the docs.quickstart tool.

Network

The Servicialo network is the global registry of organizations implementing the protocol. Each authenticated node sends a periodic heartbeat, and any agent can discover organizations by country, vertical, and trust score.

  • Explore the network: servicialo.com/network

  • Search by vertical: registry.search({ vertical: "kinesiologia", country: "cl" })

  • Resolve an org: resolve.lookup({ org_slug: "clinica-dental-sur" })

Credentials

Essential

Variable

Required

Default

Description

SERVICIALO_API_KEY

No

Bearer token. Enables authenticated mode (25 additional tools = 40 total)

SERVICIALO_ORG_ID

No

Organization slug. Enables authenticated mode

SERVICIALO_BASE_URL

No

http://localhost:3000

API endpoint of the Servicialo-compatible platform

SERVICIALO_ADAPTER

No

coordinalo

Backend adapter: coordinalo or http

SERVICIALO_TELEMETRY

No

true

Set to false to disable anonymous node telemetry (heartbeat)

SERVICIALO_API_KEY and SERVICIALO_ORG_ID must be configured together. If only one is present, the server falls back to discovery mode with a warning.

Operational telemetry + benchmarks (optional)

These variables enable your node to contribute anonymized events to the network benchmarks and access real-time data (tier 2). See docs/telemetry-operational.md:

Variable

Required

Default

Description

SERVICIALO_VERTICAL

No

unspecified

Your vertical (e.g. health, legal, home). Required for events to be aggregated into the correct segment

SERVICIALO_REGION

No

CL

ISO 3166-1 alpha-2 of the operating country. Events are tagged with this

SERVICIALO_NODE_TOKEN

No

Your node's ownership_token in the registry. Sent as the X-Servicialo-Node-Token header in market.* calls to identify your tier (includes tier 2 = real-time access)

SERVICIALO_OPERATIONAL_TELEMETRY

No

true

Set to false to disable automatic emission of operational events (booking_created, service_completed, dispute_opened, payment_settled)

SERVICIALO_PROTOCOL_VERSION

No

0.9

Protocol version declared in emitted events

SERVICIALO_TELEMETRY_BASE_URL

No

https://servicialo.com

Operational telemetry receiving endpoint (only change for testing)

How this relates to benchmark tiers: a node emitting ≥ 50 operational events in 30 days automatically reaches tier 2 and market.get_benchmark returns real-time data (instead of the default tier 0/1 with 90-day delay). Full policy: GOVERNANCE.md#contribute-to-access-policy-v01.

Credentials are obtained at coordinalo.com → Settings → Servicialo → Generate MCP credentials.

Connecting your own implementation

This MCP server supports any Servicialo-compatible backend through the pluggable adapter layer. Two adapters are included:

  • coordinalo (default) — connects to a Coordinalo/Digitalo backend with org-scoped routes under /api/organizations/{orgId}.

  • http — connects to any implementation exposing the canonical endpoints of HTTP_PROFILE.md under /v1/*.

3 steps to connect your implementation

Step 1. Implement the REST endpoints defined in HTTP_PROFILE.md on your platform.

Step 2. Configure the MCP server to use the HTTP adapter:

SERVICIALO_ADAPTER=http \
SERVICIALO_BASE_URL=https://tu-plataforma.com \
SERVICIALO_API_KEY=tu_key \
npx -y @servicialo/mcp-server

Step 3. Add to your MCP client configuration:

{
  "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"
      }
    }
  }
}

The HTTP adapter translates internal routes to canonical /v1/* endpoints and sends the organization context via the X-Servicialo-Org header. See HTTP_PROFILE.md for the full REST contract.

Delegated Agency Model

The protocol treats AI agents as first-class actors — but never trusts them implicitly. Every agent action requires a ServiceMandate: an explicit delegation of capability from a human principal to an agent.

How it works

  1. A human (professional, patient, or organization) issues a mandate to an agent

  2. The mandate specifies on whose behalf the agent acts, what it can do (scopes), and for how long

  3. On each tool call, the MCP server validates the mandate against 8 checks before executing

  4. Each action produces an audit entry — success or failure

Example mandate

{
  "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"
}

Using mandates in tool calls

When actor.type is "agent", include the mandate_id:

{
  "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"
    }
  }
}

The 8 validation checks

Each agent tool call is validated against:

#

Check

What it prevents

1

Status — mandate must be active

Use of revoked or expired mandates

2

Temporal validityissued_at ≤ now < expires_at

Time-based attacks

3

Agent identitymandate.agent_id === requesting agent

Agent impersonation

4

Scope coverage — mandate scopes cover the tool's requirements

Privilege escalation

5

Context — mandate context matches the request

Cross-org access to data

6

Conflict of interest — agent cannot act for both parties

Dual-agency violations

7

Restrictions — allowed schedules, daily limits, financial thresholds

Over-autonomous agents

8

Audit — every action logged with sanitized inputs

Non-repudiation

Non-agent actors (client, provider, organization) do not go through mandate validation.

Provider Discovery

Agents can search the registry and match providers to a patient's needs using structured queries.

Search the registry

{
  "tool": "registry.search",
  "arguments": {
    "vertical": "kinesiologia",
    "location": "santiago",
    "country": "cl"
  }
}

Returns organizations matching their services and providers.

Check availability

{
  "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"
  }
}

The 3-variable scheduler checks provider, client, and physical resource availability simultaneously.

End-to-end example

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" ✓

Protocol Specification

The full Servicialo protocol specification is available at:

The spec covers the 8 service dimensions, the 6+3 lifecycle, 6 exception flows, 7 fundamental principles, the two-entity architecture (atomic Service + Service Order), the Delegated Agency Model, DNS resolution, and A2A interoperability.

Reference Implementation

Digitalo is the first production implementation of the Servicialo protocol, operating in healthcare in Chile. It implements the full lifecycle — from provider discovery to payment settlement — and serves as a validation ground for the protocol's evolution.

This MCP server connects to any Servicialo-compatible backend via SERVICIALO_BASE_URL. Digitalo is one such backend. The protocol is designed so that any CRM, HIS, or platform can implement it as a sovereign node.

Contributing to the Protocol

Servicialo follows semantic versioning for the protocol specification:

  • Patch (0.7.x) — clarifications, typo fixes, non-breaking additions

  • Minor (0.x.0) — new optional fields, new tool definitions, new exception flows

  • Major (x.0.0) — breaking changes to schemas, state machine, or core semantics

How to propose changes

  1. Open an issue describing the problem and the proposed solution

  2. For significant changes, write an RFC in spec/ with the section number it affects

  3. Protocol changes require at least one reference implementation before merge

  4. Schema changes must include updated JSON Schema and Zod types in the MCP server

Areas actively seeking input

  • Vertical-specific evidence requirements (beyond healthcare)

  • Multi-language support for lifecycle state names

  • Inter-node federation (how two Servicialo implementations interoperate)

  • Agent SDK patterns for Python and TypeScript

Telemetry

On startup, the MCP server sends a single anonymous POST to https://servicialo.com/api/telemetry/instance with:

{
  "event": "node_initialized",
  "version": "0.9.8",
  "node_id": "a1b2c3d4-...",
  "ts": 1711300000000
}

Field

Description

event

Always "node_initialized"

version

Package version

node_id

Persistent UUID stored in ~/.servicialo/node_id

ts

Timestamp in milliseconds

That is all that is sent. No organization information, API keys, patient data, or any personal identifiers are transmitted. The IP is hashed (SHA-256) on the server before being stored. The ping is fire-and-forget: if it fails, the error is silently discarded and never blocks server operation.

The first time it runs with telemetry enabled, the server prints a notice to stderr indicating what is sent and how to disable it.

Disabling telemetry

SERVICIALO_TELEMETRY=false npx -y @servicialo/mcp-server

Or in the MCP configuration:

{
  "env": {
    "SERVICIALO_TELEMETRY": "false"
  }
}

More details: servicialo.com/network

Join the network

When you install @servicialo/mcp-server, your node automatically registers in the network telemetry. This helps the ecosystem measure real protocol adoption — without collecting personal data or data about your clients.

Telemetry reports only: package version, a persistent node UUID, and an IP hash (for approximate geolocation — we do not store IPs). You can disable it at any time with SERVICIALO_TELEMETRY=false.

Startup notices

The server writes two informational notices to stderr — never to stdout, which carries JSON-RPC and would be corrupted by anything else:

  • The RFC-005 comment window, while it remains open. It has built-in expiration: it stops printing after 2026-09-13, the close of the final comment period. A node installed in October does not see a dead announcement.

  • If your node is anonymous, how to identify it (below).

Both are printed once per process and are silenced with SERVICIALO_QUIET=true:

{
  "env": {
    "SERVICIALO_QUIET": "true"
  }
}

That variable affects only these two notices. The mode banner and the first-run telemetry notice keep their previous behavior.

Identify your node

By default your node is anonymous: the ping carries event, version, node_id, and timestamp, nothing else. If you operate your own implementation of the protocol, these three optional variables identify it and nominate it as a verified implementor:

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

What leaves your machine under each variable

Variable

What travels

What does not travel

SERVICIALO_IMPL_NAME

The plain-text name, as impl_name. It is public: it is shown in /implementors once verified.

SERVICIALO_IMPL_URL

The URL in plain text, as impl_url. Also public once verified.

SERVICIALO_IMPL_CONTACT

Only impl_contact_hash: the SHA-256 of the email in lowercase and without spaces, computed on your machine before any network request.

The email. It never leaves the host, is not logged, is not stored, and is not shown anywhere.

With no variables configured, none of these fields appear in the ping. An unconfigured node behaves exactly the same as before this version.

The verification cycle

anonymouspendingverified

  1. anonymous — no variables configured. This is the default state, and an anonymous node is fully conformant.

  2. pending — the first time a new impl_name appears, the record is left pending and the team receives a notification with the name, URL, and country. The contact hash is not in that notification, and could not be: it would be useless.

  3. verified — after manual review against the conformance checklist, your implementation appears on servicialo.com/implementors with its level and the number of hosts it reports.

Verification is manual today. The automated conformance suite is on the roadmap; it is not a current capability.

What the contact hash is for — and what it is not for. It is a one-way digest: no one can write to you from it, and configuring it does not subscribe you to any announcement or list. It serves the opposite purpose: when you write about your implementation, the hash of your email confirms that you are the operator who sent those pings.

How to stop sending it

Remove the variables from your MCP configuration (or unset SERVICIALO_IMPL_NAME SERVICIALO_IMPL_URL SERVICIALO_IMPL_CONTACT) and restart the server. The next ping is anonymous again, with no identity fields. Pings already sent retain what they sent; to request deletion of existing records, open an issue in the repository.

Adjacent capability: weekly snapshots

The registry emits benchmark.weekly_snapshot every Monday at 00:00 UTC to subscribed endpoints, with a payload signed by HMAC-SHA256. These three variables do not enable it. It requires a registry entry and an explicit subscription via the Webhooks API, and it delivers benchmark data, not protocol announcements.

License

Apache-2.0 — any implementation, commercial or not, is welcome. See 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. Dates show when Glama detected each change.

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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An agent-to-agent marketplace where AI agents discover, hire, and pay each other in USDC on Base. Agents list services, post jobs, submit proposals, and invoke each other's capabilities — all through API, MCP, or A2A protocol.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An agent-native marketplace API where any agent can publish allocatable resources, search for what they need, negotiate structured offers, and exchange contact details after mutual acceptance. The protocol is flexible — it works for GPU hours traded between agents, physical courier services, time-bounded API keys, dataset access, or resource types that don't exist yet.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/servicialo/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server