Developers
WebMCP tools, a JSON content API and machine-readable files for building with Ainovaq.
Ainovaq gives AI agents and developer tools structured ways to read our services and content without scraping pages. Everything below is public and needs no API key.
Quick start: free, no signup, no API key
- Free: there is no paid tier and no usage fee.
- No signup, no approval and no API key: call any endpoint straight away.
- Safe to test against production: every endpoint is read-only, so no separate sandbox is needed.
- Safe retries: POST requests (A2A agent, MCP server) accept an Idempotency-Key header. A retry with the same key and body within 24 hours returns the stored response (Idempotent-Replayed: true) instead of running again.
- Rate limit: 120 requests per minute per IP address. Responses include RateLimit, RateLimit-Policy and X-RateLimit-* headers; over the limit you get HTTP 429 with Retry-After.
Your first request:
curl "https://ainovaq.com/wp-json/wp/v2/posts?per_page=1&_fields=id,title,link"
Machine-readable summary: /api
WebMCP tools (Model Context Protocol in the browser)
Every page on ainovaq.com registers WebMCP tools: functions an AI agent running in the browser can call directly and get structured answers from. They follow the W3C Web Machine Learning Community Group WebMCP draft and do nothing in browsers that do not support it.
list_services— Lists the five Ainovaq services (Build, GTM, Digital, Talent and Infra) with a one-line summary and page URL for each.get_service_details— Returns what one service includes and the outcomes clients get.search_blog— Searches the Ainovaq blog and returns titles, short summaries and links.get_contact_info— Returns the company email, phone, LinkedIn page and booking link.book_consultation— Opens the booking calendar with the name and email pre-filled. The user still picks the time and confirms.open_page— Navigates the browser tab to a page of the website.
Source: https://ainovaq.com/wp-content/themes/ainovaq-theme/assets/js/webmcp.js
Content API (REST, JSON)
Blog articles, categories and pages are available as JSON through the WordPress REST API. Read-only access needs no authentication.
- API root and route index —
https://ainovaq.com/wp-json/ - Blog articles —
GET /wp-json/wp/v2/posts?search=mvp&per_page=5 - Categories —
GET /wp-json/wp/v2/categories - Pages —
GET /wp-json/wp/v2/pages
OpenAPI 3.0 specification: /openapi.json (also at /swagger.json). Import it into Postman, Swagger UI or any API client.
curl "https://ainovaq.com/wp-json/wp/v2/posts?search=go-to-market&_fields=title,link,excerpt"
Pagination: article and page lists are cursor-based. Each response has an X-Next-Cursor header and a Link rel="next" while more results exist; pass ?cursor=<value> to get the next batch. Cursors never skip or repeat items, even when new articles are published in between. The page parameter still works.
SDKs (JavaScript, Python, Ruby)
Official client libraries with the same methods in every language: services, service details, contact, article search, latest articles, one article by ID or slug, categories and site search. No API key and no dependencies.
- JavaScript / TypeScript — coming soon
- Python — coming soon
- Ruby — coming soon
MCP server (Model Context Protocol)
Connect Claude, Cursor or any MCP client to the Ainovaq MCP server (Streamable HTTP, no authentication). Tools: list_services, get_service_details, search_blog and get_contact_info. All are read-only.
- Server URL —
https://ainovaq.com/mcp - Server card —
/.well-known/mcp/server-card.json
Registry name: com.ainovaq/mcp.
{
"mcpServers": {
"ainovaq": { "type": "http", "url": "https://ainovaq.com/mcp" }
}
}
For clients that only launch local servers, use the npm package (stdio):
{ "mcpServers": { "ainovaq": { "command": "npx", "args": ["-y", "ainovaq", "mcp-server"] } } }A2A agent (Agent2Agent protocol)
Other AI agents can ask the Ainovaq agent about our services, search the blog and get contact details over the A2A protocol (JSON-RPC, method message/send). It is read-only and needs no authentication.
- Agent card —
/.well-known/agent-card.json - Endpoint —
https://ainovaq.com/wp-json/aq/v1/a2a
curl -X POST "https://ainovaq.com/wp-json/aq/v1/a2a" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{"role":"user","messageId":"1","parts":[{"kind":"text","text":"What services does Ainovaq offer?"}]}}}'Bulk export (async jobs)
To ingest every article with its full text in one document, start an export job. The API answers 202 Accepted straight away with a status URL (Location header); poll it, waiting the Retry-After seconds, until status is "succeeded", then download result_url. Jobs and results are kept for 24 hours; up to 10 jobs per hour.
curl -i -X POST "https://ainovaq.com/wp-json/aq/v1/exports" -H "Content-Type: application/json" -d '{"type":"articles"}'
# 202 Accepted, Location: …/aq/v1/exports/{id}
curl "https://ainovaq.com/wp-json/aq/v1/exports/{id}" # status: queued → running → succeeded
curl "https://ainovaq.com/wp-json/aq/v1/exports/{id}/result" # the exportBatch requests
To make several reads in one round trip, send up to 20 GET requests to POST /wp-json/aq/v1/batch. Allowed paths: /wp/v2/posts, /wp/v2/pages and /wp/v2/categories (with an optional /{id}), /wp/v2/search and /aq/v1/exports/{id}[/result], each with an optional query string. You get one entry per request, in order, with its own status, headers and body, so one missing article does not fail the batch. Each request in a batch counts toward the rate limit. In the OpenAPI document this is the batchRead operation.
curl -X POST "https://ainovaq.com/wp-json/aq/v1/batch" -H "Content-Type: application/json" \
-d '{"requests":[{"id":"latest","path":"/wp/v2/posts?per_page=3&_fields=id,title,link"},{"id":"mvp","path":"/wp/v2/search?search=mvp"}]}'
# {"responses":[{"id":"latest","status":200,"headers":{…},"body":[…]},{"id":"mvp","status":200,…}]}Machine-readable files for AI agents
- llms.txt — a short, curated map of the site for large language models.
- llms-full.txt — the full site content in one plain-text file.
- /.well-known/api-catalog — the API catalog (RFC 9727) listing the APIs above and their documentation.
- /.well-known/ard.json — agent resource directory describing each service and the questions it answers.
- XML sitemap — every public page and article.
Permissions and scopes
The public API needs no authentication: every scope below is granted to anonymous callers, and there are no write or private scopes. Creating, editing or deleting content is not available through the API. Each operation in the OpenAPI document lists its scope in x-required-scopes.
| Scope | Allows | Endpoints | Who has it |
|---|---|---|---|
content:read | Read published articles, pages, categories and search | GET /wp-json/wp/v2/posts|pages|categories|search, POST /wp-json/aq/v1/batch | Everyone, no credentials |
services:read | Read services and contact details | MCP tools, A2A agent card | Everyone, no credentials |
agent:invoke | Ask the A2A agent / call MCP tools (read-only answers) | POST /wp-json/aq/v1/a2a, POST /mcp | Everyone, no credentials |
exports:create | Start a bulk export job (10 per hour per IP) | POST /wp-json/aq/v1/exports | Everyone, no credentials |
exports:read | Poll export jobs and download results | GET /wp-json/aq/v1/exports/{id}[/result] | Anyone with the job ID |
Limits still apply to everyone: 120 requests per minute per IP address and 10 export jobs per hour.
Versioning and deprecation policy
Effective October 21, 2026. This policy covers the content API, the A2A agent, the MCP server and the machine-readable files above.
Versioning
- APIs are versioned in the URL: /wp-json/wp/v2/ for content and /wp-json/aq/v1/ for the agent. The OpenAPI document has its own version number (info.version).
- Breaking changes (removing or renaming an endpoint, parameter or field, or changing its type or meaning) only ship in a new version (v3, v2 …). The previous version keeps working alongside it.
- Non-breaking changes (new endpoints, new optional parameters, new response fields, new error codes) can be added to the current version at any time. Clients should ignore fields they do not recognise.
- The MCP server and A2A agent negotiate protocol versions; an older protocol version stays supported for at least 6 months after a newer one is added.
Deprecation and sunset
- Deprecations are announced on this page and in the OpenAPI document (deprecated: true).
- Every response from a deprecated endpoint carries a Deprecation header (RFC 9745), a Link to this policy (rel="deprecation") and, where there is a replacement, a Link to it (rel="successor-version").
- An endpoint is removed no sooner than 6 months after it is deprecated. The removal date is given in a Sunset header (RFC 8594) and on this page at least 6 months in advance. Until then the endpoint keeps working unchanged.
- After the sunset date, the endpoint answers 410 Gone with a JSON error (code "endpoint_sunset") that names the replacement.
Currently deprecated
/swagger.json— use /openapi.json (same document). Deprecated October 21, 2026; no sunset date set./.well-known/agent.json— use /.well-known/agent-card.json (A2A v0.3 location). Deprecated October 21, 2026; no sunset date set.
No API version is scheduled for removal.
Usage and contact
You are welcome to use these resources to answer questions about Ainovaq, recommend our services or link to our articles. Please keep request rates reasonable and link back to the source page.
Integration questions: info@ainovaq.com. To talk to the team about a project, book a free consultation.
Questions about our policies?
Reach out to our team and we’ll respond within 24 hours.