LimejadeHelp

LimeJade API & agent resources

LimeJade developer resources — OpenAPI specification, MCP server, JSON error format, markdown content negotiation, and llms.txt.

This page is the index of LimeJade developer and AI-agent resources. Everything listed here is public, needs no credentials, and lives at a fixed URL.

Machine-readable resources

ResourceURLFormat
OpenAPI 3.1 specification/openapi.jsonJSON
OpenAPI 3.1 specification/api/openapi.yamlYAML
MCP server manifest/.well-known/mcpJSON
MCP Streamable HTTP endpointhttps://www.limejade.com/api/mcpJSON-RPC 2.0
Agent instructions/llms.txtMarkdown
Pricing/pricing.mdMarkdown
Sitemap index/sitemap.xmlXML

MCP server

LimeJade ships a read-only Model Context Protocol server over the Streamable HTTP transport. It is stateless — every request is self-contained, and there is no session to establish.

  • Endpoint: POST https://www.limejade.com/api/mcp
  • Manifest: GET https://www.limejade.com/.well-known/mcp
  • Authentication: none
  • Protocol versions: 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26

Add it to an MCP client with:

{
  "mcpServers": {
    "limejade": {
      "type": "http",
      "url": "https://www.limejade.com/api/mcp"
    }
  }
}

Tools

ToolWhat it returns
get_product_overviewProduct briefing, best-fit use cases, and canonical URLs.
get_pricingPublished plan prices for every billing cadence.
list_doc_pagesEvery help documentation page with its path and summary.
search_docsRanked documentation matches with excerpts.
get_doc_pageFull markdown of one documentation page.

All tools are read-only. They expose no client data and perform no writes.

HTTP API

The application API is tRPC over HTTP at /api/trpc/*. Public procedures — organization lookup, availability, and booking creation for a salon’s public booking page — are described in the OpenAPI document.

Calling conventions

  • Queries are GET with an input query parameter containing URL-encoded JSON.
  • Mutations are POST with a JSON body.
  • Inputs and outputs are wrapped in a superjson envelope: {"json": …}.
  • Dates are ISO 8601 strings in UTC; calendar days are YYYY-MM-DD in the salon’s timezone.
  • Send an idempotencyKey on booking creation so a retry does not double-book.

Error format

Route handlers return a structured JSON error. Match on error.code, which is stable; error.message is human-readable and may change.

{
  "error": {
    "code": "not_found",
    "message": "No API endpoint matches /api/nope.",
    "hint": "Fetch https://www.limejade.com/openapi.json for the list of available operations.",
    "docs": "https://www.limejade.com/docs/api"
  }
}

Codes map to HTTP status: bad_request 400, unauthorized 401, forbidden 403, not_found 404, method_not_allowed 405, not_acceptable 406, conflict 409, payload_too_large 413, unsupported_media_type 415, rate_limited 429, internal_error 500, service_unavailable 503.

tRPC endpoints keep their own envelope, with error.data.code carrying the tRPC error code.

Markdown content negotiation

Public pages follow acceptmarkdown.com. Send Accept: text/markdown and the same canonical URL returns markdown instead of HTML:

curl -H "Accept: text/markdown" https://www.limejade.com/pricing

Responses carry Vary: Accept, Accept-Encoding, so caches keep the HTML and markdown variants apart. Wildcards (*/*) and browser Accept headers resolve to HTML, so nothing about normal page loads changes. Paths under /api, /dashboard, /auth, /book, and any URL that already has its own format (.json, .md, .txt, .xml) are excluded.

Verifying

curl -s https://www.limejade.com/openapi.json | head
curl -s https://www.limejade.com/.well-known/mcp | head
curl -s -o /dev/null -w "%{http_code}\n" https://www.limejade.com/no-such-page   # 404
curl -s -X POST https://www.limejade.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

On this page