raivatedu-mcp-server
This server lets an MCP client explore the public RaivatEdu marketing website (read-only) — checking availability, reading page content, searching, and surfacing pricing, features, solutions and contact details across 10 markets.
Check site status – probe reachability, HTTP status and response time for a market home page.
Get website info – product, organization and supported markets/currencies from the site's JSON-LD.
Get contact information – published sales/support/security emails, contact points, contact and demo page URLs (reads only, sends nothing).
Get pricing – subscription plans, prices and currency per market (e.g. India: Starter/Professional/Enterprise per user/month).
List features – the 9 documented feature areas with URLs (optional live descriptions).
List solutions – the 4 audience segments (Schools, Colleges & Universities, Coaching Institutes, Training & EdTech).
List resources – resource/blog/guides/help landing pages plus educational articles (optionally with descriptions).
List pages – the site navigation map, filterable by page type.
Get page content – fetch/summarize an allowlisted page's title, description, headings, body text, FAQs and links (SSRF-restricted;
/api/blocked).Search content – client-side keyword search across ~28 curated pages with ranked snippets.
Multi-market support – all tools operate across 10 locales (in, us, gb, ca, au, nz, ie, sg, ae, za), defaulting to India.
RaivatEdu Education MCP Server
An unofficial, read-only Model Context Protocol (MCP) server that lets Claude Desktop (or any MCP client) explore the public RaivatEdu website — raivatedu.com — using natural language.
RaivatEdu is admissions & student-relationship software (a SaaS marketing site), not a course catalog. This server reflects what the site actually publishes: product/feature information, pricing by market, solutions by audience, resource articles, and contact details. It fetches only public marketing pages, honours robots.txt, and never touches private/authenticated areas.
Table of contents
Related MCP server: HitKeep
Verified website capability analysis
Inspected live on 2026-10-13 via robots.txt, /sitemap.xml (+ its three child sitemaps), raw HTML, and embedded JSON-LD.
Area | Finding | Verified? |
Purpose | Marketing site for RaivatEdu admissions/CRM software for schools, colleges, coaching & training | ✅ |
Rendering | Next.js, server-side prerendered ( | ✅ (Cheerio is enough; no headless browser needed) |
Structured data | Rich schema.org JSON-LD on every page: | ✅ |
Markets | 10 locales: | ✅ (markets.xml) |
Pages per market | home, pricing, enterprise, features (+9 detail), solutions (+4 detail), product, integrations, security, about, contact, demo, privacy, terms, resources, blog, guides, help; plus global | ✅ (sitemaps) |
Pricing | Published per market as JSON-LD offers (India: Starter ₹3,500 / Professional ₹4,500 / Enterprise ₹8,000 per user/month; 14-day trial) | ✅ |
Contact |
| ✅ |
Public API | None. | ✅ (so this server scrapes public HTML only, and never |
Course catalog / accounts / site search | Do not exist publicly. "Courses" (BBA, B.Tech, …) appear only as mock/sample data inside product screenshots | ✅ (so no |
Capability → tool mapping
Suggested tool | Decision | Reason |
| ✅ Implemented ( | Reachability via HEAD |
| ✅ | From JSON-LD |
| ✅ | Client-side search over known pages (no server API) |
| ✅ | Domain- & catalog-restricted |
| ✅ | From JSON-LD contact points |
| ❌ Omitted | No course catalog exists — implementing these would require fabricating data |
| ❌ Omitted | No course taxonomy; the real taxonomies are features & solutions (covered below) |
| ✅ as | "Resources" = admissions playbook articles |
— | ✅ | Pricing is a first-class, verified capability |
— | ✅ | Verified site taxonomies / navigation |
What this server exposes
10 tools, 4 resources (2 of them templated per market), and 4 prompts — all read-only.
Architecture
raivat-education-mcp/
├── src/
│ ├── index.ts # Entry point: stdio transport, CLI flags, graceful shutdown
│ ├── server.ts # Builds McpServer + context; wires tools/resources/prompts
│ ├── config.ts # Env config + the verified page/market/feature catalog
│ ├── context.ts # ServerContext (config + client + logger)
│ ├── tools/
│ │ ├── index.ts # registerAllTools
│ │ ├── shared.ts # response formatting, shared Zod fields, char limit
│ │ ├── website.ts # check_website_status, get_website_info, get_contact_information
│ │ ├── pages.ts # list_pages, get_page_content, search_content
│ │ ├── pricing.ts # get_pricing
│ │ └── catalog.ts # list_features, list_solutions, list_resources
│ ├── services/
│ │ ├── website-client.ts # SSRF-safe fetch: timeouts, retries, rate limiting
│ │ └── content-parser.ts # Cheerio + JSON-LD extraction (pricing/org/software/FAQ)
│ ├── resources/index.ts # raivatedu://info | contact | pages/{market} | pricing/{market}
│ ├── prompts/index.ts # find_relevant_plan, compare_plans, summarize_page, navigate_website
│ └── utils/
│ ├── url.ts # SSRF guard + catalog generation + path normalization
│ ├── errors.ts # Typed errors + MCP error-result builder
│ └── logger.ts # Leveled stderr-only logger
├── tests/ # Vitest unit + integration tests (+ optional live smoke)
├── .env.example
├── claude_desktop_config.example.json
├── eval/evaluation.xml # MCP evaluation questions
├── package.json / tsconfig.json / vitest.config.ts
├── README.md / LICENSEDesign highlights
stdio transport, logs on stderr only (stdout stays a clean JSON-RPC stream).
Structured output: every tool returns both human-readable text and
structuredContent(toggle withresponse_format: "json").JSON-LD first: pricing/org/contact come from the site's own machine-readable schema.org data, not brittle CSS selectors.
SSRF-hardened: outbound requests are restricted to
raivatedu.com/www.raivatedu.comover HTTPS and to the sitemap-derived page allowlist;/api/is always blocked.Polite client: per-request timeout, bounded retries with backoff, and a minimum interval between requests.
Prerequisites
Node.js ≥ 18 (fetch is built in; developed/tested on Node 22+). Download Node.js.
npm (bundled with Node).
Claude Desktop (latest) for the integration section — download.
Installation, build & run
# 1. Get the project (clone your fork, or copy this folder)
cd raivat-education-mcp
# 2. Install dependencies
npm install
# 3. Build TypeScript -> dist/
npm run build
# 4. (optional) configure — all vars are optional
cp .env.example .env
# 5. Run the server (stdio). It waits for an MCP client on stdin/stdout.
npm start
# or directly:
node dist/index.jsQuick sanity checks (do not speak MCP, just prove the binary works):
node dist/index.js --version # -> 1.0.0
node dist/index.js --helpDevelopment with auto-reload:
npm run devClaude Desktop integration
Install Node.js (see prerequisites) and note the absolute path to
node:macOS/Linux:
which nodeWindows (PowerShell):
(Get-Command node).Source
Build the project (
npm run build) sodist/index.jsexists.Find the absolute path to the built entry file:
macOS/Linux:
realpath dist/index.jsWindows (PowerShell):
(Resolve-Path dist\index.js).Path
Edit Claude Desktop's config file (
claude_desktop_config.json):macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonYou can open it from Claude Desktop → Settings → Developer → Edit Config.
Add this server under
mcpServers(seeclaude_desktop_config.example.json). Replace the example path with your own absolute path. On Windows, use double backslashes (\\).{ "mcpServers": { "raivat-education": { "command": "node", "args": ["/ABSOLUTE/PATH/TO/raivat-education-mcp/dist/index.js"], "env": { "RAIVATEDU_DEFAULT_MARKET": "in" } } } }Windows example
args:["C:\\Users\\you\\Desktop\\Raivat_MCP\\dist\\index.js"]Fully quit and reopen Claude Desktop (not just close the window).
Verify: open a new chat → click the tools/plug icon → you should see raivat-education with 10 tools. Ask: "Is the RaivatEdu website up?"
Tip: prefer
node+ absolutedist/index.jsovernpx/tsxfor reliability. Ensurenodeis on the PATH Claude Desktop sees, or use an absolute path to thenodebinary incommand.
MCP tool reference
All tools are read-only (readOnlyHint: true) and accept an optional response_format of "markdown" (default) or "json". Markets: in, us, gb, ca, au, nz, ie, sg, ae, za (default in, configurable).
raivatedu_check_website_status
Check reachability and response time (HTTP HEAD to a market home page).
Input:
market?,response_format?Output:
{ reachable, status, url, response_time_ms, checked_at }Example:
{ "market": "in" }→✅ reachable, HTTP 200, 180 ms
raivatedu_get_website_info
Product, organization and markets overview from JSON-LD.
Input:
market?,response_format?Output:
{ product{...}, organization{...}, markets[], source_url }
raivatedu_get_contact_information
Published contact emails + contact/demo page URLs (does not send anything).
Input:
market?,response_format?Output:
{ general_email, contact_points[], contact_page, demo_page }
raivatedu_get_pricing
Subscription plans & prices for a market, from pricing JSON-LD offers.
Input:
market?,response_format?Output:
{ market, currency, plans:[{ plan, billing, price, currency, unit, minUsers?, maxUsers?, url? }], source_url }Example (
in): Starter3500 INR, Professional4500 INR, Enterprise8000 INR, per user/month.
raivatedu_list_features
The 9 feature areas with URLs (optional live descriptions).
Input:
market?,include_descriptions?(default false),response_format?Output:
{ market, count, features:[{ slug, label, url, description? }] }
raivatedu_list_solutions
The 4 audience segments (Schools, Colleges & Universities, Coaching Institutes, Training & EdTech).
Input:
market?,include_descriptions?,response_format?Output:
{ market, count, solutions:[{ slug, label, url, description? }] }
raivatedu_list_resources
Resource articles + resources/blog/guides/help landing pages.
Input:
market?,include_descriptions?,response_format?Output:
{ market, landing_pages{...}, count, articles:[{ slug, label, url, description? }] }
raivatedu_list_pages
The site navigation map (verified page catalog) for a market.
Input:
market?,type?(e.g."feature","solution","resource-article"),response_format?Output:
{ market, count, pages:[{ path, url, type, market }] }
raivatedu_get_page_content
Fetch & summarize a specific public page (title, description, outline, body text, links, FAQ).
Input:
path(required, path or full raivatedu.com URL),max_text_chars?(200–20000, default 6000),include_links?(default true),response_format?Output:
{ url, type, title, description, canonical, headings[], text, faqs[], links[] }Errors: unknown path → "not a known public RaivatEdu page"; external host → refused (SSRF);
/api/*→ blocked.
raivatedu_search_content
Keyword search across ~28 content-rich pages for a market; ranked results with snippets.
Input:
query(required, 2–200 chars),market?,limit?(1–20, default 5),response_format?Output:
{ query, market, pages_searched, count, results:[{ title, url, type, score, snippet }] }Empty matches return
count: 0(not an error).
Resources & prompts
Resources (read-only, JSON):
raivatedu://info— product/org/markets overviewraivatedu://contact— contact detailsraivatedu://pages/{market}— page catalog (templated; lists all 10 markets)raivatedu://pricing/{market}— pricing plans (templated; lists all 10 markets)
Prompts:
find_relevant_plan— argsinstitution_type,team_size?,market?compare_plans— argmarket?summarize_page— argpathnavigate_website— argsgoal,market?
Environment variables
All optional; the server runs with zero config. See .env.example.
Variable | Default | Description |
|
| Market used when a tool call omits one. One of the 10 market codes. |
|
| Per-request timeout (1000–60000). |
|
| Minimum spacing between outbound requests (0–10000). |
|
| Retries for transient failures (0–5). |
| descriptive default | Override the outbound User-Agent. |
|
|
|
Testing
npm test # offline unit + integration tests (mocked HTTP) — 51 tests
npm run typecheck # tsc --noEmit
RUN_SMOKE=1 npm test # also runs optional live tests against raivatedu.comCoverage includes: config parsing, SSRF/path validation & catalog, HTML/JSON-LD parsing, the HTTP client (success, 404, 5xx retries, network errors, timeouts, host blocking), tool discovery, every tool's happy path, input validation, unknown-path & SSRF rejection, empty search results, and malformed-HTML/JSON-LD handling.
MCP Inspector
npm run build
npx @modelcontextprotocol/inspector node dist/index.js
# or: npm run inspectorThe Inspector opens a UI where you can list/call tools, read resources, and try prompts interactively.
Example conversations
Once connected in Claude Desktop you can ask:
"Is the RaivatEdu website up right now?" →
raivatedu_check_website_status"What is RaivatEdu and who makes it?" →
raivatedu_get_website_info"How much does RaivatEdu cost in India? Compare the plans." →
raivatedu_get_pricing(try thecompare_plansprompt)"I run a coaching institute with ~15 counsellors — which plan and solution fits?" →
find_relevant_plan→raivatedu_get_pricing+raivatedu_list_solutions"Where does the site talk about WhatsApp follow-ups?" →
raivatedu_search_content"Summarize the Admissions feature page." →
summarize_page→raivatedu_get_page_content"List all the resource articles and give me the one about migrating from spreadsheets." →
raivatedu_list_resources+raivatedu_get_page_content"What are RaivatEdu's sales and support email addresses?" →
raivatedu_get_contact_information"Show me the US pricing resource." → read resource
raivatedu://pricing/us
End-to-end verification checklist
npm installcompletes.npm run buildsucceeds;dist/index.jsexists.node dist/index.js --versionprints1.0.0.npm test→ all offline tests pass.RUN_SMOKE=1 npm test→ live tests pass (site reachable, INR pricing present).npx @modelcontextprotocol/inspector node dist/index.jslists 10 tools, 4 prompts, resources.In Inspector,
raivatedu_get_pricing {market:"in"}returns 3 INR plans.In Inspector,
raivatedu_get_page_content {path:"https://evil.example.com"}is refused.Claude Desktop config added with the correct absolute path; app fully restarted.
Tools icon shows raivat-education with 10 tools.
"Is the RaivatEdu website up?" triggers
raivatedu_check_website_statusand answers.
Security considerations
Read-only. No tool writes, submits forms, sends messages, or authenticates. Contact tools only surface already-public email addresses.
SSRF prevention. Outbound fetches are restricted to
raivatedu.com/www.raivatedu.comover HTTP(S), and only to paths in the verified sitemap-derived allowlist. Full URLs are parsed and host-checked; redirects are re-validated against the allowlist. Arbitrary/internal/external URLs are refused.robots.txt respected.
/api/is always blocked, matching the site'sDisallow: /api/.No access-control bypass. The server never attempts auth, CAPTCHAs, paywalls, or private areas.
Untrusted content. Page text is treated as data, not instructions (stated in the server instructions and the
summarize_pageprompt). Returned text is inert; nothing is executed.No secrets. No credentials, cookies, or tokens are used, stored, or logged. Logs go to stderr and contain only URLs/status/timing.
Polite. Timeouts, bounded retries with backoff, and a configurable minimum request interval protect the origin.
Input validation. All inputs validated with Zod (
.strict()where applicable) with length/range constraints.
Known limitations
Not a course catalog. RaivatEdu publishes no public courses, categories, user accounts, or search API, so there are intentionally no
list_courses/get_course_details/list_categoriestools. Course-like names on the site are sample data only.search_contentis client-side over ~28 curated pages per market — it is not a full-site crawl or a live search index.Scope = public marketing pages. The authenticated product (
app.raivatedu.com) and/api/are out of scope by design.Catalog is a snapshot. Page/feature/market lists were captured on 2026-10-13. If the site adds pages, update
src/config.ts(and the catalog count test). Tools degrade gracefully (404 → clear error) if a page is removed.include_descriptions: trueissues one request per item (slower); off by default.
Troubleshooting
Symptom | Fix |
Server not listed in Claude Desktop | Check |
"Server disconnected" / spawn error | Ensure |
Tools appear but every call errors with network messages | Check connectivity to |
"not a known public RaivatEdu page" | Use |
Garbled MCP / protocol errors | Something wrote to stdout. This server logs only to stderr — don't add |
Inspector can't connect | Rebuild first; run |
| They are in the test toolchain (vitest/esbuild). |
Use as a plugin
This repo ships an Open Plugins component at .mcp.json, so any
MCP client that reads plugin repos can pick the server up directly. It points at
the hosted, read-only endpoint:
{
"mcpServers": {
"raivat-education": {
"type": "http",
"url": "https://mcp.raivatedu.com/mcp"
}
}
}No API key is required — the server holds no customer data and performs no write actions. To run it yourself instead, see the stdio and HTTP instructions above.
License
MIT — see LICENSE. Independent/unofficial; "RaivatEdu" marks belong to RaivatEdu Technologies Pvt. Ltd. Not affiliated or endorsed.
Available Tools
10 toolsraivatedu_check_website_statusCheck RaivatEdu Website StatusARead-onlyIdempotent
Check whether the RaivatEdu website (https://www.raivatedu.com) is reachable and how fast it responds.
Performs a single HTTP HEAD request to a market home page and reports the status code and round-trip time. Use this to confirm the site is up before running other tools, or to diagnose failures.
Args:
market (optional): locale to probe (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "reachable": boolean, "status": number, "url": string, "response_time_ms": number, "checked_at": string }
Inputs: market, response_format.
raivatedu_get_contact_informationGet RaivatEdu Contact InformationARead-onlyIdempotent
Retrieve RaivatEdu's publicly listed contact details: sales, support and security email addresses plus the contact and demo page URLs.
Email addresses come from the Organization JSON-LD contact points (the site's own machine-readable contact data). This tool does NOT submit forms or send messages — it only reads published contact details.
Args:
market (optional): locale used for the contact/demo page URLs (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "general_email": string | null, "contact_points": [ { "type": string, "email": string | null, "telephone": string | null } ], "contact_page": string, "demo_page": string }
Inputs: market, response_format.
raivatedu_get_page_contentGet RaivatEdu Page ContentARead-onlyIdempotent
Fetch and summarize the text of a specific public RaivatEdu page.
Accepts a path (e.g. "/in/pricing" or "in/features/admissions") or a full raivatedu.com URL. For safety the page MUST be one of the known public pages (use raivatedu_list_pages to discover them); arbitrary or external URLs are refused, and /api/ paths are blocked per robots.txt.
Returns the page title, meta description, heading outline, main body text (truncated), internal links, and any FAQ entries found in the page's structured data.
Args:
path (string, required): page path or full raivatedu.com URL.
max_text_chars (number): cap on returned body text, 200–20000 (default 6000).
include_links (boolean): include the list of internal links (default true).
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "url": string, "type": string, "title": string, "description": string, "canonical": string | null, "headings": [ { "level": number, "text": string } ], "text": string, "faqs": [ { "question": string, "answer": string } ], "links": [ { "text": string, "url": string } ] }
Errors:
"not a known public RaivatEdu page" if the path is unknown — call raivatedu_list_pages.
"Page not found" (HTTP 404) if the page no longer exists.
Inputs: path (required), include_links, max_text_chars, response_format.
raivatedu_get_pricingGet RaivatEdu PricingARead-onlyIdempotent
Retrieve RaivatEdu's subscription plans and prices for a given market.
Prices are read from the schema.org pricing Offers embedded in the market's /pricing page JSON-LD, so currency and amounts are exactly as published (e.g. India: Starter, Professional, Enterprise priced per user per month in INR). A 14-day free trial is offered on all plans.
Args:
market (optional): locale to price (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market. Each market prices in its local currency.
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "market": string, "currency": string, "plans": [ { "plan", "billing", "price": number, "currency", "unit", "minUsers"?, "maxUsers"?, "url"? } ], "source_url": string }
Notes:
Amounts are numeric (e.g. 3500), not pre-formatted strings.
"Enterprise" typically has no maxUsers (open-ended) and may also be quoted via sales.
Inputs: market, response_format.
raivatedu_get_website_infoGet RaivatEdu Website InfoARead-onlyIdempotent
Return verified, high-level information about RaivatEdu: what the product is, the organization behind it, and which markets/currencies it serves.
Data is read from the schema.org JSON-LD (Organization + SoftwareApplication + WebSite) embedded in the site, so it reflects the site's own published description rather than any assumption.
Args:
market (optional): locale whose home page to read (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "product": { "name", "description", "applicationCategory", "applicationSubCategory", "operatingSystem" }, "organization": { "name", "url", "email", "description", "logo" }, "markets": [ { "code", "name", "currency", "url" } ], "source_url": string }
Inputs: market, response_format.
raivatedu_list_featuresList RaivatEdu FeaturesARead-onlyIdempotent
List the product feature areas RaivatEdu documents, each with its dedicated feature page URL.
The nine feature areas are fixed site sections (Fee management, Students & batches, Admissions, Enrolment & renewals, Attendance, Certificates, Communication, Reports, Platform & security). Use raivatedu_get_page_content on a returned URL for the full write-up of a feature.
Args:
market (optional): locale for the URLs (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
include_descriptions (boolean): fetch each feature page's summary (default false).
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "market": string, "count": number, "features": [ { "slug", "label", "url", "description"? } ] }
Inputs: market, response_format, include_descriptions.
raivatedu_list_pagesList RaivatEdu PagesARead-onlyIdempotent
List the public pages available on RaivatEdu for a market — a navigation map of the site.
Returns the verified set of pages (derived from the site's sitemap): home, pricing, enterprise, features (+ detail pages), solutions (+ detail pages), product, integrations, security, about, contact, demo, privacy, terms, resources, blog, guides, help, plus the global careers page. Feed any returned path to raivatedu_get_page_content.
Args:
market (optional): locale to list (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
type (optional): filter to one page category (e.g. "feature", "solution", "resource-article").
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "market": string, "count": number, "pages": [ { "path", "url", "type", "market" } ] }
Inputs: type, market, response_format.
raivatedu_list_resourcesList RaivatEdu ResourcesARead-onlyIdempotent
List RaivatEdu's publicly available educational resource articles (admissions playbooks and guides), plus the resources, blog, guides and help landing pages.
The resource articles are practical pieces for education teams (e.g. first-response-time in admissions, WhatsApp templates, migrating from spreadsheets, admissions funnel metrics). Use raivatedu_get_page_content on a URL to read the full article text.
Args:
market (optional): locale for the URLs (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
include_descriptions (boolean): fetch each article's summary (default false).
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "market": string, "landing_pages": { "resources", "blog", "guides", "help" }, "count": number, "articles": [ { "slug", "label", "url", "description"? } ] }
Inputs: market, response_format, include_descriptions.
raivatedu_list_solutionsList RaivatEdu SolutionsARead-onlyIdempotent
List the audience/solution segments RaivatEdu targets, each with its dedicated page URL.
The four segments are Schools, Colleges & Universities, Coaching Institutes, and Training & EdTech. Use raivatedu_get_page_content on a returned URL for the full pitch tailored to that segment.
Args:
market (optional): locale for the URLs (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
include_descriptions (boolean): fetch each solution page's summary (default false).
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "market": string, "count": number, "solutions": [ { "slug", "label", "url", "description"? } ] }
Inputs: market, response_format, include_descriptions.
raivatedu_search_contentSearch RaivatEdu ContentARead-onlyIdempotent
Search the public RaivatEdu website for a keyword or phrase and return the most relevant pages with matching snippets.
There is no public search API on the site, so this tool performs a client-side search: it fetches a curated set of content-rich pages for the market, scores them against your query (title, headings, description and body), and returns the best matches. Use it to answer "where does the site talk about X?" questions, then drill in with raivatedu_get_page_content.
Args:
query (string, required): 2–200 chars; words are matched case-insensitively.
market (optional): locale to search (in, us, gb, ca, au, nz, ie, sg, ae, za); defaults to the configured market.
limit (number): max results, 1–20 (default 5).
response_format ('markdown' | 'json'): output format (default markdown).
Returns JSON shape: { "query": string, "market": string, "pages_searched": number, "count": number, "results": [ { "title", "url", "type", "score": number, "snippet": string } ] }
Notes:
Searches ~28 marketing/content pages per market; it does not crawl the entire site.
Returns an empty results array (not an error) when nothing matches.
Inputs: query (required), limit, market, response_format.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct slice of data (status, org info, contact, page content, search, pricing, and three curated listings), so misselection risk is low. The only overlap is between raivatedu_list_pages and the specialized list_features/list_solutions/list_resources tools, which enumerate the same underlying pages but with curated metadata; the descriptions make the difference clear enough.
Every tool uses the same raivatedu_ prefix plus a consistent snake_case verb_noun pattern (check_, get_, list_, search_). The verb choice matches the operation type, making the surface fully predictable.
Ten tools is well within the sweet spot, and each covers a distinct read-only capability without redundancy. Nothing feels padded or missing for a site-content server.
The surface covers the full read-only lifecycle: health check, org info, contact, navigation, page fetch, search, pricing, and curated feature/solution/resource listings, with sensible guardrails (known-pages only, robots.txt). Minor gaps remain, such as no cross-market pricing or careers-page specific access, but these are workable via raivatedu_get_page_content.
Maintenance
Related MCP Connectors
Read-only MCP server for Flamel.ai's public content: company overview, blog, case studies, FAQs.
Read-only MCP access to devplane.dev's public pages, FAQ corpus and comparisons.
Read-only MCP server for The Automators: services, pricing, industries, case studies, calculators.
Public read-only MCP for products, frameworks, guides, methodology, and blog metadata.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server for Context Studio, a file-based CMS for governed marketing documents and searchable collections, enabling retrieval and management of AI context via tools like scopes, document reads, and collection search.4-
- AlicenseAqualityAmaintenanceRead-only MCP server for aggregate HitKeep analytics and official documentation, including traffic, events, goals, funnels, ecommerce, Search Console, and AI visibility reporting.16105MIT
- AlicenseNot gradedqualityFmaintenanceRead-only MCP server for accessing GitBook content, including spaces, pages, and search, through AI assistants.67 npmMIT
- AlicenseNot gradedqualityCmaintenancePublic, read-only MCP server exposing structured metadata about the Makuri EdTech platform, including tools for platform info, languages, subjects, pricing, safety, compliance, tech stack, contact, free resources, and interactive panels. Designed for AI assistants to query platform details without accessing user data.MIT