Uganda Online Business Directory
Server Details
Search a Ugandan business directory for businesses and services by keyword, category, or district
- Status
- Healthy
- Uptime
- 100.0% over 30 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- domusdeiug/muyiribi
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: searching businesses, fetching a business by id, listing categories, searching marketplace products, and returning a signup link. The descriptions explicitly separate search_businesses from search_marketplace and clarify that get_listing_signup_link does not create listings.
All tool names use consistent snake_case with a verb-first pattern: get_business, get_listing_signup_link, list_categories, search_businesses, search_marketplace. The convention is predictable throughout.
Five tools is well-scoped for a public business directory focused on search, lookup, categories, marketplace search, and owner signup. Each tool has a distinct purpose and none feels redundant.
The surface covers the core public workflows: category discovery, business search, business detail lookup, marketplace search, and listing signup. Minor gaps exist, such as no direct detail lookup for marketplace listings or district enumeration, but the description indicates marketplace results link out for final confirmation.
Available Tools
5 toolsget_businessARead-onlyInspect
Fetch full public details for one business listing by id, including contact info (phone, WhatsApp, email, website). Use the id returned by search_businesses.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Listing id, as returned by search_businesses (accepts string or number) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds meaningful context beyond that: the data returned is 'public' details only and includes specific contact channels, setting expectations about field scope. It omits auth requirements, rate limits, or behavior for unknown/missing ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the purpose with its payload is front-loaded before the sourcing instruction. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return contents, and annotations carry the safety profile. For a simple single-id lookup it is nearly complete; only edge-case behavior (unknown id, partial data) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema, including the string-or-number acceptance. The description's 'by id' and the search_businesses provenance note largely restate the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch full public details') and resource ('one business listing by id') with the notable payload enumerated (phone, WhatsApp, email, website). It is immediately distinguishable from search_businesses (search) and list_categories 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly ties invocation to the sibling: 'Use the id returned by search_businesses,' which tells the agent when this tool is the correct follow-up. It gives no when-not guidance (e.g., when a search result already contains the needed fields), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listing_signup_linkARead-onlyInspect
Return the link for a Ugandan business owner to create a free listing in the Muyiribi directory. This tool does not create, edit, or verify any listing itself — the business owner completes signup and listing creation on the website. Use this whenever a business is not found in search results, or when a business owner asks how to get listed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description nonetheless adds meaningful context: the tool performs no mutation or verification, and the signup flow completes on the website (external hand-off). It doesn't need to describe return format in detail, but it does confirm the return is a link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the return value, then the non-operation disclaimer, then the usage triggers. Every sentence earns its place with no padding or repetition of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only tool with no output schema, the description supplies everything an agent needs: what is returned, that no side effects occur, and the two conditions under which it should be called. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters there is nothing to document, so the baseline is 4. The description usefully adds the semantics of the returned link (free listing, Ugandan business owner, Muyiribi directory), which is the only value-relevant detail for this parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Return) and resource (link for a Ugandan business owner to create a free listing in the Muyiribi directory), and explicitly carves out what it is NOT ('does not create, edit, or verify any listing itself'). This distinguishes it cleanly from siblings like get_business and search_businesses, which retrieve existing records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states two explicit trigger conditions: 'whenever a business is not found in search results' and 'when a business owner asks how to get listed.' This directly ties usage to the sibling search_businesses failing, leaving no ambiguity about when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesARead-onlyInspect
List every business category available in the directory, so a search can be narrowed to an exact category name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds two behavioral facts beyond that: the list is exhaustive ('every category') and values must be used as exact names ('exact category name'), which signals exact-match semantics rather than fuzzy matching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the operation and object, followed immediately by the reason to call it. Zero filler and nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only enumeration tool, the description covers what it returns (all categories) and why an agent would call it. Safety is handled by annotations and no output schema is needed for a flat list of names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema places no burden on the description and the baseline is 4. The description correctly does not invent arguments or filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List every business category available in the directory.' A reader immediately knows this returns the category vocabulary. It does not name a sibling tool outright, but the phrase 'so a search can be narrowed to an exact category name' effectively positions it against search_businesses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use context: call this to obtain valid category names before narrowing a search. It does not state when NOT to use it or name search_businesses explicitly, so it stops short of the 5-level explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_businessesARead-onlyInspect
Search the Muyiribi Uganda business directory by keyword, category, and/or district, and show the matches as a card list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results, 1 to 5 | |
| keyword | No | Several plain words describing what is needed, e.g. 'tv lcd repair'. Any word can match; listings matching more words rank higher. Not a phrase. | |
| category | No | Exact category name from list_categories. Use it when the request fits a category. Optional. | |
| district | No | District name, e.g. Kampala |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the output presentation ('card list'); it says nothing about result limits, ranking behavior, or empty-result handling beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with fully documented parameters and annotations covering the safety profile, the description supplies enough to invoke the tool correctly. It is slightly thin on how the filters combine and how results are ranked, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains keyword matching, category source, district, and the 1-5 limit. The description merely restates the three filter dimensions and adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Muyiribi Uganda business directory) plus the filter dimensions (keyword, category, district) and the output form (card list). It separates itself from the siblings in practice, though it never names get_business or list_categories explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing the filter axes and noting 'category' should come from list_categories, but it never says when to choose this tool over get_business or list_categories, nor when it is inappropriate (e.g. exact single-business lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_marketplaceARead-onlyInspect
Search available marketplace product listings in Uganda so users can compare options. Supply complete alternate item phrases in synonyms (e.g. wedding dress and bridal gown for wedding gown). Relevant listings are ranked and capped; price bounds are in UGX. Results include original marketplace links; confirm current availability, condition and seller details there. Explicit price sorts return a single unscored page. For businesses or service providers instead, use search_businesses.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | rel/new: newest-first with phrase ranking; price sorts: one unscored page | rel |
| query | Yes | Item to search for, e.g. wedding gown | |
| region | No | Marketplace region slug, if known; omit rather than guessing a district-to-slug mapping | |
| source | No | Optional marketplace source identifier if supported; omit to use the default source | |
| synonyms | No | Complete alternative item phrases, e.g. ['wedding dress', 'bridal gown'] | |
| max_price | No | Maximum price in UGX | |
| min_price | No | Minimum price in UGX | |
| target_results | No | Maximum results returned | |
| max_fetch_pages | No | Maximum marketplace pages fetched | |
| min_relevance_score | No | Minimum complete-phrase score; two-word phrases score at least 2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description adds real behavioral context beyond them: results are ranked and capped, price bounds are UGX, explicit price sorts return a single unscored page, and results are links whose freshness/condition/seller details must be verified at the source. That is a substantive disclosure of result quality and data-freshness limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first sentence, and each subsequent sentence carries distinct information (synonym format, ranking/capping, currency, verification caveat, sort behavior, sibling routing). Slightly dense, with minor overlap between the UGX note and the schema's own 'price in UGX' descriptions, but no wasted sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter read tool with no output schema, the description covers what matters: what comes back (ranked, capped listings with original links), what the price units are, and how sorts change result shape. The only meaningful gap is pagination behavior for the page parameter, which neither the schema nor the description explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 91%, so the baseline is 3, but the description adds nuance the schema does not: synonyms must be complete alternate item phrases (not partial tokens), with a concrete example. Price-unit and sort-behavior notes reinforce the schema rather than duplicate it. It does not explain the page parameter, whose schema entry has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search marketplace product listings) with a geographic scope (Uganda) and a user goal (compare options). It explicitly distinguishes itself from the sibling search_businesses, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use-this vs when-to-use-alternative guidance: 'For businesses or service providers instead, use search_businesses.' It also supplies operational guidance on how to use synonyms (complete alternate phrases with a worked example) and when price sorts behave differently, leaving little to inference.
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 tool update
- Changed
search_marketplace4 fields changed- changed
Input schema / properties / max_fetch_pages / descriptionPrevious value: -"Maximum Jiji pages fetched"New value: +"Maximum marketplace pages fetched" - changed
Input schema / properties / region / descriptionPrevious value: -"Jiji region slug, e.g. central-division"New value: +"Marketplace region slug, if known; omit rather than guessing a district-to-slug mapping" - removed
Input schema / properties / source / defaultRemoved value: -"jiji" - changed
Input schema / properties / source / descriptionPrevious value: -"Marketplace source; currently only jiji"New value: +"Optional marketplace source identifier if supported; omit to use the default source"
1 tool update
- Added
search_marketplace
1 tool update
- Added
get_listing_signup_link
1 tool update
- Changed
get_business4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Listing id"New value: +"Listing id, as returned by search_businesses (accepts string or number)" - removed
Input schema / properties / id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / id / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / id / typePrevious value: -"integer"New value: +[ + "string", + "number" +]
3 tool updates
- First observed
get_business - First observed
list_categories - First observed
search_businesses
Related MCP Connectors
Uganda URSB company search by name and BRN, with director, secretary and shareholder lookup.
Search and discover local businesses. 30+ categories with verified contact info, hours, and reviews.
Search a directory of real, owner-confirmed small businesses. Read-only; attribution required.
Search 7,000+ local service businesses across America by category, location, or keyword.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables agents to search, retrieve, and contribute business data from a directory of 11M+ businesses across 195 countries, returning markdown prose by default.22115 npm3MIT
- AlicenseNot gradedqualityDmaintenanceSearch, verify and screen over 1 million African companies across 18 official government registries, along with the public contracts they have won and OFAC/UN sanctions screening. Every result carries its registry source, date and a confidence signal, and the server returns nulls rather than fabricating data.MIT
- AlicenseAqualityCmaintenanceSearch for local businesses worldwide. Structured data optimized for AI agents. • Search Millions of businesses over 49 countries (Europe, Northamerica, Southamerica, Asia, Oceania) • Quality & demand scoring for every business • Ranking based on real user click-through data • No API key needed, free access • Rate limit: 500 requests/hour per IP61MIT
- AlicenseAqualityDmaintenanceProvides AI agents with access to real, verifiable businesses with provenance and source URLs, enabling natural-language business search and profile retrieval.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.