re:solved developer resources

re:solved API & MCP Server Documentation

Everything an agent or developer needs to work with re:solved digital: the machine-readable OpenAPI specification, the public intake API, our MCP server, and the discovery files that describe this site.

Quick links

Endpoints

MethodPathAuthDescription
GET/openapi.jsonNoneOpenAPI 3.1 specification for the whole public surface (alias: /api/openapi.json).
GET/api/public/v1/servicesNoneServices, managed roles, delivery process, pricing plans and FAQ as JSON. ?language=en|ro.
GET/api/public/v1/blog/postsNoneList or search published guides. ?language=en|ro, ?q=<phrase>, ?limit=1..50.
GET/api/public/v1/blog/posts/{slug}NoneFull markdown body of one guide. ?language=en|ro.
POST/api/public/v1/ai-audit-submitNoneSubmit an AI Automation Opportunity Report request (version-pinned). JSON in, JSON out.
POST/api/public/ai-audit-submitNonePermanent unversioned alias of the current major version (v1).
GET/api/public/versionsNoneMachine-readable API versioning and deprecation policy.
GET/.well-known/api-catalogNoneRFC 9727 linkset pointing at the OpenAPI spec, docs and version metadata.
POST/mcpOAuth 2.1re:solved MCP server (Streamable HTTP). Tools: get_services_and_pricing, list_blog_posts, search_blog_posts, get_blog_post.
GET/.well-known/mcp.jsonNoneMCP server manifest: Streamable HTTP endpoint, protocol version, OAuth metadata and tool catalog (aliases: /.well-known/mcp/manifest.json, /mcp.json).
GET/.well-known/oauth-protected-resourceNoneOAuth protected-resource metadata for the MCP server.
GET/llms.txtNoneSite summary for language models.
GET/.well-known/ai.txtNoneAI crawling, training and attribution directives.
GET/sitemap.xmlNoneSitemap with hreflang alternates.
GET/rss.xmlNoneBlog RSS 2.0 feed.

Authentication

The public HTTP endpoints listed above require no credentials. The MCP endpoint (/mcp) is protected with OAuth 2.1; clients discover the authorization server from /.well-known/oauth-protected-resource and complete a standard authorization-code flow with PKCE. Most MCP clients handle this automatically once you add the server URL.

Zero-auth access, free tier & sandbox

There is no API key to request, no account to create and no “contact sales” step. Every content, discovery and metadata endpoint is free and callable anonymously by agents and humans alike — the only quota is the published rate limit. The same guarantees are published machine-readably as the x-agent-onboarding extension in /openapi.json.

# Services, pricing and managed roles — no key, no signup
curl https://re-solved.digital/api/public/v1/services

# Search the guide library
curl "https://re-solved.digital/api/public/v1/blog/posts?q=agents&limit=5"

# One guide, as markdown
curl https://re-solved.digital/api/public/v1/blog/posts/ai-agents-vs-chatbots

Sandbox

The only write endpoint accepts "dry_run": true. In that mode it runs the full contract — validation, rate-limit headers, response shape — and echoes the normalised submission back without creating a lead or notifying anyone. Use it to test an integration end to end before sending real data.

curl -X POST https://re-solved.digital/api/public/v1/ai-audit-submit \
  -H "Content-Type: application/json" \
  -d '{
    "dry_run": true,
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "company_name": "Example GmbH",
    "biggest_manual_task": "Manual quotation preparation",
    "consent_to_contact": true
  }'

# 200 OK — validated and echoed back, no lead created
{ "ok": true, "dry_run": true, "received": { ... } }

Example request

curl -X POST https://re-solved.digital/api/public/v1/ai-audit-submit \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "company_name": "Example GmbH",
    "biggest_manual_task": "Manual quotation preparation",
    "consent_to_contact": true
  }'

# 200 OK
{ "ok": true }

Error format

Every /api/* failure returns JSON with a stable error code, a human-readable message, a recovery hint, and links back to these docs.

{
  "error": {
    "code": "invalid_request",
    "message": "Name, company name and a valid email are required.",
    "hint": "Send name, email and company_name as non-empty strings.",
    "status": 400,
    "docs": "https://re-solved.digital/developers",
    "openapi": "https://re-solved.digital/openapi.json"
  }
}

MCP server

Add the re:solved MCP server to any MCP-compatible client to query our services, pricing and guides directly:

{
  "mcpServers": {
    "re-solved": {
      "url": "https://re-solved.digital/mcp"
    }
  }
}

The server speaks the Model Context Protocol over Streamable HTTP at https://re-solved.digital/mcp (protocol revision 2025-06-18). A machine-readable manifest describing the transport, OAuth 2.1 authorization and every tool with its JSON Schema is published at /.well-known/mcp.json (aliases: /.well-known/mcp/manifest.json and /mcp.json).

re:solved API versioning & deprecation policy

The re:solved API uses URL path versioning. The canonical form is /api/public/v1/<endpoint>; the current major version is v1. Unversioned paths such as /api/public/ai-audit-submit are permanent aliases of the current major version — pin the versioned path for production integrations.

  • Every API response carries API-Version and API-Supported-Versions headers.
  • Breaking changes never land in an existing version. They ship under a new path (for example /api/public/v2/…).
  • Additive, backwards-compatible changes (new optional fields, new endpoints) may ship in the current version at any time.
  • Endpoints scheduled for removal respond with Deprecation: true, a Sunset date (RFC 8594) and Link: <…/developers#versioning>; rel="deprecation" for at least 180 days before the endpoint is withdrawn.
  • The policy is machine-readable at /api/public/versions and mirrored in the x-versioning extension of the OpenAPI document.

re:solved API rate limits

The re:solved API allows 60 requests per 60 seconds per client IP address and endpoint group. Every API response advertises the quota using the IETF RateLimit header fields, so agents can self-throttle without guessing:

HTTP/1.1 200 OK
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=57;t=41
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 41

# once the quota is exhausted
HTTP/1.1 429 Too Many Requests
Retry-After: 41
RateLimit: "default";r=0;t=41

{ "error": { "code": "rate_limited", "status": 429, ... } }
  • RateLimit-Policy: "default";q=60;w=60 — the quota (q) and window in seconds (w). Present on every API response.
  • RateLimit: "default";r=<remaining>;t=<seconds> — live remaining quota and seconds until the window resets.
  • X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset mirror the same values for legacy clients.
  • Exceeding the quota returns 429 with Retry-After (seconds) and a JSON error whose code is rate_limited. Wait for Retry-After before retrying, and prefer exponential backoff for repeated 429s.
  • All rate-limit headers are exposed cross-origin via Access-Control-Expose-Headers. The machine-readable policy is at /api/public/versions and in the x-rate-limit extension of /openapi.json.

Webhooks

re:solved does not currently publish outbound webhooks. Agent deployments we operate for clients are wired to their own systems during onboarding — write to contact@re-solved.digital to discuss an integration.