Kabaido MCP Connector

Kabaido MCP Server documentation

The Kabaido Model Context Protocol connector exposes 84 tools across 13 groups so Claude can process RFQs, build quotes, configure products, cost manufacturing process chains, and run sales analytics — all from inside the caller's Kabaido workspace.

Quickstart

  1. Open Claude at claude.ai and visit Settings → Connectors.
  2. Add a new connector pointing at https://mcp.kabaido.com/api/mcp.
  3. Complete the OAuth consent with your Kabaido account.
  4. Try: "Process this RFQ: 200x carbide end mills 10mm 4-flute AlTiN and 50x EN8 shafts 25mm h7."

Authentication

OAuth 2.0 Authorization Code Flow with PKCE (S256). The connector publishes RFC 8414 metadata at /.well-known/oauth-authorization-server. Access tokens expire in 1 hour; refresh tokens rotate on use and last 30 days.

EndpointMethodPurpose
/api/mcp/oauth/authorizeGETAuthorization code issuance (PKCE-backed)
/api/mcp/oauth/tokenPOSTCode → tokens and refresh rotation
/api/mcp/oauth/revokePOSTRFC 7009 token revocation
/.well-known/oauth-authorization-serverGETRFC 8414 metadata document

All registered clients are public — no client secret is accepted. Scopes: read:catalog, write:catalog, read:quotes, write:quotes, read:customers, write:customers, read:manufacturing, write:manufacturing, read:portal, write:portal, read:settings, write:settings, read:analytics, read:knowledge, write:knowledge.

Transport

  • Primary: Streamable HTTP — POST https://mcp.kabaido.com/api/mcp with JSON-RPC 2.0 request bodies.
  • Fallback: SSE — GET https://mcp.kabaido.com/api/mcp/sse then POST https://mcp.kabaido.com/api/mcp/message.

Tool groups (84 tools)

GroupCountExamples
RFQ3kabaido_process_rfq, kabaido_extract_rfq_specs, kabaido_match_rfq_to_products
Customers6kabaido_search_customers, kabaido_create_customer, kabaido_update_customer
Quotes13kabaido_create_quote, kabaido_add_line_item, kabaido_generate_quote_pdf, kabaido_send_quote_email
Stock4kabaido_list_stock_materials, kabaido_create_stock_material
Products7kabaido_search_products, kabaido_bulk_import_products, kabaido_export_products
Configurators5kabaido_configure_product, kabaido_configure_specialised
Catalog6kabaido_list_categories, kabaido_update_category_schema, kabaido_create_from_template
Manufacturing10kabaido_list_machines, kabaido_calculate_process_chain
Portal7kabaido_create_portal_link, kabaido_update_portal_link_settings
Integrations4kabaido_list_integrations, kabaido_test_integration
Settings9kabaido_invite_member, kabaido_update_branding
Analytics6kabaido_get_quote_analytics, kabaido_get_conversion_report
Knowledge / AEI4kabaido_search_knowledge, kabaido_recommend_material

Error envelopes

Every failure returns the same JSON shape so Claude never sees a bare stack trace or generic 500:

{
  "error": "Customer 01234567-89ab-4cde-8fed-0123456789ab not found in this workspace.",
  "code": "ENTITY_NOT_FOUND",
  "suggestion": "Verify the id or locate the record via kabaido_search_customers."
}

Error codes in use: AUTH_REQUIRED, AUTH_EXPIRED, AUTH_INVALID, AUTH_INSUFFICIENT_SCOPE, WORKSPACE_NOT_FOUND, ENTITY_NOT_FOUND, VALIDATION_ERROR, DUPLICATE_ENTRY, RATE_LIMITED, QUOTE_STATUS_INVALID, CONFIGURATOR_VALIDATION, PRECONDITION_FAILED, UPSTREAM_UNAVAILABLE, INTERNAL_ERROR.

Rate limits

  • Global: 120 requests per minute per subject (OAuth token or user id).
  • Destructive per-tool: 10 requests per minute per subject per destructive tool.
  • Response payloads cap at ~75 000 characters (≈19 000 tokens) with warnings surfaced when truncation happens.

Worked examples

1. Process an RFQ end-to-end

kabaido_process_rfq(text: "500x M8x30 A4-80 socket cap, 200x 10mm AlTiN end mills, 50x EN8 h7 shafts 25mm x 100mm")
kabaido_create_quote(title: "Aerospace Dynamics RFQ 2026-01")
kabaido_add_line_item(...) x3
kabaido_calculate_totals(quote_id: ...)

2. Build and send a quote

kabaido_search_customers(query: "Hoffmann")
kabaido_create_quote(customer_id: ..., title: "Hoffmann Q1 2026")
kabaido_add_product_to_quote(...) xN
kabaido_generate_quote_pdf(quote_id: ...)
kabaido_send_quote_email(quote_id: ..., recipient_email: "procurement@hoffmann.test")

3. Configure a precision shaft

kabaido_list_configurators()
kabaido_get_configurator(configurator_id: ...)
kabaido_configure_product(
  configurator_id: ...,
  parameters: { diameter: 50, length: 200, material: "Ti-6Al-4V" }
)

4. Cost a manufacturing process chain

kabaido_list_machines(classification: "cnc_mill")
kabaido_list_resources(department: "Manufacturing")
kabaido_calculate_process_chain({
  stock_id: ...,
  steps: [
    { machine_id: ..., resource_id: ..., minutes: 45, consumable_ids: [...] },
    { machine_id: ..., minutes: 10 },
    { resource_id: ..., minutes: 15 }
  ]
})

5. Create a scoped customer portal

kabaido_create_portal_link({
  slug: "ita-tools-cutting",
  customer_id: ...,
  enabled_category_ids: ["cutting-tools-uuid"],
  enabled_configurator_ids: ["end-mill-configurator-uuid"]
})

6. Quarterly sales review

kabaido_get_quote_analytics({ window_days: 90 })
kabaido_get_conversion_report({ window_days: 90 })
kabaido_get_product_analytics({ window_days: 90, limit: 10 })
kabaido_get_pipeline_report({ window_days: 60 })

7. Register new stock material

kabaido_create_stock_material({
  material_code: "Inconel 625 Round 15mm",
  material_category: "titanium",
  shape: "round",
  cost_per_unit: 72,
  unit: "kg"
})

8. Invite a teammate

kabaido_invite_member({
  email: "sarah@pentaprecision.test",
  role: "engineer"
})

Workspace isolation

Every tool filters its Supabase query by account_id. Leakage is prevented by:

  1. Supabase Row Level Security on every business table.
  2. Explicit account_id filters in every tool query.
  3. Scope enforcement inside defineTool.
  4. Test coverage in src/lib/mcp/__tests__/isolation.test.ts that seeds two workspaces and asserts invisible.

Support