AI search made easy: an open platform to find businesses, bypassing websites.
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.
Get one entry's brand kit, as its owner declared it: logo, pictures, colours, fonts and corners. For showing or building something in the entry's own look.
Which entry: its ID or slug, from search or get_entry.
The language to answer in, when the entry has it.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http registry https://mcp.daawid.com/mcp
Get one entry's brand kit, as its owner declared it: logo, pictures, colours, fonts and corners. For showing or building something in the entry's own look.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| language | string | The language to answer in, when the entry has it. |
{
"type": "object",
"required": [
"entry"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"language": {
"type": "string",
"description": "The language to answer in, when the entry has it."
}
}
}Show the user one whole entry of Daawid's registry, by its ID, slug or a website its owner proved control of (`domain`): what it offers with prices, whether it takes on work, hours, contact details, policies and legal details, as its owner declared them. Apps show it as a card. Not needed before a request, whose own card names the entry.
| Argument | Type | Description |
|---|---|---|
| id | string | Its ID, from search: "ent_…". |
| slug | string | Its slug, the end of its address: "example-bakery". |
| domain | string | A website its owner proved control of. |
| language | string | The language the user writes in: "en". The answer and its card come in it, when the entry has it. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Its ID, from search: \"ent_…\"."
},
"slug": {
"type": "string",
"description": "Its slug, the end of its address: \"example-bakery\"."
},
"domain": {
"type": "string",
"description": "A website its owner proved control of."
},
"language": {
"type": "string",
"description": "The language the user writes in: \"en\". The answer and its card come in it, when the entry has it."
}
}
}Read only some parts of an entry, with no card: its actions before a request, say, or its hours. To show the user the entry, use get_entry.
| Argument | Type | Description |
|---|---|---|
| id | string | Its ID, from search: "ent_…". |
| slug | string | Its slug, the end of its address: "example-bakery". |
| domain | string | A website its owner proved control of. |
| language | string | The language the user writes in: "en". The answer comes in it, when the entry has it. |
| sections* | array | The parts of the entry to read. |
{
"type": "object",
"required": [
"sections"
],
"properties": {
"id": {
"type": "string",
"description": "Its ID, from search: \"ent_…\"."
},
"slug": {
"type": "string",
"description": "Its slug, the end of its address: \"example-bakery\"."
},
"domain": {
"type": "string",
"description": "A website its owner proved control of."
},
"language": {
"type": "string",
"description": "The language the user writes in: \"en\". The answer comes in it, when the entry has it."
},
"sections": {
"type": "array",
"items": {
"enum": [
"facts",
"offerings",
"capacity",
"hours",
"contact",
"actions",
"policies",
"credentials",
"faqs",
"voice",
"brand",
"legal"
],
"type": "string"
},
"maxItems": 12,
"minItems": 1,
"description": "The parts of the entry to read."
}
}
}List what one entry of Daawid's registry offers, with prices and lead times, as its owner declared them: all of it, or what matches a few words, a category or an audience.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| limit | integer | |
| query | string | Only offerings with these words: "kitchen". |
| cursor | string | nextCursor of the previous page. |
| audience | string | Only offerings for this audience, and those for everyone. |
| category | string | Only this category ("trades.carpentry") or sector ("trades"). |
| language | string | The language the user writes in: "en". The answer comes in it, when the entry has it. |
{
"type": "object",
"required": [
"entry"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Only offerings with these words: \"kitchen\"."
},
"cursor": {
"type": "string",
"description": "nextCursor of the previous page."
},
"audience": {
"enum": [
"consumer",
"business"
],
"type": "string",
"description": "Only offerings for this audience, and those for everyone."
},
"category": {
"type": "string",
"description": "Only this category (\"trades.carpentry\") or sector (\"trades\")."
},
"language": {
"type": "string",
"description": "The language the user writes in: \"en\". The answer comes in it, when the entry has it."
}
}
}Check where a request made through Daawid is: waiting for the user on Daawid's page, sent, delivered or opened. It never shows what the request says or who sent it.
| Argument | Type | Description |
|---|---|---|
| runId* | string | The request's ID ("run_…"), from the tool that made it. |
{
"type": "object",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"description": "The request's ID (\"run_…\"), from the tool that made it."
}
}
}Ask an entry for an appointment for the user, such as a visit, a consultation or a demo. It is a request: the entry's owner confirms a time, or suggests another. Only for entries whose actions (get_entry_sections) list request_appointment. Ask the user for their name and email address. Nothing is sent by this call: the user sends it on Daawid's page, with a code Daawid emails them. Give the user the link from the answer.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| answers | object | Answers to the action's own questions (get_entry_sections), by their keys. |
| purpose* | string | What it is for, in the user's words and language. Don't add what they didn't say, such as features from the entry. |
| actionId | string | Which of its actions of this kind (get_entry_sections), when it has several. |
| requester* | object | |
| offeringId | string | Which of the entry's offerings (get_entry_sections) it is about, if one. |
| postalCode | string | The postal code, when it is at the user's place or the action asks for one. |
Ask an entry to call the user back, about what they want to talk about, at times that suit them. Only for entries whose actions (get_entry_sections) list request_callback. Ask the user for their name, email address and phone number. Nothing is sent by this call: the user sends it on Daawid's page, with a code Daawid emails them. Give the user the link from the answer.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| topic* | string | What the user wants to talk about, in their words and language. Don't add what they didn't say. |
| answers | object | Answers to the action's own questions (get_entry_sections), by their keys. |
| actionId | string | Which of its actions of this kind (get_entry_sections), when it has several. |
| requester* | object | |
| offeringId | string | Which of the entry's offerings (get_entry_sections) it is about, if one. |
| idempotencyKey | string | Your own key for this request: the same key and details within 24 hours give the same request. |
| preferredTimes |
Ask an entry for a quote for the user: a price for a job they describe. Only for entries whose actions (get_entry_sections) list request_quote. Ask the user for their name and email address, and add a budget only if they give one. Nothing is sent by this call: the user sends it on Daawid's page, with a code Daawid emails them. Give the user the link from the answer.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| budget | object | The most they want to spend, if they say. Ask for the currency; don't assume one. |
| answers | object | Answers to the action's own questions (get_entry_sections), by their keys. |
| actionId | string | Which of its actions of this kind (get_entry_sections), when it has several. |
| requester* | object | |
| offeringId | string | Which of the entry's offerings (get_entry_sections) it is about, if one. |
| postalCode | string | The postal code where the work is, when the user gives it or the action asks for one. |
| description* | string |
Search Daawid's open registry of people, businesses and organizations by what the user needs, such as 'a dentist in Nairobi' or 'a CRM for a small team'. Each result says who it is, where, and whether it takes on work; get_entry shows one to the user, get_entry_sections reads parts of one.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only people, or only organizations. |
| near | any | The place the user asks about, which they named. Entries there or serving it come first, then the nearest. Never coordinates or a street address. |
| limit | integer | |
| query* | string | What the user is looking for, in a few words: "carpenter", "fontanero urgente", "CRM". The place goes in `near`, and what they want to achieve in `outcome`. |
| cursor | string | nextCursor of the previous page. |
| openAt | string | Only entries open at this moment, by their stated hours: "2026-11-06T18:30:00+01:00". Only when the user asks what is open. |
| outcome | string | What the user wants to achieve with it, in a few of their words: "keep track of leads in a small team", "fix a leaking tap today". It helps the best fits come up and leaves nobody out. No names or personal details. |
Send a message to an entry for the user: a question, or anything they want its owner to know. Only for entries whose actions (get_entry_sections) list send_message. Ask the user for their name and email address. Nothing is sent by this call: the user sends it on Daawid's page, with a code Daawid emails them. Give the user the link from the answer.
| Argument | Type | Description |
|---|---|---|
| entry* | string | Which entry: its ID or slug, from search or get_entry. |
| answers | object | Answers to the action's own questions (get_entry_sections), by their keys. |
| message* | string | The message, in the user's words and language. Show it to them; don't add what they didn't say. |
| subject* | string | What the message is about, in a few words. |
| actionId | string | Which of its actions of this kind (get_entry_sections), when it has several. |
| requester* | object | |
| idempotencyKey | string | Your own key for this request: the same key and details within 24 hours give the same request. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
| idempotencyKey |
| string |
| Your own key for this request: the same key and details within 24 hours give the same request. |
| preferredSlots* | array | Times that suit the user: 1 to 5 windows. |
{
"type": "object",
"required": [
"entry",
"requester",
"purpose",
"preferredSlots"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"answers": {
"type": "object",
"description": "Answers to the action's own questions (get_entry_sections), by their keys."
},
"purpose": {
"type": "string",
"description": "What it is for, in the user's words and language. Don't add what they didn't say, such as features from the entry."
},
"actionId": {
"type": "string",
"description": "Which of its actions of this kind (get_entry_sections), when it has several."
},
"requester": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The user's name. Ask them; don't guess."
},
"email": {
"type": "string",
"description": "The user's email address, for the code and the answer. Ask them; don't guess."
},
"phone": {
"type": "string",
"description": "Their phone number with its country code, \"+1 212 555 0123\", if they give it."
},
"language": {
"type": "string",
"description": "The language they write in: \"en\"."
},
"preferredChannel": {
"enum": [
"email",
"phone"
],
"type": "string",
"description": "How they'd like to be answered, if they say."
}
}
},
"offeringId": {
"type": "string",
"description": "Which of the entry's offerings (get_entry_sections) it is about, if one."
},
"postalCode": {
"type": "string",
"description": "The postal code, when it is at the user's place or the action asks for one."
},
"idempotencyKey": {
"type": "string",
"description": "Your own key for this request: the same key and details within 24 hours give the same request."
},
"preferredSlots": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "End: \"2026-11-05T11:00:00+01:00\"."
},
"from": {
"type": "string",
"description": "Start, with the user's UTC offset: \"2026-11-05T09:00:00+01:00\"."
}
}
},
"maxItems": 5,
"minItems": 1,
"description": "Times that suit the user: 1 to 5 windows."
}
}
}| array |
| When a call suits the user: up to 3 windows. Leave out when any time does. |
{
"type": "object",
"required": [
"entry",
"requester",
"topic"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"topic": {
"type": "string",
"description": "What the user wants to talk about, in their words and language. Don't add what they didn't say."
},
"answers": {
"type": "object",
"description": "Answers to the action's own questions (get_entry_sections), by their keys."
},
"actionId": {
"type": "string",
"description": "Which of its actions of this kind (get_entry_sections), when it has several."
},
"requester": {
"type": "object",
"required": [
"name",
"email",
"phone"
],
"properties": {
"name": {
"type": "string",
"description": "The user's name. Ask them; don't guess."
},
"email": {
"type": "string",
"description": "The user's email address, for the code and the answer. Ask them; don't guess."
},
"phone": {
"type": "string",
"description": "The number to call back, with its country code: \"+1 212 555 0123\". Ask them; don't guess."
},
"language": {
"type": "string",
"description": "The language they write in: \"en\"."
},
"preferredChannel": {
"enum": [
"email",
"phone"
],
"type": "string",
"description": "How they'd like to be answered, if they say."
}
}
},
"offeringId": {
"type": "string",
"description": "Which of the entry's offerings (get_entry_sections) it is about, if one."
},
"idempotencyKey": {
"type": "string",
"description": "Your own key for this request: the same key and details within 24 hours give the same request."
},
"preferredTimes": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "End: \"2026-11-05T11:00:00+01:00\"."
},
"from": {
"type": "string",
"description": "Start, with the user's UTC offset: \"2026-11-05T09:00:00+01:00\"."
}
}
},
"maxItems": 3,
"description": "When a call suits the user: up to 3 windows. Leave out when any time does."
}
}
}| The job, in the user's words and language: what it is, how big, what else changes the price. Show it to them; don't add what they didn't say. |
| desiredTiming | string | When they would like it done, in their words: "February or March". |
| idempotencyKey | string | Your own key for this request: the same key and details within 24 hours give the same request. |
{
"type": "object",
"required": [
"entry",
"requester",
"description"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"budget": {
"type": "object",
"required": [
"max",
"currency"
],
"properties": {
"max": {
"anyOf": [
{
"type": "number",
"maximum": 999999999.99,
"minimum": 0
},
{
"type": "string"
}
],
"description": "The amount: \"5000.00\", or 5000."
},
"currency": {
"type": "string",
"description": "Its ISO 4217 code: \"USD\", \"EUR\"."
}
},
"description": "The most they want to spend, if they say. Ask for the currency; don't assume one."
},
"answers": {
"type": "object",
"description": "Answers to the action's own questions (get_entry_sections), by their keys."
},
"actionId": {
"type": "string",
"description": "Which of its actions of this kind (get_entry_sections), when it has several."
},
"requester": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The user's name. Ask them; don't guess."
},
"email": {
"type": "string",
"description": "The user's email address, for the code and the answer. Ask them; don't guess."
},
"phone": {
"type": "string",
"description": "Their phone number with its country code, \"+1 212 555 0123\", if they give it."
},
"language": {
"type": "string",
"description": "The language they write in: \"en\"."
},
"preferredChannel": {
"enum": [
"email",
"phone"
],
"type": "string",
"description": "How they'd like to be answered, if they say."
}
}
},
"offeringId": {
"type": "string",
"description": "Which of the entry's offerings (get_entry_sections) it is about, if one."
},
"postalCode": {
"type": "string",
"description": "The postal code where the work is, when the user gives it or the action asks for one."
},
"description": {
"type": "string",
"description": "The job, in the user's words and language: what it is, how big, what else changes the price. Show it to them; don't add what they didn't say."
},
"desiredTiming": {
"type": "string",
"description": "When they would like it done, in their words: \"February or March\"."
},
"idempotencyKey": {
"type": "string",
"description": "Your own key for this request: the same key and details within 24 hours give the same request."
}
}
}| category | string | Only this category ("trades.carpentry") or sector ("trades"). |
| language | string | The language the user writes in: "ja". Summaries come in it, when the entry has it. |
| radiusKm | number | Only within this many km of `near`. Only when the user names a distance; there is no default. |
| verifiedOnly | boolean | Only entries whose owner proved control of their website. |
| acceptingWork | boolean | Only entries that state they take on new work now. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"kind": {
"enum": [
"person",
"organization"
],
"type": "string",
"description": "Only people, or only organizations."
},
"near": {
"anyOf": [
{
"type": "object",
"required": [
"place"
],
"properties": {
"place": {
"type": "string",
"description": "A town or district: \"Nairobi\", \"Shibuya, Tokyo\", \"Paris, Texas\"."
}
}
},
{
"type": "object",
"required": [
"postalCode",
"country"
],
"properties": {
"country": {
"type": "string",
"description": "Its country, as ISO 3166-1 alpha-2: \"US\", \"GB\"."
},
"postalCode": {
"type": "string",
"description": "A postal code: \"10001\", \"SW1A 1AA\"."
}
}
}
],
"description": "The place the user asks about, which they named. Entries there or serving it come first, then the nearest. Never coordinates or a street address."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"description": "What the user is looking for, in a few words: \"carpenter\", \"fontanero urgente\", \"CRM\". The place goes in `near`, and what they want to achieve in `outcome`."
},
"cursor": {
"type": "string",
"description": "nextCursor of the previous page."
},
"openAt": {
"type": "string",
"description": "Only entries open at this moment, by their stated hours: \"2026-11-06T18:30:00+01:00\". Only when the user asks what is open."
},
"outcome": {
"type": "string",
"description": "What the user wants to achieve with it, in a few of their words: \"keep track of leads in a small team\", \"fix a leaking tap today\". It helps the best fits come up and leaves nobody out. No names or personal details."
},
"category": {
"type": "string",
"description": "Only this category (\"trades.carpentry\") or sector (\"trades\")."
},
"language": {
"type": "string",
"description": "The language the user writes in: \"ja\". Summaries come in it, when the entry has it."
},
"radiusKm": {
"type": "number",
"maximum": 200,
"minimum": 1,
"description": "Only within this many km of `near`. Only when the user names a distance; there is no default."
},
"verifiedOnly": {
"type": "boolean",
"default": false,
"description": "Only entries whose owner proved control of their website."
},
"acceptingWork": {
"type": "boolean",
"description": "Only entries that state they take on new work now."
}
}
}{
"type": "object",
"required": [
"entry",
"requester",
"subject",
"message"
],
"properties": {
"entry": {
"type": "string",
"description": "Which entry: its ID or slug, from search or get_entry."
},
"answers": {
"type": "object",
"description": "Answers to the action's own questions (get_entry_sections), by their keys."
},
"message": {
"type": "string",
"description": "The message, in the user's words and language. Show it to them; don't add what they didn't say."
},
"subject": {
"type": "string",
"description": "What the message is about, in a few words."
},
"actionId": {
"type": "string",
"description": "Which of its actions of this kind (get_entry_sections), when it has several."
},
"requester": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The user's name. Ask them; don't guess."
},
"email": {
"type": "string",
"description": "The user's email address, for the code and the answer. Ask them; don't guess."
},
"phone": {
"type": "string",
"description": "Their phone number with its country code, \"+1 212 555 0123\", if they give it."
},
"language": {
"type": "string",
"description": "The language they write in: \"en\"."
},
"preferredChannel": {
"enum": [
"email",
"phone"
],
"type": "string",
"description": "How they'd like to be answered, if they say."
}
}
},
"idempotencyKey": {
"type": "string",
"description": "Your own key for this request: the same key and details within 24 hours give the same request."
}
}
}