Skip to main content
Glama

mcp-server

Server Details

MCP server for Muovi, Argentina's trust-first local services marketplace: find pros, draft tasks.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 73 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
muovi-latam/mcp-server
GitHub Stars
1
Server Listing
@muovi/mcp-server

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools target distinct resources: list_cities, list_services, search_professionals, get_professional, get_reviews, get_service_requirements are clearly separable. The only real overlap is muovi_create_task_draft vs muovi_create_task_link, both of which create a task and differ only in draft-vs-deep-link mechanics; the descriptions do explain the difference, but an agent could still pick the wrong one.

Naming Consistency5/5

Every tool uses the same muovi_ prefix plus a consistent verb_noun pattern (list_cities, get_professional, search_professionals, create_task_draft). No mixing of camelCase or vague verbs.

Tool Count5/5

Eight tools is well-scoped for a services-marketplace workflow: discovery (cities, services), matching (search, get_professional, reviews), requirements, and task creation. Each tool earns its place with no redundant entries.

Completeness4/5

The surface covers the full discovery-to-handover path: resolve location/service slugs, search, inspect a professional, read requirements, and create a draft or link. Minor gap: there is no tool to check a task's status or retrieve it after handing off, though that is arguably by design since the person publishes on Muovi.

Available Tools

8 tools
muovi_create_task_draftCreate task draftAInspect

Save a task draft on Muovi for the person you are helping, and get back a link for them. The person opens the link, reviews the draft, signs in to Muovi and publishes it themselves. This tool publishes nothing and does not notify any professional. To hand over the full request, call muovi_get_service_requirements for the service first and collect the required fields it lists, asking one question per message and waiting for the answer before asking the next. A draft whose urgency is flexible is complete without the date. Also ask what a professional would need to quote this specific job, skip anything the person already said, and write those details into description; no list of job questions is prescribed. Send the answers in slots (keyed by slot key) with location. Do not ask the optional slots as a list; when what the person has told you, at any point in the conversation, gives an optional slot's value, send it in slots as well as writing it in description. If a required answer is missing, the result has status: "incomplete", lists the questions still to ask and carries no link: ask them one per message and call again with every answer. If a value is not accepted, the result has status: "invalid_slots" and names each slot. A draft with every required answer opens on a review form with those answers filled in, without asking them again, unless Muovi's assistant has a question of its own for the person, and the person confirms the address on Muovi's map after opening the link, before publishing. Sending only description still saves a draft, and that link opens Muovi's assistant, which asks the person its questions. To direct the draft to one professional, pass professional_id, the id of any result from muovi_search_professionals: when the person publishes it, the task goes to that professional first for 24 hours and then opens to everyone, unless open_to_others is true, in which case it opens to everyone right away and that professional is still told. Set open_to_others from what the person chose; they can change it on the review form. A ProSite slug in professional_slug is still accepted instead of professional_id. Leave both out for a general request to get offers from several professionals. service_slug comes from muovi_list_services. A link nobody has opened expires 24 hours after it is created. The first person to open it takes the draft, signed in or not, and can reopen the link for up to 7 days, so give it only to that person. Do not include phone numbers, email addresses or other contact details in any text.

NameRequiredDescriptionDefault
slotsNoOptional. The person's answers, keyed by slot key from `muovi_get_service_requirements`. Send each value in the slot's `value_format`.
titleNoOptional. A short title for the task, 5 to 80 characters. Left out, Muovi takes it from the description.
locationNoOptional. Where the job is: `neighborhood_slug`, `address`, or both. The address is saved as text; the person confirms the place on the map on Muovi.
zone_textNoOptional. Where the job is, as free text (neighborhood or area), up to 120 characters.
descriptionYesWhat the person needs done, in their words, with the job details a professional would need to quote it: 20 to 2000 characters.
service_slugYesThe service slug (from `muovi_list_services`), e.g. "electricidad".
budget_amountNoOptional. The person's budget in ARS, as a positive number.
open_to_othersNoOptional, with professional_id. True when the person also wants offers from other professionals right away; false or omitted gives the chosen professional the first 24 hours.
preferred_dateNoRequired with preferred_time "specific_date", otherwise omitted. YYYY-MM-DD, from today up to 90 days ahead (Argentina time).
preferred_timeNoOptional. When the person wants it done. Use "specific_date" together with `preferred_date`.
professional_idNoOptional. The `id` of a professional from `muovi_search_professionals` to direct the draft to. Omit for a general request.
time_preferencesNoOptional. The parts of the day that suit the person.
professional_slugNoOptional. A ProSite slug from an older link, instead of professional_id.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true. The description goes far beyond them: it discloses that nothing is published or notified, that incomplete/invalid input returns status 'incomplete' or 'invalid_slots' with no link, that an unopened link expires in 24 hours, that the first opener takes the draft and can reopen for 7 days, and that contact details must be excluded.

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 purpose and the publish-nothing guarantee are front-loaded, and nearly every sentence carries operational information for a 13-parameter tool. It is a dense, run-on paragraph without headings or bullets, which hurts scannability, but little of the content is filler.

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 complex 13-parameter mutation with no output schema, nested objects, and an interactive collection workflow, the description covers prerequisites, the interactive ask-loop, error statuses, link lifecycle, and privacy constraints. An agent has essentially everything needed to drive the flow correctly.

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%, so the baseline is 3, but the description adds real meaning: professional_id vs professional_slug equivalence, that open_to_others controls whether the chosen professional gets a 24-hour head start, that slots are keyed by slot key from muovi_get_service_requirements, and that a 'flexible' urgency needs no date.

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 first sentence states a precise verb and resource ('Save a task draft on Muovi ... and get back a link') and immediately clarifies the crucial distinction that it publishes nothing, which separates it from a link/publication flow. An agent can tell what this tool does and what it does not do without opening the schema.

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 routes the agent explicitly: call muovi_get_service_requirements first and collect its fields, use muovi_list_services for service_slug, muovi_search_professionals for professional_id, and leave both professional fields out for a general request. It also gives when-to-use rules for open_to_others and the one-question-per-message protocol.

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

muovi_get_professionalGet professionalA
Read-only
Inspect

Fetch the full public profile of one Muovi professional by the id from muovi_search_professionals. Returns display name, headline, bio, portfolio image URLs, specialties, city and neighborhoods, services, ratings, verifications, and profile_url, the professional's public profile page on Muovi. Phone, email and WhatsApp are not returned. When presenting the professional, name only the checks Muovi has verified among identity, matrícula, background check (antecedentes) and phone, and never say that one is missing or not verified. To start a task for this professional, use muovi_create_task_link or muovi_create_task_draft with this id as professional_id.

NameRequiredDescriptionDefault
idYesThe professional's `id` from `muovi_search_professionals`. A ProSite slug from an older link is also accepted.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly/openWorld annotations, the description discloses what is returned field-by-field, what is deliberately withheld (phone, email, WhatsApp), and a non-obvious presentation rule about only naming verified checks and never flagging a missing one. This is exactly the kind of behavioral context annotations cannot carry.

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 return payload is front-loaded, followed by exclusions, presentation guidance, and next-step routing, and each sentence carries distinct information. It is on the long side, but no sentence is filler.

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?

With no output schema, the description fully compensates by enumerating the returned fields and the intentionally omitted contact data, plus the downstream tool for starting a task. An agent has everything needed to call and use the result correctly.

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% and the schema already documents the id and the ProSite-slug fallback, so the description adds little new parameter meaning beyond restating provenance. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (Fetch) and resource (the full public profile of one Muovi professional), scoped to a single entity, which cleanly separates it from muovi_search_professionals. It even names the upstream source of the id, so an agent knows exactly which tool produces the input.

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?

It explains the id's provenance (muovi_search_professionals) and routes the next step to muovi_create_task_link / muovi_create_task_draft with the same id, which is clear contextual guidance. It does not state an explicit when-not-to-use case, so it stops short of the top tier.

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 one Muovi professional by the id from muovi_search_professionals, 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 not 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.

NameRequiredDescriptionDefault
idYesThe professional's `id` from `muovi_search_professionals`. A ProSite slug from an older link is also accepted.
limitNoMaximum number of reviews per page (default 20, max 50).
offsetNoZero-based offset into the review list for pagination.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false), so the bar is lower, and the description clears it by disclosing sort order, pagination, and a privacy behavior an agent would otherwise not anticipate (surnames are redacted to 'María G.'). It does not state rate limits or empty-state behavior, but that is minor against the annotation coverage.

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?

Two sentences, front-loaded with the operation and resource, then the derived-`id` routing rule before the field inventory. The field enumeration is long but earns its place because there is no output schema. Minor density cost from listing six fields in a single sentence.

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?

With no output schema, the description carries the return-value burden and does so explicitly: rating range, optional title/comment, reduced author name, author role, service category, and ISO created_at. Combined with the id-sourcing rule and pagination, an agent has everything needed to call and interpret this 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 description coverage is 100%, so `id`, `limit` (default 20, max 50), and `offset` are already fully documented in the schema, and the description adds no syntax beyond that. The only extra nuance, the accepted ProSite slug, is duplicated from the schema rather than expanded. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb and resource ('Fetch paginated reviews for one Muovi professional'), names the ordering (most-recent first), and pins the resource identifier to the sibling tool that produces it. An agent can distinguish this from muovi_get_professional or muovi_search_professionals without opening any schema.

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?

Gives an explicit use case ('surface social proof when recommending a professional') and ties the `id` to muovi_search_professionals, which routes the agent correctly. It stops short of stating when NOT to use it (e.g., when you only need aggregate rating, which muovi_get_professional may supply), so it is clear context without exclusions.

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

muovi_get_service_requirementsGet service requirementsA
Read-only
Inspect

List the fields Muovi takes for one service, to read before calling muovi_create_task_draft. Pass a service_slug from muovi_list_services. Each slot has a key, the question in Spanish (question_es), a type, the accepted options for a choice, a value_format saying what to send, whether it is required, and an ask_if condition when it only applies after another answer. Collect every required slot, asking one question per message and waiting for the answer before asking the next. A draft whose urgency is flexible is complete without the date. The other slots are optional: do not ask them as a list; when what the person has told you, at any point in the conversation, gives an optional slot's value, send it in slots as well as writing it in description. Also ask what a professional would need to quote this specific job, skip anything the person already said, and write those details into the description of muovi_create_task_draft; no list of job questions is prescribed. Send the answers back keyed by slot key in the slots argument of muovi_create_task_draft. The person confirms the address on Muovi's map after opening the draft link. photo_policy says whether photos help; photos are added by the person on Muovi, not through this server. Read-only.

NameRequiredDescriptionDefault
service_slugYesThe service slug (from `muovi_list_services`), e.g. "plomeria".

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, and 'Read-only.' is consistent with them. Beyond that it discloses genuinely useful behavior: photos are added by the person on Muovi (not through this server), the address is confirmed on Muovi's map, and `photo_policy` indicates whether photos help. It stops short of describing any rate limits or error behavior, and much of the text is workflow rather than tool behavior.

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

Conciseness3/5

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

Purpose and routing are front-loaded, but the body sprawls across several concerns (slot field anatomy, collection protocol, urgency exception, photo policy, address confirmation) without separation, and repeats the `slots`/`description` destination more than once. Every idea is relevant, but the framing as one long paragraph makes it harder to scan.

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?

There is no output schema, and the description compensates by enumerating the returned slot shape (`key`, `question_es`, `type`, `options`, `value_format`, `required`, `ask_if`) and the `photo_policy` field. Combined with the routing to `muovi_create_task_draft` and the field-validation guidance, an agent has everything needed to call and consume this 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?

A single parameter with 100% schema coverage and an example value in the schema gives a baseline of 4. The description adds that the slug must come from `muovi_list_services`, which is the one piece of selection meaning the schema string alone doesn't convey.

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 first sentence gives a specific verb and resource ('List the fields Muovi takes for one service') and explicitly positions it relative to siblings by naming `muovi_create_task_draft` as its consumer and `muovi_list_services` as the source of the slug. An agent can distinguish it from every other muovi_* tool without opening a schema.

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?

Explicit sequencing is given: read this before calling `muovi_create_task_draft`, obtain the slug from `muovi_list_services`, ask one question per message and wait for the answer, and treat `flexible` urgency as complete without a date. It also states what not to do (don't ask optional slots as a list) and where the address/photo steps live.

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, non-destructive), and the description adds real behavioral context: slugs are stable, the response nests neighborhoods under cities, and each entity exposes slug + name. It doesn't mention pagination or what happens for unsupported locations, but for a fixed catalog read that 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 tight sentences, front-loaded with what is returned and followed by the slug contract and the call condition. No filler; every sentence carries information an agent needs.

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 exists, so the description carries the return-shape burden and does so: it names the city fields (slug, name), the nested neighborhood fields, and the stability guarantee. For a zero-param read tool this is complete enough to call and consume correctly.

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?

Zero-parameter tool, so the baseline is 4. The description goes further by explaining that the returned slug fields are the exact values expected by the `city` and `neighborhood` parameters of muovi_search_professionals, which links output semantics to downstream parameter use.

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?

States a specific verb and resource ('List every Argentine city Muovi serves') plus the nesting structure (active neighborhoods under each city). A reader immediately knows this is a location-taxonomy lookup and can distinguish it from siblings like muovi_search_professionals or muovi_list_services.

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 the triggering condition: 'Call this when you need to resolve a user's location wording to a Muovi city or neighborhood slug.' It also names the downstream tools that consume the slugs, so the agent knows this is a prerequisite step rather than a terminal call.

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 — home trades (electricidad, plomería, gas, pintura, carpintería, cerrajería, albañilería, herrería, techista), limpieza, jardinería, aire acondicionado, and moving/hauling: mudanzas (movers) and fletes (light freight/hauling). Every listed professional is identity-verified and reviewed, with on-platform payment and dispute resolution. 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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds real context beyond them — a stable slug, the requires_matricula license flag, and ecosystem guarantees (identity-verified professionals, on-platform payment, dispute resolution) — but says nothing about auth needs, caching, or rate limits.

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?

Front-loaded with the verb and scope, then return shape, then the usage trigger — good ordering with no boilerplate. The long parenthetical enumeration of Spanish trade names is useful for slug mapping but is the one place the sentence sprawls.

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?

There is no output schema, and the description compensates by naming the fields returned (slug, name, optional description, requires_matricula). Combined with the zero-parameter schema and the sequencing guidance, an agent has everything needed to call this correctly.

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 tool takes zero parameters, so the baseline is 4. The description does add cross-tool meaning by explaining that each entry's slug is the value to pass as the `service` parameter on muovi_search_professionals and muovi_create_task_link, which is more than an empty schema conveys.

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?

Specific verb+resource (list every service category Muovi supports) with an explicit geographic scope (Argentina) and an enumerated inventory of the categories returned. It is clearly distinguishable from siblings like muovi_list_cities or muovi_search_professionals, which operate on cities and professionals rather than the service taxonomy.

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?

Ends with an explicit sequencing rule: 'Call this first when you need to map a user's natural-language request to a Muovi service slug.' It also names the downstream consumers of the returned slug (muovi_search_professionals, muovi_create_task_link), so the agent knows both when to call it and what it enables.

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

Find up to 5 Muovi professionals per page for one service in one barrio. Both service (a slug from muovi_list_services) and neighborhood (a barrio slug from muovi_list_cities) are required: if the person has not said which service they need and in which barrio, ask them before searching. Every professional returned has a coverage area that includes the searched barrio, and match in the response names the service, barrio and city searched: present the results as professionals who work in that barrio. Results list professionals who declare the searched trade first, ordered by review score, with verified identity, background check and a matrícula or diploma counting toward it; professionals whose registered business is in another trade come last. Each result has a display_name, a headline, a photo (avatar_url), one rating and one review_count, verifications, up to 3 portfolio image URLs, an id and a profile_url, the professional's public profile page on Muovi; no phone, email or WhatsApp is returned. Where the client shows Muovi's card view, each professional's photo and portfolio images appear in it. Do not write images or image markdown: write a short text summary of each professional with the name, the headline, the rating with its review count and a link to profile_url, leaving out a field that is empty; for each professional, name only the checks Muovi has verified among identity, matrícula, background check (antecedentes) and phone, and never say that one is missing or not verified. After showing the results, offer the person two choices: a task for one professional (muovi_create_task_link, or muovi_create_task_draft with professional_id, passing that result's id), or a general request to get offers from several professionals (muovi_create_task_draft without a professional). When the person asks for more professionals and pagination.has_more is true, call again with the same arguments and the next page (up to 3). When has_more is false there is no next page: do not say Muovi has no more professionals; offer a general request (muovi_create_task_draft without a professional) so other professionals can send offers. Never state how many professionals exist. Use muovi_get_professional with the id for the full profile.

NameRequiredDescriptionDefault
cityNoOptional. City slug (e.g. "caba"), needed only when a barrio slug exists in more than one city.
pageNoOptional. 1 (default), 2 or 3: the next 5 professionals of the same search. Pass the next page only when the previous response had `pagination.has_more` true.
serviceYesRequired. Service slug (e.g. "plomeria"), from `muovi_list_services`.
neighborhoodYesRequired. Barrio slug (e.g. "palermo"), from `muovi_list_cities`.
has_matriculaNoWhen true, only return professionals with a verified matrícula on file (electricians, gas fitters, etc.).
verified_identityNoWhen true, only return professionals whose identity Muovi has verified.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already establish read-only and open-world, and the description adds substantial context beyond them: the 3-page pagination ceiling, result ordering (declared trade first, then review score, other-trade businesses last), the exact return fields, and the explicit absence of phone/email/WhatsApp. It also discloses behavioral constraints an agent could otherwise violate, such as never stating how many professionals exist and never saying a check is unverified.

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?

Purpose and preconditions are front-loaded and most of the length is justified because there is no output schema, so field and ordering details must live here. It is nonetheless a dense block that mixes invocation guidance with presentation policy, and a few lines (e.g. how the card view renders photos) add little for the calling agent.

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?

With no output schema and a 6-parameter search, the description carries the full burden and does: required inputs, result fields, ordering, pagination semantics, presentation rules and next-step tool routing. An agent has everything needed to call it correctly and to handle both the has_more and no-more-results cases.

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% and the schema already documents every parameter, including the slug sources (muovi_list_services, muovi_list_cities) and the page/has_more relationship. The description largely restates those dependencies rather than adding new meaning, and it never mentions the has_matricula or verified_identity filters or when to use the optional city override, so it does not exceed the baseline.

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?

Opens with a specific verb, resource, page size and scope: 'Find up to 5 Muovi professionals per page for one service in one barrio.' It also names the sibling boundary explicitly at the end ('Use muovi_get_professional with the id for the full profile'), so an agent can distinguish search from profile retrieval without opening either schema.

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?

Gives explicit when-to-use rules and preconditions: both slugs are required and the agent must ask the user which service and barrio if unspecified. It also routes to concrete alternatives after results (muovi_create_task_link, muovi_create_task_draft with or without professional_id) and handles the has_more=false case with a named fallback rather than a dead end.

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. 1 tool update
    • Changedmuovi_create_task_draft1 field changed
      • changedInput schema / properties / description / description
        Previous value: -"What the person needs done, in their words: 20 to 2000 characters."New value: +"What the person needs done, in their words, with the job details a professional would need to quote it: 20 to 2000 characters."
  2. 1 tool update
    • Changedmuovi_search_professionals1 field changed
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Optional. 1 (default), 2 or 3: the next 5 professionals of the same search. Pass the next page only when the previous response had `pagination.has_more` true.",
        +  "maximum": 3,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  3. 6 tool updates
    • Addedmuovi_create_task_draft
    • Changedmuovi_create_task_link5 fields changed
      • addedInput schema / properties / professional_id
        Added value: +{
        +  "description": "The `id` of a professional from `muovi_search_professionals`.",
        +  "maxLength": 36,
        +  "minLength": 36,
        +  "type": "string"
        +}
      • removedInput schema / properties / professional_slug
        Removed value: -{
        -  "description": "The professional's URL-safe slug (from `muovi_search_professionals` or `muovi_get_professional`).",
        -  "minLength": 1,
        -  "pattern": "^[a-z0-9][a-z0-9.\\-]*$",
        -  "type": "string"
        -}
      • changedInput schema / properties / service_slug / description
        Previous value: -"The service slug to pre-fill in the task flow (from `muovi_list_services`)."New value: +"The service slug to start the task with (from `muovi_list_services`)."
      • changedInput schema / properties / service_slug / pattern
        Previous value: -"^[a-z0-9][a-z0-9.\\-]*$"New value: +"^[a-z0-9][a-z0-9_-]{0,63}$"
      • changedInput schema / required
        Previous value: -[
        -  "professional_slug",
        -  "service_slug"
        -]New value: +[
        +  "professional_id",
        +  "service_slug"
        +]
    • Changedmuovi_get_professional3 fields changed
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "The professional's `id` from `muovi_search_professionals`. A ProSite slug from an older link is also accepted.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / slug
        Removed value: -{
        -  "description": "The professional's URL-safe slug (e.g. \"juan-p-electricista-caba\"). Obtain from `muovi_search_professionals`.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "slug"
        -]New value: +[
        +  "id"
        +]
    • Changedmuovi_get_reviews3 fields changed
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "The professional's `id` from `muovi_search_professionals`. A ProSite slug from an older link is also accepted.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / slug
        Removed value: -{
        -  "description": "The professional's URL-safe slug. Obtain from `muovi_search_professionals` or `muovi_get_professional`.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "slug"
        -]New value: +[
        +  "id"
        +]
    • Addedmuovi_get_service_requirements
    • Changedmuovi_search_professionals10 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"City slug (e.g. \"caba\"). Matches `City.slug` in the catalog."New value: +"Optional. City slug (e.g. \"caba\"), needed only when a barrio slug exists in more than one city."
      • changedInput schema / properties / has_matricula / description
        Previous value: -"When true, only return pros with a verified professional matrícula on file (electricians, gas fitters, etc.)."New value: +"When true, only return professionals with a verified matrícula on file (electricians, gas fitters, etc.)."
      • removedInput schema / properties / limit
        Removed value: -{
        -  "description": "Maximum number of results per page (default 20, max 50).",
        -  "maximum": 50,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / min_rating
        Removed value: -{
        -  "description": "Minimum blended average rating, 0-5 inclusive.",
        -  "maximum": 5,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / min_reviews
        Removed value: -{
        -  "description": "Minimum blended review count.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • changedInput schema / properties / neighborhood / description
        Previous value: -"Neighborhood slug (e.g. \"palermo\"). Matches `Neighborhood.slug` in the catalog."New value: +"Required. Barrio slug (e.g. \"palermo\"), from `muovi_list_cities`."
      • removedInput schema / properties / offset
        Removed value: -{
        -  "description": "Zero-based offset into the result set for pagination.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • changedInput schema / properties / service / description
        Previous value: -"Service slug (e.g. \"electricidad\"). Matches `Service.slug` in the catalog."New value: +"Required. Service slug (e.g. \"plomeria\"), from `muovi_list_services`."
      • changedInput schema / properties / verified_identity / description
        Previous value: -"When true, only return pros whose identity has been verified by Muovi."New value: +"When true, only return professionals whose identity Muovi has verified."
      • addedInput schema / required
        Added value: +[
        +  "service",
        +  "neighborhood"
        +]
  4. 6 tool updates
    • 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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Karrito - the digital catalog builder for WhatsApp sellers in LATAM, enabling AI assistants to manage store operations like products, orders, discounts, reviews, shipping, and analytics.
    30
    31 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for managing Argentine judicial cases (expedientes) from portals like PJN, MEV, CABA, and custom cases, supporting CRUD operations, synchronization, and management of tasks, fees, and alerts.
    24
    6 npm
    MIT
  • A
    license
    B
    quality
    C
    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
    9
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.