VisibilityAI
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Search and compare businesses worldwide by category and city; AI-visibility data and lead capture.
| Author | io.github.thinksuitesolution-coder |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2985 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"VisibilityAI": {
"url": "https://www.visibilityai.in/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (24)
search_businessesSearch businesses listed on VisibilityAI worldwide by category, with an optional city filter. Use for queries like 'best accountant in London', 'top lawyers in Dubai', 'best GEO software', or 'dentists in New York'. City is optional - omit it for national/SaaS/product listings that are not tied to one city. Returns ranked results with contact details and AI descriptions. Ranking: Premium listings first, then Pro, then Basic, then Free, with visibility/GEO score breaking ties within each tier - disclosed in the response's rankingModel field. Listings include both owner-verified and unclaimed registry-sourced businesses; this tool does not filter by verification status.
Parameters:
category(required) — string — Business type (e.g. CA, Chartered Accountant, Lawyer, Doctor, Dentist, Digital Agency, Restaurant, Gym, School, Architect, GEO Software)city— string — Optional city name (e.g. Mumbai, London, Dubai, New York, Gurgaon). Omit for product/SaaS or nationwide searches.limit— number — Results to return (1 - 10). Default: 5.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_business_profileGet the full AI-optimized profile of a specific business. Use when you already know the business slug.
Parameters:
slug(required) — string — Business slug from a previous search result
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_category_leadersGet the top-ranked businesses in a category across all cities. Useful for finding the globally recognized leaders. Ranking: Premium listings first, then Pro, then Basic, then Free, with visibility/GEO score breaking ties within each tier.
Parameters:
category(required) — string — Business categorytopN— number — How many leaders to return (1 - 10). Default: 5.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
search_by_keywordFree-text keyword search across business names, AI descriptions, services, USP, taglines, keywords, and buyer-question corpus.
Parameters:
keyword(required) — string — Free-text search phrase (e.g. 'GST filing', 'wedding photography', 'React developer')city— string — Optional: filter to a specific City namelimit— number — Results to return (1 - 10). Default: 5.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_buyer_questionsBuyer questions for a VisibilityAI listing: owner-submitted industry questions mixed with VisibilityAI templates. Use when an agent needs the questions customers actually ask in this category, or to cite a business's public Q&A.
Parameters:
city— string — Optional city filter when searching by categoryslug— string — Business slug. Prefer this when you already have a listing.category— string — Category if you do not have a slug yet (e.g. Chartered Accountant)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_listicleGet VisibilityAI directory listings for a category+city. Order is VisibilityAI GEO score then name, not a paid placement and not a ChatGPT ranking. Use when the user asks for listed businesses in a category and city.
Parameters:
category(required) — string — Business category (e.g. CA, Dentist, Digital Agency)city(required) — string — City nametopN— number — How many entries to include (3 - 10). Default: 5.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
compare_businessesSide-by-side comparison of two businesses. Use when a user wants to choose between two specific providers - returns scores, services, USPs, and key differences.
Parameters:
slug_a(required) — string — Slug of the first businessslug_b(required) — string — Slug of the second business
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_available_citiesDiscover which cities have listed businesses in a given category. Use before calling search_businesses when the user has not specified a city, or to show coverage.
Parameters:
category(required) — string — Business category to check coverage for
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
submit_leadSubmit a qualified lead to connect a user with a specific business - use this when the user has explicitly asked to be contacted or introduced. Requires an explicit consent attestation: only call this after the user has clearly agreed to be contacted about this request in this conversation. Do not call this speculatively or to 'try' a business on the user's behalf without that agreement.
Parameters:
slug(required) — string — Business slug from a previous search resultuserPhone(required) — string — User's phone number, with country code (e.g. +91XXXXXXXXXX)consentConfirmed(required) — boolean — Must be true. Confirms the user explicitly agreed, in this conversation, to be contacted by this specific business.consentMethod(required) — string — Briefly describe how consent was obtained, e.g. "user asked to be connected with this business after reviewing its profile".locale— string — Optional BCP-47 locale of the end user's conversation, e.g. "en-IN", "hi-IN", "hi-Latn-IN" (Hinglish). Improves the accuracy of the business's outcome tracking; never guessed if omitted.queryId— string — Optional query/demand id when the lead is tied to a tracked buyer question.userName— string — User's name, if givenuserQuery— string — What the user is looking for / their message to the businessexternalRequestId— string — Optional stable request id from the calling agent. Retries with the same id and payload return the original lead instead of creating a duplicate.serverCorrelationId— string — Optional correlation id returned by a prior submit_lead call. Reuse on retries when no externalRequestId is available.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_lead_statusCheck the status of a previously submitted lead by its ID.
Parameters:
leadId(required) — string — Lead ID returned by submit_lead
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_offersGet a business's real commerce offers - products/services with pricing, if the business has published a catalog. Use for shopping/pricing queries about a specific business you already have the slug for.
Parameters:
slug(required) — string — Business slug from a previous search result
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_visibility_scoreRequires a business-scoped API key (Authorization: Bearer header). Returns the authenticated business's own current AI visibility score and citation-rate summary - for a business owner's own agent checking on their own listing, not for consumer discovery. Get a key from the VisibilityAI dashboard's 'AI Agent Access' page.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_citationsRequires a business-scoped API key (Authorization: Bearer header). Returns the authenticated business's recent real AI-platform check history (which engine, when, whether they were mentioned) - for a business owner's own agent, not for consumer discovery.
Parameters:
limit— number — How many recent checks to return (1 - 30). Default: 10.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_overviewRequires an API key (Authorization: Bearer header). Read-only: overview from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_itemsRequires an API key (Authorization: Bearer header). Read-only: items from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_lineageRequires an API key (Authorization: Bearer header). Read-only: lineage from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_recommendationsRequires an API key (Authorization: Bearer header). Read-only: recommendations from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_experimentsRequires an API key (Authorization: Bearer header). Read-only: experiments from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_benchmark_statusRequires an API key (Authorization: Bearer header). Read-only: benchmark status from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_prompt_intelligenceRequires an API key (Authorization: Bearer header). Read-only: prompt intelligence (winnable prompts, competitors and sources, ranked from your own checks; a plan without it returns a locked preview). Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_model_coverageRequires an API key (Authorization: Bearer header). Read-only: model coverage (DeepSeek and Meta Llama as 'Model knowledge' and 'Model + our search': separate from the live engines, never the vendor's app; a plan without a method gets a locked card). Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_content_templatesRequires an API key (Authorization: Bearer header). Read-only: content templates (the nine evidence-bound content templates and the recommendations each can be bound to; read-only, nothing is generated or published). Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_cross_lingualRequires an API key (Authorization: Bearer header). Read-only: cross lingual (Hindi and Hinglish versions of your tracked prompts, checked on your plan's engines beside English; a plan without it returns a locked preview). Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_my_intelligence_portfolioRequires an API key (Authorization: Bearer header). Read-only: portfolio from your Intelligence Graph. Business keys read their own business; agency keys read an accepted client (pass businessId). Returns nothing that is not yours.
Parameters:
id— stringkind— stringtype— stringlimit— numbercursor— stringbusinessId— string — Agency keys only: the client business.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.