Find local service providers — plumbers, tutors, translators — and estimate provider earnings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Look up a quote and return a deep link to the Tewdy app where the user can confirm acceptance and proceed to payment. This tool deliberately does not accept or pay — quote acceptance and payment confirmation always happen on tewdy.com via the deep link, not in chat. Requires authentication.
Look up a quote and return a deep link to the Tewdy app where the user can confirm acceptance and proceed to payment. This tool deliberately does not accept or pay — quote acceptance and payment confirmation always happen on tewdy.com via the deep link, not in chat. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
},
"additionalProperties": false
}Get aggregated price ranges for a service category, optionally filtered by location. Prefers transacted prices (accepted quotes) when at least 5 samples exist; otherwise falls back to listed (asking) prices from provider capability pricing. Returns median, p25, p75, min, max, sample size, and currency.
| Argument | Type | Description |
|---|---|---|
| category* | string | |
| currency | string | |
| location | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category"
],
"properties": {
"category": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3
},
"location": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
}Estimate weekly and monthly earnings for a Tewdy provider in a given category. Uses listed hourly rates from existing providers as the baseline and projects earnings under three utilisation scenarios (40%/60%/80%). Returns ranges, not guarantees.
| Argument | Type | Description |
|---|---|---|
| category* | string | |
| currency | string | |
| location | string | |
| hours_per_week* | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category",
"hours_per_week"
],
"properties": {
"category": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3
},
"location": {
"type": "string",
"maxLength": 200
},
"hours_per_week": {
"type": "number",
"maximum": 80,
"minimum": 1
}
},
"additionalProperties": false
}List the authenticated user's quote requests with current status (open / closed / cancelled / expired) and quote-response counts. Read-only — no state changes. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer | |
| status | string | |
| sort_by | string | |
| sort_order | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 1000,
"minimum": 0
},
"status": {
"enum": [
"open",
"closed",
"cancelled",
"expired"
],
"type": "string"
},
"sort_by": {
"enum": [
"createdAt",
"expiresAt",
"quotesReceived"
],
"type": "string"
},
"sort_order": {
"enum": [
"ASC",
"DESC"
],
"type": "string"
}
},
"additionalProperties": false
}Look up the full public profile for a Tewdy provider. Accepts either a Tewdy UUID (returned by search_providers as `id`) or a tewdyTag handle (e.g. "marcus-chen", returned as `tewdyTag`). Returns name, jobTitle, bio, profile picture, languages, capability pricing, ratings, verification status, and tewdyTag.
| Argument | Type | Description |
|---|---|---|
| provider_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"provider_id"
],
"properties": {
"provider_id": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
},
"additionalProperties": false
}List the service categories Tewdy supports (plumbing, translation, tutoring, cleaning, etc.). Returns slug, name, description, and businessType for each. Use this to map a free-text user request to a known category before calling search_providers. Optional business_type filter (e.g. "individual", "company").
| Argument | Type | Description |
|---|---|---|
| business_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"business_type": {
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
}For the authenticated provider, list open quote requests that match the provider's capabilities and service area. Optional filters: category, location radius, budget range, urgency. Read-only. Use this to find work to quote on. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lng | number | |
| limit | integer | |
| offset | integer | |
| urgency | string | |
| radius_km | number | |
| max_budget | number | |
| min_budget | number | |
| category_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 1000,
"minimum": 0
},
"urgency": {
"enum": [
"urgent",
"normal",
"flexible"
],
"type": "string"
},
"radius_km": {
"type": "number",
"maximum": 500,
"minimum": 0.5
},
"max_budget": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"min_budget": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"category_id": {
"type": "string",
"maxLength": 120
}
},
"additionalProperties": false
}Send a chat message into an existing Tewdy thread (typically created when a quote was submitted or accepted). The chat_id is the same id surfaced by get_my_requests or accept_quote. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| chat_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chat_id",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"chat_id": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
},
"additionalProperties": false
}Compose a Tewdy quote request from the user's description. Returns a deep link to the Tewdy app with all fields pre-filled; the user reviews and clicks publish to actually post the request. This tool deliberately does not auto-post — quote acceptance and payment confirmation always happen on tewdy.com via deep link, never in chat. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| urgency | string | |
| category | string | |
| currency | string | |
| budget_max | number | |
| budget_min | number | |
| description* | string | |
| location_name | string | |
| preferred_date | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"description"
],
"properties": {
"urgency": {
"enum": [
"urgent",
"normal",
"flexible"
],
"type": "string"
},
"category": {
"type": "string",
"maxLength": 120
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3
},
"budget_max": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"budget_min": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"description": {
"type": "string",
"maxLength": 2000,
"minLength": 10
},
"location_name": {
"type": "string",
"maxLength": 200
},
"preferred_date": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}Search Tewdy for service providers (plumbers, translators, tutors, cleaners, etc.) by category and/or location. Returns a ranked list including name, rating, response time, and Tewdy profile tag.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lng | number | |
| limit | integer | |
| query | string | |
| category | string | |
| radiusKm | number | |
| locationName | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200
},
"category": {
"type": "string",
"maxLength": 120
},
"radiusKm": {
"type": "number",
"maximum": 500,
"minimum": 0.5
},
"locationName": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
}Submit a quote on an open quote request. The provider sets the estimated price, optional duration and availability, and a short message to the requester. The quote is not a financial commitment — the requester still has to accept (which itself goes through a deep-link confirmation on tewdy.com). Requires authentication.
| Argument | Type | Description |
|---|---|---|
| message* | string | |
| currency* | string | |
| business_id | string | |
| provider_type* | string | |
| estimated_price* | number | |
| quote_request_id* | string | |
| terms_conditions | string | |
| availability_date | string | |
| estimated_duration | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote_request_id",
"provider_type",
"estimated_price",
"currency",
"message"
],
"properties": {
"message": {
"type": "string",
"maxLength": 2000,
"minLength": 10
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3
},
"business_id": {
"type": "string",
"maxLength": 120
},
"provider_type": {
"enum": [
"individual",
"business"
],
"type": "string"
},
"estimated_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"quote_request_id": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"terms_conditions": {
"type": "string",
"maxLength": 2000
},
"availability_date": {
"type": "string",
"maxLength": 40
},
"estimated_duration": {
"type": "string",
"maxLength": 120
}
},
"additionalProperties": false
}