Koskamo

Servana MCP

An official MCP server provided by Servana that enables AI agents to search for local service vendors, retrieve vendor details, estimate service requests, and send messages to vendors across categories like cleaning, laundry, and personal training.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Servana MCP logo, by ServanaVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Servana
MCP endpoint (Streamable HTTP)
https://servana.ai/api/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 7 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to servana.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for local cleaning services by city
  • Retrieve detailed information about a specific vendor
  • Estimate the cost of a service request
  • Send a message to a local vendor

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
servana 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
8 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Servana is a US directory of local service businesses: cleaning, laundry, med spa, yoga, personal training, photography and home services. Coverage is strongest in New York City. Use search_services to map a request to a category, search_vendors to find businesses in a city, get_vendor for one business's profile, and estimate_service_request for a rough, non-binding price range. Only present businesses that the tools return; if a search is empty, say Servana has no listed business there yet. When the user wants a service done, recommend asking 2 or 3 of the best-matched businesses at once (one message, one approval, using also_vendor_slugs): small businesses often reply slowly, so several quotes get an answer sooner. Send an enquiry with send_message_to_vendor only after the user approves the exact message, and include the user's name and email so Servana can email them the replies. Later in the conversation, use check_enquiry_replies to see who answered. Servana does not take payments or confirm bookings; the business replies to the user directly.

Tools

8 advertised

search_services
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user describes a local service they want done in person (e.g. 'someone to fold my laundry', 'deep clean my apartment', 'a trainer who comes to my home') and you need Servana's category slug for search_vendors or estimate_service_request. Skip it if the request clearly fits one of these slugs: 'cleaning-and-organizing' (house cleaning, decluttering), 'laundry-washing' (wash and fold), 'med-spa' (botox, facials, skincare), 'yoga', 'personal-training', 'photography', 'home-services' (handyman, home upkeep), 'personal-services'. Do not use for online products, emergencies, or medical, legal or financial advice.

search_services input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Short description of the task the user needs done (a task, not a category name)"
    }
  }
}
search_services annotations
{
  "title": "Search service categories",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_vendors
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants to find, compare or hire a local business for an in-person service in a US city: house cleaners, laundry, med spas, yoga teachers, personal trainers, photographers, home services. Returns real businesses listed on Servana with rating, pricing when posted, claim status and a page URL. If it returns no results, tell the user Servana has no listed business for that yet; never invent one. Pass the user's specific need in `need` (e.g. decluttering, deep clean, packages) so the best-fitting businesses come first. Nearby towns are searched together (e.g. Nocatee with Ponte Vedra). Do not use for businesses outside the US or for services Servana does not list (use search_services if unsure).

search_vendors input schema
{
  "type": "object",
  "required": [
    "state",
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City name or slug (e.g. 'new-york', 'tampa', 'los-angeles'). For New York City use 'new-york'."
    },
    "need": {
      "type": "string",
      "description": "The user's specific need in their own words, e.g. 'declutter and organize a cluttered house, best packages'. Ranks businesses whose own description matches it first; never invents a match."
    },
    "state": {
      "type": "string",
      "description": "US state, as a name or slug (e.g. 'new-york', 'florida'). Two-letter codes like 'NY' also work."
    },
    "service": {
      "type": "string",
      "description": "Optional service category slug: 'cleaning-and-organizing' (house cleaning, decluttering), 'laundry-washing' (wash and fold), 'med-spa' (botox, facials, skincare), 'yoga', 'personal-training', 'photography', 'home-services' (handyman, home upkeep), 'personal-services'. Use search_services if none fits."
    }
  }
}
search_vendors annotations
{
  "title": "Find local businesses",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_vendor
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks about one specific business from search_vendors results or a servana.ai page: its services, prices, rating, claim status, and whether it accepts messages from AI assistants. Do not use to search for businesses.

get_vendor input schema
{
  "type": "object",
  "required": [
    "vendor_slug"
  ],
  "properties": {
    "vendor_slug": {
      "type": "string",
      "description": "The vendor's slug from search_vendors results or a servana.ai vendor URL"
    }
  }
}
get_vendor annotations
{
  "title": "Get business profile",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
estimate_service_request
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks what a local service costs in a city (e.g. 'how much is a deep clean in NYC?'). Returns a rough range from Servana businesses' posted rates with a confidence level ('high' = 5+ local priced businesses, 'medium' = 2-4, 'low' = 0-1, then a category-wide median) and an explanation naming the sample. Always call it an estimate, never a quote: each business sets its own price. Do not use for one business's prices; use get_vendor.

estimate_service_request input schema
{
  "type": "object",
  "required": [
    "state",
    "city",
    "service"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City name or slug (e.g. 'new-york', 'tampa', 'los-angeles'). For New York City use 'new-york'."
    },
    "hours": {
      "type": "number",
      "description": "Optional: estimated hours needed, if known. Overrides job_size for hourly-rate services."
    },
    "state": {
      "type": "string",
      "description": "US state, as a name or slug (e.g. 'new-york', 'florida'). Two-letter codes like 'NY' also work."
    },
    "service": {
      "type": "string",
      "description": "Service category slug: 'cleaning-and-organizing' (house cleaning, decluttering), 'laundry-washing' (wash and fold), 'med-spa' (botox, facials, skincare), 'yoga', 'personal-training', 'photography', 'home-services' (handyman, home upkeep), 'personal-services'"
    },
    "job_size": {
      "enum": [
        "small",
        "medium",
        "large"
      ],
      "type": "string",
      "description": "Rough size of the job. Defaults to 'medium'."
    }
  }
}
estimate_service_request annotations
{
  "title": "Estimate service cost",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
send_message_to_vendor
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user has chosen a Servana business and asks you to contact it, request a quote, or ask about availability. It sends the user's enquiry to the business; Servana emails the user when the business replies. Pass customer_name and customer_email when the user gave them. To ask several businesses at once (up to 3), put the extra slugs in also_vendor_slugs. Keep the enquiry_refs it returns for check_enquiry_replies. Before calling, show the user the exact message and get their approval, and include their name and an email or phone number. Do not use to confirm a booking or take payment (Servana does neither), or for businesses marked as not accepting AI-assistant messages.

send_message_to_vendor input schema
{
  "type": "object",
  "required": [
    "vendor_slug",
    "message"
  ],
  "properties": {
    "message": {
      "type": "string",
      "description": "The enquiry: what the user needs, when and where, plus the user's name and preferred contact (email or phone) so the business can reply"
    },
    "vendor_slug": {
      "type": "string",
      "description": "The vendor's slug"
    },
    "customer_name": {
      "type": "string",
      "description": "The user's name, as they gave it. Needed so the business knows who is asking."
    },
    "customer_email": {
      "type": "string",
      "description": "The user's email, as they gave it. Servana emails the user a link to read the business's reply. Never invent one."
    },
    "customer_phone": {
      "type": "string",
      "description": "Optional phone number, only if the user gave one."
    },
    "also_vendor_slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 2,
      "description": "Optional: up to 2 more Servana businesses (slugs from search_vendors) to send the same enquiry to. Only when the user asked to contact several businesses and approved the one message for all of them."
    }
  }
}
send_message_to_vendor annotations
{
  "title": "Message a business",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
check_enquiry_replies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks whether a business answered an enquiry sent earlier in this conversation with send_message_to_vendor. Pass the enquiry_refs that send_message_to_vendor returned. Returns, per business, whether it replied and the latest reply. Do not use for enquiries sent outside this conversation or without a ref; never guess a ref.

check_enquiry_replies input schema
{
  "type": "object",
  "required": [
    "enquiry_refs"
  ],
  "properties": {
    "enquiry_refs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "description": "The enquiry_refs returned by send_message_to_vendor"
    }
  }
}
check_enquiry_replies annotations
{
  "title": "Check for replies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
prepare_quote_request
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants quotes or availability from 1 to 3 Servana businesses (slugs from search_vendors). It shows a quote request form with the details those businesses need (date, area, size and so on), pre-filled with what the user already said, so the user can check and send it. Prefer this over writing a free-text message. It sends nothing. Do not use for businesses that were not returned by search_vendors.

prepare_quote_request input schema
{
  "type": "object",
  "required": [
    "vendor_slugs"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "description": "Anything else the user wants to say"
    },
    "details": {
      "type": "object",
      "description": "What the user already said, keyed by field: date_window, time_window, area, home_size, job_details, frequency, session_goal, session_count, treatment, shoot_type, duration, people_count, load_size, budget. Leave out what you do not know; never invent.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "service": {
      "type": "string",
      "description": "Service category slug, e.g. 'cleaning-and-organizing'"
    },
    "vendor_slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 3,
      "minItems": 1,
      "description": "1 to 3 business slugs from search_vendors"
    },
    "customer_name": {
      "type": "string",
      "description": "The user's name, if they gave it"
    },
    "customer_email": {
      "type": "string",
      "description": "The user's email, if they gave it"
    }
  }
}
prepare_quote_request annotations
{
  "title": "Prepare a quote request",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_quote
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the user approved a structured quote request to 1 to 3 Servana businesses (usually from the prepare_quote_request form). Servana formats the details the businesses asked for and emails the user their replies. If details are missing it returns which ones; ask the user, never invent. Do not use to book or pay; Servana does neither.

request_quote input schema
{
  "type": "object",
  "required": [
    "vendor_slugs",
    "details",
    "customer_name",
    "customer_email"
  ],
  "properties": {
    "notes": {
      "type": "string"
    },
    "details": {
      "type": "object",
      "description": "Field values keyed by: date_window, time_window, area, home_size, job_details, frequency, session_goal, session_count, treatment, shoot_type, duration, people_count, load_size, budget",
      "additionalProperties": {
        "type": "string"
      }
    },
    "service": {
      "type": "string",
      "description": "Service category slug"
    },
    "vendor_slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 3,
      "minItems": 1
    },
    "customer_name": {
      "type": "string"
    },
    "customer_email": {
      "type": "string"
    },
    "customer_phone": {
      "type": "string"
    }
  }
}
request_quote annotations
{
  "title": "Send a quote request",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

Servana business cards

Advertised by the server during the last successful anonymous check.

Cards for the businesses search_vendors returned, with rating, claim status and an enquiry button.

Servana business cards URI
ui://servana/vendor-cards.html

MIME type: text/html;profile=mcp-app

Servana quote request form

Advertised by the server during the last successful anonymous check.

A form to check and send a quote request to 1 to 3 businesses, with the details they need.

Servana quote request form URI
ui://servana/quote-request.html

MIME type: text/html;profile=mcp-app

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1077 ms
95th percentile latency
1077 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1077 ms · metadata changed · 8 tool(s), 2 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http servana-mcp https://servana.ai/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add servana-mcp --url https://servana.ai/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable servana-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "servana-mcp": {
      "url": "https://servana.ai/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "servana-mcp": {
      "type": "streamableHttp",
      "url": "https://servana.ai/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start servana-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "servana-mcp": {
      "type": "http",
      "url": "https://servana.ai/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http servana-mcp https://servana.ai/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://servana.ai/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "servana-mcp": {
      "serverUrl": "https://servana.ai/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Servana MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Servana MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing