Foundaree
by shujahmhd · remote · no sign-in to list tools · v1.4.0 · published by GitHub user shujahmhd
Find and book real people by skill, city and availability: doctors, developers, plumbers and more.
14 tools: 1 do something that can't be undone, 8 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http foundaree https://foundaree.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "my_connection_requests" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "my_connection_requests" says "request": a word for a change.
- Warnfind_and_ask
The server marks "find_and_ask" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "find_and_ask" says "find": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
14 tools
Can't be undone 1Claude Code: ask
request_appointmentSend a booking request to one person on Foundaree, for the user: "book this plumber for Saturday morning", "ask this dentist for an appointment".No findings
Why it is in this group
- The name "request_appointment" says "request": a word for a change.
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Send a booking request to one person on Foundaree, for the user: "book this plumber for Saturday morning", "ask this dentist for an appointment". Use it only when the user asked to book or contact that person, and only with the user's OWN name and phone number, which they gave you: never guess or reuse another number. Before calling, tell the user what you will send and to whom, and get their yes. The person sees the request on Foundaree and by email, and calls the user back on that number if they can take it; nothing is confirmed until they do, so say that to the user. Find the username with search_people or match_people first. One open request per phone number and person; a few per number a day.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Changes things 8Claude Code: ask
check_errandCheck on an errand started with find_and_ask: which of the people asked have accepted, declined or not answered yet.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check on an errand started with find_and_ask: which of the people asked have accepted, declined or not answered yet. Use it when the user asks "did anyone get back to me?". Someone who accepted will call the user on the number they gave; Foundaree does not arrange the time.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
create_profile_draftStart a Foundaree profile for the user.No findings
Why it is in this group
- The name "create_profile_draft" says "create": a word for a change.
Description, as the server wrote it Start a Foundaree profile for the user. Use it only when the user asks to join Foundaree, to be listed on it, or to create their own profile. Fill in only details the user gave about THEMSELVES: never about someone else, and never guess. Only `name` is required. Nothing is published: this saves a private draft and returns one link (finishUrl). The user opens it, checks the profile, signs in and taps Publish; until then nobody can find it. Show the user the link. It works once, for 7 days. Nobody is emailed or texted.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
find_and_askHand the whole errand to Foundaree: "find me a plumber in Kochi for Saturday morning".1 finding
Why it is in this group
- The name "find_and_ask" says "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "find_and_ask" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "find_and_ask" says "find": a word for reading.
Description, as the server wrote it Hand the whole errand to Foundaree: "find me a plumber in Kochi for Saturday morning". Foundaree searches, ranks the way its website does (people free now first), sends a booking request to the best one to three, and reports who was asked. Use this instead of search_people + request_appointment when the user wants it sorted rather than a list to choose from. Needs the user’s OWN name and phone number, which they gave you, and their clear yes before calling: real people will be contacted. Each person asked calls the user back if they can take it; nothing is confirmed until they do, so say that. Keep the returned errandId and use check_errand later to see who said yes. No account needed.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
match_peopleRank public Foundaree profiles against a list of required skills — use when the user describes a need ("a co-founder who knows React and has sold to enterprises", "a dentist in Pun…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Rank public Foundaree profiles against a list of required skills — use when the user describes a need ("a co-founder who knows React and has sold to enterprises", "a dentist in Pune", "someone to rewire my kitchen in Kochi") rather than searching for a known person. Give the required skills as `skills` (or describe the need in `q`; skill terms are then derived from it and `q` also narrows candidates by full text). location, area, workType, category, availability and lookingFor are hard filters; the skills only score: score = matched ÷ required (0–1), where a listed skill counts 1 and a term found in the person's category or lookingFor counts ½. Someone with 3 of 5 skills still appears, below someone with 5; ties break on availability (available first), then founding members (Foundaree's first 150 members), then recency. When nobody matches a single skill, the filtered candidates come back with score 0 and `fallback: true` instead of an empty list. Returns JSON with `items` (each: `person`, `score`, `matchedSkills`, `missingSkills`, `profileUrl`), `total`, `requiredSkills` and `fallback`. Each answer has two views: the text content is the JSON described above, and the structured content is a profile-card list (`people`, `total`, `query`). In apps that support MCP Apps (ChatGPT, Claude) the cards render as Foundaree profile cards. A person with `foundareeRole` ("founder" or "team") is part of Foundaree's own team; only Foundaree sets it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
my_connection_requestsList the connection requests waiting for the signed-in user, and the ones they sent that are still pending.1 finding
Why it is in this group
- The name "my_connection_requests" says "request": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "my_connection_requests" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "my_connection_requests" says "request": a word for a change.
Description, as the server wrote it List the connection requests waiting for the signed-in user, and the ones they sent that are still pending. Use it when the user asks who wants to connect, or what is waiting on Foundaree. Offer to answer them with respond_to_connection.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
respond_to_bookingAnswer one booking request sent to the signed-in user.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Answer one booking request sent to the signed-in user. Get the id from my_bookings first. Always read the request back to the user and get a clear yes before calling this: it is their answer to a real person, not yours. Accepting does not arrange a time — the user still has to call them — so say that.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
respond_to_connectionAnswer one connection request sent to the signed-in user.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Answer one connection request sent to the signed-in user. Get the id from my_connection_requests first. Tell the user who it is and what they wrote, and get their yes before calling this. Declining removes the request quietly; the other person is not told they were declined.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
set_my_availabilityChange the signed-in user's availability on their Foundaree profile: available (free for work now), open_to_offers (working, but will listen), or not_looking.No findings
Why it is in this group
- The name "set_my_availability" says "set": a word for a change.
Description, as the server wrote it Change the signed-in user's availability on their Foundaree profile: available (free for work now), open_to_offers (working, but will listen), or not_looking. This is public and it changes who finds them in search, so confirm with the user before calling it. Useful when they say they have finished a job, are fully booked, or want to be found again.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 5Claude Code: allow
get_personRetrieve the full public profile for a username, including skills, experiences, projects, `services` (what they offer with prices: name, price in whole currency units or null for "…No findings
Why it is in this group
- The name "get_person" says "get": a word for reading.
Description, as the server wrote it Retrieve the full public profile for a username, including skills, experiences, projects, `services` (what they offer with prices: name, price in whole currency units or null for "ask", currency, per job/hour/day/visit/session/month, from = starting price, note), `licence` (a registration number Foundaree's admin looked up on its public register, e.g. a doctor's NMC number: body, number, checkedAt; only once verified, and then "licence" is also in `verifiedBy`), and the phone, WhatsApp and contact email (`phone`, `whatsapp`, `contactEmail`) when the person made them public. `workProof`, when at least one kind is proven, is a count, not a score: "Proof: `proven` of `total`" over GitHub, website and LinkedIn (LinkedIn has no proof yet), with the facts of each proven one: `github` (public facts of a GitHub account they proved is theirs by signing in with it: repos, stars, followers, top languages, last push, and when Foundaree read them) and `website` (their website links back to this profile). `person.updatedAt` is when they last edited the profile. Returns structured JSON with `success`, `found` and `person` fields. Each answer has two views: the text content is the JSON described above, and the structured content is a profile-card list (`people`, `total`, `query`). In apps that support MCP Apps (ChatGPT, Claude) the cards render as Foundaree profile cards. A person with `foundareeRole` ("founder" or "team") is part of Foundaree's own team; only Foundaree sets it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
my_bookingsList the booking requests people sent to the signed-in user: who asked, what they need, when, and whether it is still waiting for an answer.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it List the booking requests people sent to the signed-in user: who asked, what they need, when, and whether it is still waiting for an answer. Use it when the user asks what is waiting on Foundaree, who wants to book them, or what they have not answered yet. Needs the user to have connected their Foundaree account. Lead with the ones still waiting, and offer to answer them with respond_to_booking.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_opportunitiesSearch public openings on Foundaree: jobs, freelance work, internships, projects, co-founder and advisory roles.No findings
Why it is in this group
- The name "search_opportunities" says "search": a word for reading.
Description, as the server wrote it Search public openings on Foundaree: jobs, freelance work, internships, projects, co-founder and advisory roles. Use it when the user is looking for work or a role ("React jobs in Bengaluru", "a co-founder role in fintech", "internships in design"), or asks what a company is hiring for. Matches the title, description, city and skills. Only open listings are returned unless `includeClosed` is true. Returns JSON with `items` (each: `username`, `title`, `type`, `companyUsername`, `location`, `description`, `skills`, `status`, `listingUrl`, `companyUrl`) and `total`. People apply on the listing page on Foundaree; this tool does not apply for anyone. Foundaree is new, so there may be few or none: say so rather than guessing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_organizationsSearch public company and organization pages on Foundaree by name, what they do, or city: "design studios in Kochi", "a clinic in Pune", "startups building for farmers".No findings
Why it is in this group
- The name "search_organizations" says "search": a word for reading.
Description, as the server wrote it Search public company and organization pages on Foundaree by name, what they do, or city: "design studios in Kochi", "a clinic in Pune", "startups building for farmers". Use it when the user needs a company or team rather than one person. Returns JSON with `items` (each: `username`, `name`, `description`, `website`, `location`, `pageUrl`) and `total`. Foundaree is new, so there may be few or none: say so rather than guessing. A company's open roles come from search_opportunities.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_peopleSearch public Foundaree profiles by free-text query and/or structured filters; give at least one.No findings
Why it is in this group
- The name "search_people" says "search": a word for reading.
Description, as the server wrote it Search public Foundaree profiles by free-text query and/or structured filters; give at least one. Free-text matches name, headline, bio, location, skills, experiences and projects. Each result carries `services` (what the person offers with prices), `languages`, `serviceAreas` (areas they cover) and `workingHours` (one entry per day, 24-hour HH:MM) when they gave them, so you can compare before booking. Each result has `updatedAt`, when the person last edited their profile: prefer recent ones when details matter, and say so when a profile is old. Among equally good matches, recently updated profiles rank a little higher. Structured filters: location (substring), area (neighbourhood substring; also matches the areas a person says they cover), language (a language they work in, e.g. Malayalam), workType (exact: local_service = blue-collar, hands-on work; professional = white-collar work), category (comma-separated trades/professions, OR semantics), availability (exact: available, open_to_offers, not_looking, unspecified), skills (comma-separated, AND semantics), lookingFor (comma-separated, AND semantics). Only the first 100 results can be paged through (offset + limit ≤ 100); add filters to narrow the search. Among people who fit equally well, founding members (Foundaree's first 150 members, `foundingMember`) come first; a better match always ranks higher. Returns JSON with a `results` array of structured people summaries. Results never include phone numbers or emails: use get_person for one profile's public contact details. Each answer has two views: the text content is the JSON described above, and the structured content is a profile-card list (`people`, `total`, `query`). In apps that support MCP Apps (ChatGPT, Claude) the cards render as Foundaree profile cards. A person with `foundareeRole` ("founder" or "team") is part of Foundaree's own team; only Foundaree sets it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.4.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http foundaree https://foundaree.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__foundaree__my_bookings",
"mcp__foundaree__search_people",
"mcp__foundaree__get_person",
"mcp__foundaree__search_organizations",
"mcp__foundaree__search_opportunities"
],
"ask": [
"mcp__foundaree__respond_to_booking",
"mcp__foundaree__my_connection_requests",
"mcp__foundaree__respond_to_connection",
"mcp__foundaree__set_my_availability",
"mcp__foundaree__find_and_ask",
"mcp__foundaree__check_errand",
"mcp__foundaree__match_people",
"mcp__foundaree__create_profile_draft",
"mcp__foundaree__request_appointment"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as foundaree. Review it before you use it.
