Skip to main content
Glama

@muovi/mcp-server

npm version

Model Context Protocol (MCP) server for Muovi — LATAM's trust-first local services marketplace.

This package lets MCP-aware clients (Claude Desktop, Cursor, Claude Code, and any other MCP host) discover Muovi's verified LATAM service professionals, browse the service catalog and city list, read reviews, and deep-link a user into the on-platform task-creation flow. It is a thin, read-only wrapper over Muovi's public /v1 REST API.

Stdio mode. The package ships an npx-runnable binary that speaks JSON-RPC over stdin/stdout. The hosted HTTP/SSE variant is tracked separately (Muovi MOB-142).

What it exposes

Six tools, all read-only:

Tool

Wraps

Purpose

muovi_search_professionals

GET /v1/professionals

Search verified pros by service, city, neighborhood, verification status, min rating, min review count.

muovi_get_professional

GET /v1/professionals/{slug}

Fetch a single pro's full public profile (bio, portfolio, specialties, verifications).

muovi_list_services

GET /v1/services

The full live service catalog.

muovi_list_cities

GET /v1/cities

Every Argentine city Muovi serves, with neighborhoods.

muovi_get_reviews

GET /v1/professionals/{slug}/reviews

Paginated reviews for a pro, most-recent first.

muovi_create_task_link

(pure formatter)

Builds the canonical deep-link the user should follow to start a task with a specific pro for a specific service. Makes no HTTP call.

Related MCP server: Marketplace Search MCP

Anti-leakage policy

Muovi is on-platform-only. Phone, email, and WhatsApp handles are never returned by the public API — contact between consumers and professionals happens exclusively through Muovi's in-app conversation flow, reachable from each pro's profile_url.

This server enforces the policy twice:

  1. The /v1 API strips contact data server-side.

  2. Every tool response in this package also runs through a local anti-leakage detector (a Node-compatible mirror of src/lib/anti-leakage/detector.ts in the Muovi web repo). If a leak is detected at the agent boundary the tool returns a stable error to the LLM client and refuses to surface the payload.

Hosts that integrate this server must not synthesise off-platform contact handles from any field. Driving the user to profile_url (optionally with the deep-link query string) is the only sanctioned contact channel.

Installation & configuration

Claude Desktop

Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and add the server under mcpServers:

{
  "mcpServers": {
    "muovi": {
      "command": "npx",
      "args": ["-y", "@muovi/mcp-server"]
    }
  }
}

If you have a Muovi API key (see Authentication below), pass it via env:

{
  "mcpServers": {
    "muovi": {
      "command": "npx",
      "args": ["-y", "@muovi/mcp-server"],
      "env": {
        "MUOVI_API_KEY": "your-key-here"
      }
    }
  }
}

Restart Claude Desktop after editing the config.

Cursor

Add to ~/.cursor/mcp.json (or your workspace's .cursor/mcp.json):

{
  "mcpServers": {
    "muovi": {
      "command": "npx",
      "args": ["-y", "@muovi/mcp-server"]
    }
  }
}

Claude Code

Register the server with the Claude Code CLI:

claude mcp add muovi --command "npx" --args "-y" "@muovi/mcp-server"

Or add it manually to your Claude Code settings:

{
  "mcpServers": {
    "muovi": {
      "command": "npx",
      "args": ["-y", "@muovi/mcp-server"]
    }
  }
}

Manual / scripting

npx -y @muovi/mcp-server

The process reads JSON-RPC on stdin and replies on stdout. All log output goes to stderr.

Authentication (optional)

All /v1 endpoints are public and unauthenticated by default. If your client has been issued a Muovi API key (higher rate-limit tier), set MUOVI_API_KEY in the server's environment and the package will forward it as the X-API-Key header on every request.

You can also override the API base URL for testing:

MUOVI_API_BASE_URL=https://staging.muovi.com.ar/api/v1 npx -y @muovi/mcp-server

Example agent workflow

A typical Claude conversation that uses these tools:

  1. User asks for "an electrician in Palermo who's properly licensed".

  2. Agent calls muovi_list_services to map "electrician" → electricidad.

  3. Agent calls muovi_list_cities to confirm palermo is a valid neighborhood under caba.

  4. Agent calls muovi_search_professionals with { service: "electricidad", city: "caba", neighborhood: "palermo", has_matricula: true, min_rating: 4.5 }.

  5. Agent picks the top pro and calls muovi_get_professional for the full bio + portfolio.

  6. Agent optionally calls muovi_get_reviews for social proof.

  7. Agent calls muovi_create_task_link with { professional_slug, service_slug: "electricidad" } and surfaces the resulting URL.

  8. User follows the link, lands on Muovi, completes the on-platform task creation flow.

Step 8 — the on-platform flow — is Muovi's enforcement point for trust, payments, and disputes. MCP never bypasses it.

Local development

This package is the standalone muovi-latam/mcp-server repo. Clone it, install, and run tests:

git clone git@github.com:muovi-latam/mcp-server.git
cd mcp-server
npm install
npm test            # unit + integration + OpenAPI drift checks
npm run typecheck   # strict TypeScript
npm run build       # emits dist/

The OpenAPI drift test parses public/openapi.yaml and asserts each tool's input schema matches the corresponding operation's parameters exactly — adding a query param to /v1 requires updating the corresponding tool (and vice versa).

Publishing

npm publish is intentionally not wired into CI. Releases are cut manually from a clean tag:

npm version patch    # or minor / major
npm publish --access public
git push --follow-tags

prepublishOnly runs clean + build + test before any publish.

MCP Registry (mcp-publisher)

Beyond npm, this server is listed in the Model Context Protocol registry via the committed server.json manifest. Publishing to the registry is a manual step — there is deliberately no CI auto-publish (the registry is a low-frequency, human-gated surface, and namespace auth is interactive).

Committed namespace: ar.com.muovi/mcp-server — the reverse-DNS form of muovi.com.ar. This value lives in both server.json (name) and package.json (mcpName) and the two must stay byte-identical (the server-json test enforces equality). It must also match the identity you authenticate as with mcp-publisher (see below).

One-time namespace ownership setup

Prove ownership of the ar.com.muovi namespace once, before the first publish:

  • DNS (preferred): add the TXT record that mcp-publisher login dns prints to the muovi.com.ar zone, then authenticate against that domain. This ties the namespace to the domain we already control.

  • GitHub OAuth (fallback): mcp-publisher login github — authenticates via the muovi-latam GitHub org. Only use this if DNS verification is unavailable; the authenticated identity still has to line up with the committed ar.com.muovi/mcp-server namespace.

If the committed namespace and the authenticated identity disagree, mcp-publisher publish will reject the manifest — fix the namespace (in both files) or the login, do not force it.

Publish steps

mcp-publisher validate ./server.json   # checks against the live registry schema
mcp-publisher publish                   # publishes server.json under the authenticated namespace

validate is the step that confirms the manifest matches the current registry schema version — run it every time; the pinned $schema in server.json is a hint, not a guarantee the live schema hasn't moved.

Version-bump discipline

The server-json test asserts that four version fields agree. On every version bump, update all of them together, then re-publish to both npm and the registry:

  1. package.jsonversion

  2. src/server.tsPACKAGE_VERSION

  3. server.jsonversion

  4. server.jsonpackages[0].version

Honest gating notes

The manifest advertises capabilities that are not yet fully live. Keep these caveats in mind (and do not overstate them to users):

  • Remote transport (remotes[].url = https://mcp.muovi.com.ar/) is only truthful once that endpoint reliably answers JSON-RPC initialize over streamable-HTTP. That hosted surface is tracked in MOB-207; until it lands, the stdio package (npx @muovi/mcp-server) is the only transport that actually works.

  • muovi_get_professional and muovi_get_reviews remain broken against production until MOB-263 deploys the backing /v1 endpoints. The tools are registered and pass drift checks, but live calls will fail until then.

License

MIT.

Available Tools

6 tools
muovi_get_professionalGet professionalA
Read-only
Inspect

Fetch the full public profile for a single Muovi-verified professional by slug. Returns display name, headline, bio, portfolio image URLs, specialties, city + neighborhoods, services, ratings, verifications, and the canonical profile_url. The profile_url is the only sanctioned contact channel — phone, email, and whatsapp are never returned. Append ?create_task=1&service={slug} to profile_url (or use muovi_create_task_link) to deep-link a user into the on-platform task creation flow targeted at this pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe professional's URL-safe slug (e.g. "juan-p-electricista-caba"). Obtain from `muovi_search_professionals`.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, but the description adds valuable behavioral context: it states that phone, email, and whatsapp are never returned, and that the profile_url is the only sanctioned contact channel. This goes beyond annotations to manage expectations about what the tool does not return. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single fluid paragraph that lists the returned fields and key usage notes. It is efficient and covers necessary details without excessive verbosity. While a bullet list might improve scannability, the current structure is clear and concise.

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 the simple input schema and lack of an output schema, the description adequately explains what the tool returns by listing fields manually. It also covers an important nuance (the sanctioned contact channel) and how to deep-link. Could be slightly improved by mentioning if pagination or rate limits apply, but overall complete for a single-param read tool.

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 provides a description for the 'slug' parameter, but the description adds value by explaining how to obtain the slug ('Obtain from muovi_search_professionals') and clarifying it is a 'URL-safe slug'. This improves an AI agent's ability to provide the correct input.

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 fetches the full public profile for a single verified professional by slug. It lists the specific fields returned (display name, headline, bio, etc.) and distinguishes from sibling tools like muovi_create_task_link by mentioning the sanctioned contact channel and deep-linking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: retrieve a professional's profile by slug. It does not explicitly state when not to use this tool, but it implies that muovi_search_professionals is for search and muovi_create_task_link for deep-linking, giving enough guidance for an AI agent to choose appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

muovi_get_reviewsGet reviewsA
Read-only
Inspect

Fetch paginated reviews for a single Muovi-verified professional, sorted most-recent first. Each review has a 1-5 rating, an optional title and free-text comment, the author's reduced display name (e.g. "María G." — full surnames are never returned), the author role (client or worker), the service category the review is associated with, and an ISO created_at timestamp. Use this to surface social-proof when recommending a professional.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe professional's URL-safe slug. Obtain from `muovi_search_professionals` or `muovi_get_professional`.
limitNoMaximum number of reviews per page (default 20, max 50).
offsetNoZero-based offset into the review list for pagination.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds critical behavioral details: pagination, sorting, fields returned (rating, title, comment, truncated author name, role, service category, timestamp), and notably that full surnames are never returned. No contradictions.

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 two sentences, each carrying essential information. The first sentence states the core functionality and sorting; the second details output fields and usage context. No wasted words.

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?

Despite lacking an output schema, the description thoroughly explains the return structure (rating, title, comment, author display name, role, service category, timestamp) and pagination behavior. This is complete for a read-only paginated list tool.

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 coverage is 100%, but the description adds value by explaining the 'slug' parameter's provenance (obtain from muovi_search_professionals or muovi_get_professional) and clarifying the default limit (20) which is not in the schema. This enhances understanding.

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 fetches paginated reviews for a single professional, sorted most-recent. It specifies the resource (reviews) and action (fetch), and differentiates from sibling tools which focus on professionals, cities, or services.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the use case: 'Use this to surface social-proof when recommending a professional.' While it doesn't mention when not to use or alternatives, the context is clear and the statement provides direct guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

muovi_list_citiesList citiesA
Read-only
Inspect

List every Argentine city Muovi serves, with active neighborhoods nested under each. Each city has a stable slug (used as the city parameter on muovi_search_professionals) and a human-readable name. Each neighborhood has its own slug (used as the neighborhood parameter on muovi_search_professionals). Call this when you need to resolve a user's location wording to a Muovi city or neighborhood slug.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true. Description adds that each city has a stable slug and human-readable name, and neighborhoods are nested. No contradictions; adds behavioral context beyond annotations.

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 earning its place. Front-loaded with purpose, then details about slugs and usage. No wasted words.

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 zero-parameter list call with no output schema, the description fully explains what is returned (cities with nested neighborhoods, slugs, human-readable names) and how to use it. Complete.

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 schema coverage is 100% (empty). The description adds value by explaining the slug usage and output structure, which is the baseline expectation.

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 Argentine cities with active neighborhoods, and specifies that slugs are used for other tools. It distinguishes itself from sibling tools like muovi_search_professionals by explaining how the output maps to parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call this when you need to resolve a user's location wording to a Muovi city or neighborhood slug.' This is clear guidance. It doesn't explicitly state when not to use it, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

muovi_list_servicesList servicesA
Read-only
Inspect

List every service category Muovi supports in Argentina (electricidad, plomería, pintura, etc.). Each entry has a stable slug (used as the service parameter on muovi_search_professionals and muovi_create_task_link), a human-readable name, an optional description, and a requires_matricula flag indicating whether listed professionals must hold a verified professional license. Call this first when you need to map a user's natural-language request to a Muovi service slug.

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?

Annotations already declare readOnlyHint=true, so the bar is lower. The description adds value by disclosing that each entry has a stable slug, a human-readable name, optional description, and especially the requires_matricula flag. This behavioral detail aids agent reasoning beyond what annotations supply.

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?

Single paragraph, no filler. Front-loads the purpose, then details output fields, and ends with usage recommendation. Every sentence earns its place.

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 tool with no parameters and no output schema, this description is fully complete. It explains the return structure, the meaning of each field, and the tool's role in the larger workflow (mapping natural language to slugs for sibling tools).

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 (0 params), and schema coverage is 100%. Per rubric baseline 4, since there is nothing to add. The description could not add parameter meaning because there are none.

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 verb 'List' and the resource 'every service category Muovi supports in Argentina'. It explicitly distinguishes the tool from siblings by explaining how its output (slugs) feeds into muovi_search_professionals and muovi_create_task_link, making its role unique.

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 guidance: 'Call this first when you need to map a user's natural-language request to a Muovi service slug.' Also explains that slugs are stable and reused elsewhere, giving clear context for invocation order.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

muovi_search_professionalsSearch professionalsA
Read-only
Inspect

Search for verified service professionals in Argentina by service type, city, neighborhood, verification status, minimum rating, and minimum review count. Returns a paginated list of professionals with display name, headline, ratings, verifications, and a profile_url that is the only sanctioned contact channel (no phone/email/whatsapp is ever returned). Use this for discovery; use muovi_get_professional for the full detail payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity slug (e.g. "caba"). Matches `City.slug` in the catalog.
limitNoMaximum number of results per page (default 20, max 50).
offsetNoZero-based offset into the result set for pagination.
serviceNoService slug (e.g. "electricidad"). Matches `Service.slug` in the catalog.
min_ratingNoMinimum blended average rating, 0-5 inclusive.
min_reviewsNoMinimum blended review count.
neighborhoodNoNeighborhood slug (e.g. "palermo"). Matches `Neighborhood.slug` in the catalog.
has_matriculaNoWhen true, only return pros with a verified professional matrícula on file (electricians, gas fitters, etc.).
verified_identityNoWhen true, only return pros whose identity has been verified by Muovi.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint. The description adds important behavioral details: returns a paginated list, lists specific fields (display name, headline, ratings, verifications, profile_url), and crucially states that no phone/email/whatsapp is ever returned. This goes beyond annotations, though no mention of rate limits or error handling.

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: first sentence defines purpose and filters, second explains return content and a key constraint, third gives usage guidance. It is front-loaded and every sentence adds value with no fluff.

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 9 optional parameters and no output schema, the description adequately covers core information: filters, return fields, pagination, and direction to the detail tool. However, it could hint that slugs come from catalog endpoints (muovi_list_cities, muovi_list_services) to improve completeness for an agent.

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?

With 100% schema description coverage, the schema already documents each parameter. The description provides a high-level summary of filter criteria but does not add new semantic information beyond what is in the schema. Thus, 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 explicitly states the verb 'search', the resource 'verified service professionals in Argentina', and lists multiple filtering criteria (service type, city, neighborhood, etc.). It clearly distinguishes from sibling muovi_get_professional by stating use for discovery vs. full detail.

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 provides explicit guidance: 'Use this for discovery; use muovi_get_professional for the full detail payload.' This directly tells the agent when to use this tool versus the sibling, fulfilling the dimension well.

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. 6 tool updatesv0.1.2
    • First observedmuovi_create_task_link
    • First observedmuovi_get_professional
    • First observedmuovi_get_reviews
    • First observedmuovi_list_cities
    • First observedmuovi_list_services
    • First observedmuovi_search_professionals

TDQS

A4.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a unique functionality: creating a deep-link, fetching a professional profile, fetching reviews, listing cities, listing services, and searching professionals. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent 'muovi_verb_noun' pattern using snake_case, such as muovi_list_cities and muovi_search_professionals. The naming is predictable and clear.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose of accessing Muovi professional services. Each tool is essential and covers distinct operations without unnecessary bloat.

Completeness5/5

The tool set covers the full lifecycle for the domain: listing locations and services, searching professionals, viewing detailed profiles and reviews, and generating a task creation link. No obvious gaps exist given Muovi's constraints (no server-side task creation).

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Mercado Pago's Official MCP Server offers tools so that developers can easily interact with our API using natural language, which simplifies tasks and product integration. Remotely hosted by Mercadolibre supporting Streamable HTTP Transport. Details on how to connect: https://mcp.mercadopago.com/
    1
    8
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for searching marketplaces (TCGPlayer, Reverb, Thumbtack), verifying professional licenses (contractor, nurse), and looking up PSA card grading data. Returns real-time pricing, listings, and verification results.
    22
    51 npm
    4
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    Read-only MCP server for Municipalidad de Rosario citizen queries, routing by intent to official sources and a local document index. It exposes tools for querying official documents, procedures, claims, payments, appointments, and news via MCP stdio or HTTP.
    10
    -