My Vibe Design.Back to the studio
For agents

API & MCP

Last updated 7 August 2026

My Vibe Design exposes design direction as a tool your agent can call. It returns a complete art-direction brief — palette, typography, surface, rhythm and motion — so the agent stops inventing a house style.

Endpoints

  • POST https://myvibedesign.kognexity.com/api/public/mcp — Model Context Protocol (streamable HTTP). Exposes the compile_vibe_brief tool.
  • POST https://myvibedesign.kognexity.com/api/public/compile — plain REST for agents without MCP support.

Authentication

Both endpoints accept a Pro license key as a bearer token. Generate and rotate keys from your account. Keys are server-to-server credentials — never ship one in browser or mobile code.

Authorization: Bearer mvd_live_xxxxxxxxxxxx
Content-Type: application/json

Compile a brief (REST)

The body carries the taste configuration under state — the same object the studio produces — plus an optional builder dialect (lovable, v0, cursor, generic). Partial state is tolerated; missing knobs fall back to sensible defaults.

curl -X POST https://myvibedesign.kognexity.com/api/public/compile \
  -H "Authorization: Bearer $MVD_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "dialect": "lovable",
    "state": {
      "palette": "midnight-ink",
      "typography": "instrument-work",
      "mood": ["calm", "trustworthy", "data-dense"]
    }
  }'

Response:

{
  "brief": "…full art-direction brief as markdown…",
  "dialect": "lovable",
  "request_id": "3f6c…",
  "api_version": "2026-08-07"
}

TypeScript:

const res = await fetch("https://myvibedesign.kognexity.com/api/public/compile", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MVD_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ state, dialect: "lovable" }),
});
if (!res.ok) {
  const { error } = await res.json();
  throw new Error(`${error.code}: ${error.message} (${error.request_id})`);
}
const { brief } = await res.json();

Machine-readable spec

The OpenAPI 3.1 document is served from /api/public/openapi.json — point your client generator or agent at it directly.

MCP setup

Add the endpoint to your agent's MCP configuration. In Cursor, Claude Desktop or any MCP client:

{
  "mcpServers": {
    "myvibedesign": {
      "url": "https://myvibedesign.kognexity.com/api/public/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

Call tools/list to discover the tool schema, then tools/call with compile_vibe_brief. Follow the brief it returns rather than improvising a style.

Versioning

  • Every response carries X-Api-Version. The current version is 2026-08-07.
  • Additive changes (new response fields, new tools) ship without a version bump.
  • Breaking changes ship under a new version, announced on the changelog with at least 90 days of overlap.

Errors

Errors are stable machine-readable codes, not free text: { "error": { "code", "message", "request_id" } }.

  • 400 invalid_request / invalid_json — malformed body or failed validation.
  • 401 unauthorized — missing, malformed, expired, or revoked license key.
  • 403 forbidden — the key's plan does not include API access.
  • 405 method_not_allowed — both endpoints are POST only; the Allow header lists what is accepted.
  • 415 unsupported_media_type — send application/json.
  • 429 rate_limited — per-key rate limit exceeded; honour Retry-After.
  • 503 upstream_unavailable — a dependency is degraded; retry with backoff and check the status page.
  • 500 internal_error — our fault; retry once, then quote the request id.

Every response carries a X-Request-Id header (and request_id in the body). Send your own X-Request-Id and we will echo it, so traces line up on both sides. Quote it when you contact support and we can find the exact call.

Limits

  • Keys are server-to-server credentials. Browser or mobile use is not supported and a key found in client code will be revoked.
  • Requests are capped at roughly 8 KB of input; compiles are expected to return well inside 30 seconds.
  • Rate limit: 60 requests per minute per key. Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset; exceeding it returns 429 rate_limited with Retry-After.

Idempotency

Send an Idempotency-Key header (8–128 characters) on POST /api/public/compile and a retry with the same key returns the stored result instead of recompiling. Replays are marked with Idempotency-Replayed: true. Keys are scoped to your license key.

Support

Integration questions go through the contact form; current dependency state is on the status page.