Vyavsay AI

Build with Vyavsay

Turn a business's Google Maps link into a website written from its reviews, edit it, export it and connect its domain, from your own code or from an AI agent. The same API answers which loan schemes a business qualifies for and when its GST is due, from the rules.

Before you start

Connect an AI agent (MCP)

The MCP server is at https://vyavsay.ai/mcp (Streamable HTTP). In Claude Code:

claude mcp add --transport http vyavsay https://vyavsay.ai/mcp \
  --header "Api-Key: vy_your_key"

In other clients that read an MCP config file:

{
  "mcpServers": {
    "vyavsay": {
      "type": "http",
      "url": "https://vyavsay.ai/mcp",
      "headers": { "Api-Key": "vy_your_key" }
    }
  }
}

40 tools

generate_site
Build a website for a business written from its reviews: from its Google Maps link (a preview that cannot be published), or with source google_business_profile and no link, from every review on the Business Profile its owner has connected (publishable). Returns a generation at once; poll get_generation until status is ready (then outputs.site_slug) or failed. The site is a private draft until the owner publishes it.
create_client
For agencies: create a business for a client who has not signed up yet (you own it until they claim it). Pass external_ref (your own id for the client): calling again with the same one returns the same client. place_id is the client's Google listing, used later to verify and publish.
list_clients
For agencies: your clients with status (unclaimed, claimed, verified, live), latest site and generation. Page with after = the previous response's next.
create_claim_invite
For agencies: a one-time link (valid 14 days) for the client to claim the business you made for them, after which you manage it and they own it. Send the link yourself. agency_name is shown to the client.
delete_client
For agencies: delete a client nobody has claimed yet, with its drafts and photos. Use it when the business opts out (preview.removed_by_business). A claimed client can't be deleted by you; leave it instead.
get_capabilities
What Vyavsay can build and what you have left: site tiers, themes, pages, languages, templates, the exact content shape of every section type for compose_site, live features, your plan and remaining allowances, and agency rate limits. Call this before composing a site.
get_client_page
The client's free page (vyavsay.ai/b/<slug>) as saved, or a draft to start from.
save_client_page
Save the client's free page as a draft (published stays false: only the owner publishes). page has slug, display_name, tagline, description, area, whatsapp, phone, email, hours, address, theme (clean, warm, bold), offerings [{name, price}].
get_plan_link
A link for the client to buy their own plan, which keeps their website online. Grants nothing by itself; ready is false until the client has claimed the business.
list_events
For agencies: what happened to your clients since the cursor `after` (the previous call's `next`), oldest first: client.created, generation.ready/failed, preview.viewed/expired/removed_by_business, claim.invite_opened/accepted/declined, listing.verified, site.published/unpublished, coverage.changed, manager.removed, client.deleted. Dedupe on id.
create_preview_share
A private link to a draft website made with compose_site, for the business to see before it is published. Returns url (shown once) and expires_at; days 1-30, default 14. made_by is shown on the page. Sites built from Google can't be shared.
get_preview_share
Whether a preview link was opened (views), when it ends, and its status: live, expired, revoked, or removed (the business ended it: treat as a no).
revoke_preview_share
End a preview link now.
compose_site
Create a draft website from content you write, for a business with no reviews to build from. sections is a list of {type, page?, content}: types hero, about, offerings, location, advantages, popular_items, special_touches, tips, faq, team, timetable, amenities, gallery, offers. No testimonials, ratings or claims of rank (best, No. 1). Pass place_id (the business's Google listing) so the owner can verify it and publish. Returns the draft's slug.
analyze_reviews
What customers praise and complain about, from the latest review analysis of the business's site. Every line cites the reviews it rests on. Run generate_site first if there is none.
set_section_image
Add an uploaded photo (upload_image) to a section, after the photos it already has.
connect_domain
Connect www.yourdomain.in to a site's business. Returns the DNS record to add; then call verify_domain.
account_info
The account's plan and what is left of it this period. Works on any plan.
create_subscription_checkout
A link for the account's owner to open and pay for a plan in the browser. Works on any plan.
list_businesses
The account's businesses, with their saved profile facts.
get_business
One business's profile.
create_business
Add a business by name; any other profile field (city, state, sector, ...) may be given too.
update_business
Change profile fields of a business (only the fields given).
get_generation
A generation's status, progress and, when ready, the site's slug.
list_sites
Every site on the account, the free page included.
get_site
A site as it would be published: settings and visible sections.
delete_site
Delete a generated site (not the free page). Cannot be undone.
export_site
A site as one HTML file, Markdown or JSON (Business and Agency plans).
list_sections
A site's sections, in order, with ids, content and photos.
get_section
One section.
update_section
Replace a section's content (same shape as get_section returns), show or hide it, set its photos (upload ids, in order), or its layout (get_capabilities → site.section_layouts lists the types with a choice).
update_site_style
Change a site's style (theme: one of get_capabilities → site.themes for its tier), its layout choices (design: any of site.design's keys, e.g. {"hero": "split", "width": "wide"}; keys left out keep their value), and on Premium its brand colour (#rrggbb) and logo (an upload id).
upload_image
Upload a JPEG, PNG or WebP to a site, as base64. Metadata such as location is stripped.
list_uploads
A site's uploaded photos.
delete_upload
Delete an uploaded photo.
add_domain
Connect www.yourdomain.in to a business; returns the DNS record to add.
verify_domain
Check whether the DNS record is in place and the certificate issued.
remove_domain
Disconnect the business's custom domain.
check_schemes
Eligibility for MUDRA, PMEGP and CGTMSE (and Stand-Up India, now closed), from rules in code with the date they were checked. Free on every plan.
filing_calendar
GST, TDS, PF, ESI, advance-tax and ITR due dates for a business's profile. Free on every plan.

REST API

Base URL https://vyavsay.ai/api. Check your key:

curl https://vyavsay.ai/api/v1/account \
  -H "Api-Key: vy_your_key"

From a Google Maps link to a website file:

POST /api/v1/businesses                        {"name": "Annapoorna Family Restaurant"}
POST /api/v1/businesses/{id}/generations        {"link": "https://maps.app.goo.gl/…"}
GET  /api/v1/generations/{generation_id}        poll until "status": "ready"
GET  /api/v1/sites/{site_slug}/export?format=html

41 endpoints

GET/v1/accountYour account id, plan, what is left of it this period, and what can be bought. An agency gives account_id to Vyavsay to be allowlisted.
POST/v1/checkoutA link for the account's owner to open and pay in the browser. No payment is started here: paying needs the person, not the agent.
GET/v1/capabilitiesWhat Vyavsay can build and what you have left, so a client never hard-codes it: site tiers, themes, pages, languages, templates, every section's content shape (sections, for POST /businesses/{id}/sites), which features are live, your plan and remaining allowances, and the per-hour/per-day limits on agency actions. Works on any plan.
GET/v1/clientsFor agencies: your clients, oldest first, with status (unclaimed, claimed, verified, live) and their latest site and generation. Page with after = the previous response's next.
POST/v1/clientsFor agencies: a business for a client who has not signed up yet. You own it until they claim it. Pass external_ref (your own id for the client) or an Idempotency-Key header: a retry returns the same client (200) instead of a second one (201).
POST/v1/clients/{business_id}/claim-invitesFor agencies: a one-time link (valid 14 days) for the client to claim the business you made for them. Send it yourself; it replaces any earlier link. The client sees agency_name before accepting.
DELETE/v1/claim-invites/{invite_id}Revoke Claim Invite
DELETE/v1/clients/{business_id}/managerFor agencies: stop managing a claimed client. Access ends at once.
DELETE/v1/clients/{business_id}For agencies: delete a client nobody has claimed, with its drafts and photos (e.g. after preview.removed_by_business). A claimed client is its owner's to delete: leave it with DELETE /clients/{id}/manager.
GET/v1/clients/{business_id}/pageThe client's free page (vyavsay.ai/b/<slug>) as saved, or a draft to start from (saved: false).
GET/v1/clients/{business_id}/plan-linkA link for the client to buy their own plan, which is what keeps the website you built online. It grants nothing by itself: the client opens it signed in as themselves and pays. ready is false until they have claimed the business (until then they have no account to pay from).
GET/v1/eventsFor agencies: what happened to your clients, oldest first, after the cursor after (the previous response's next). Poll it. Delivered at least once: dedupe on id. Types: client.created, client.deleted, generation.ready, generation.failed, preview.viewed, preview.expired, preview.removed_by_business (treat as a no), claim.invite_opened, claim.accepted, claim.declined, listing.verified, site.published, site.unpublished, coverage.changed (the client's plan), manager.removed. Kept 90 days.
GET/v1/sites/{slug}/preview-sharesList Preview Shares
POST/v1/sites/{slug}/preview-sharesA private link (url, shown once) to a draft website, for the business to see before it is published: vyavsay.ai/p/<token>, valid days (default 14, at most 30). Only for a site made with POST /businesses/{id}/sites (written, not built from Google). The page names the business and made_by, says it is not published, has no forms, and lets the business remove it without signing in.
GET/v1/preview-shares/{share_id}views (people, once a day each), status (live, expired, revoked, or removed: the business ended it, treat that as a no).
DELETE/v1/preview-shares/{share_id}Revoke Preview Share
GET/v1/businessesList Businesses
POST/v1/businessesCreate Business
GET/v1/businesses/{business_id}Get Business
PATCH/v1/businesses/{business_id}Update Business
GET/v1/businesses/{business_id}/insightsThe latest review analysis for the business's site: what customers praise and complain about, each line with the reviews behind it.
POST/v1/businesses/{business_id}/generationsBuild a site from the business's Google Maps link. Returns at once; poll GET /v1/generations/{id} until status is ready or failed.
POST/v1/businesses/{business_id}/sitesCreate a publishable draft site from content you supply (sections: hero, about, offerings, location, faq, ...), for a business with no reviews to build from. No testimonials, ratings or claims of rank. Pass the listing's Google place_id so the owner can verify and publish.
GET/v1/generations/{generation_id}Get Generation
GET/v1/sitesList Sites
GET/v1/sites/{slug}The site as it would be published: settings and visible sections.
DELETE/v1/sites/{slug}Delete Site
GET/v1/sites/{slug}/exportExport Site
GET/v1/sites/{slug}/sectionsList Sections
GET/v1/sites/{slug}/sections/{section_id}Get Section
PATCH/v1/sites/{slug}/sections/{section_id}Replace a section's content, show or hide it, set its photos (upload ids, in order) or its layout (GET /v1/capabilities → section_layouts). Content is cleaned to the section's shape.
PATCH/v1/sites/{slug}/settingsThe site's style (theme, from GET /v1/capabilities → site.themes for its tier), its layout choices (design: any of site.design's keys; the ones left out keep their value), and on Premium the brand colour (brand_color, #rrggbb) and logo (logo_upload_id, or clear_logo).
GET/v1/sites/{slug}/uploadsList Uploads
POST/v1/sites/{slug}/uploadsA JPEG, PNG or WebP. Re-encoded from its pixels, so location data and other metadata never survive.
DELETE/v1/uploads/{upload_id}Delete Upload
GET/v1/businesses/{business_id}/domainGet Domain
POST/v1/businesses/{business_id}/domainConnect www.yourdomain.in; the answer says which DNS record to add.
DELETE/v1/businesses/{business_id}/domainRemove Domain
POST/v1/businesses/{business_id}/domain/checkVerify Domain
POST/v1/schemes/checkMUDRA, PMEGP and CGTMSE eligibility, from rules in code with the date they were last checked against the official source. Stand-Up India is answered too, as closed to new loans since 31 March 2025.
POST/v1/calendarGST, TDS, PF, ESI, advance tax and ITR due dates for this profile.