Programmatic access to the RidgePoint Customer Portal. Use the REST API for direct HTTP calls, or connect any MCP-compatible AI client to the MCP server.
https://customer.ridgepoint.me/api/v1/*/api/mcpAll requests require an API key. Keys are minted by a Super Admin from the API Keys page. Send the key via the Authorization header (preferred) or x-api-key.
Authorization: Bearer rpk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# or
x-api-key: rpk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxEvery key is bound to one scope and one or more permissions. Responses are automatically filtered to the key's scope — there is no way to read data outside it.
Full read across all vendors, tenants, customers, and subscriptions. Staff use only.
Scoped to a single ISV vendor. Sees only its own subscribers and subscriptions.
Scoped to a single tenant workspace. Sees its own subscriptions, entitlements, and members.
Permissions: read, write, admin, invitations:send, catalogue:read, catalogue:write, catalogue:promote.
/api/v1/mescope: anyReturns the calling key's id, name, scope, and permissions.
/api/v1/statsscope: platformCounts of vendors, tenants, and active subscriptions.
/api/v1/vendorsscope: anyList ISV vendors visible to the key.
/api/v1/tenantsscope: anyList tenant workspaces visible to the key.
/api/v1/tenants/:id/membersscope: anyList user memberships of a tenant. 404 if not accessible.
/api/v1/customersscope: anyList customer organizations visible to the key.
/api/v1/subscriptionsscope: anyList subscriptions. Optional query: ?tenant_id=&vendor_id=
/api/v1/subscriptions/:idscope: anyFetch a single subscription by id.
/api/v1/subscriptions/:id/entitlementsscope: anyList entitlements attached to a subscription.
/api/v1/tenants/:tenant_code/invitations/send-pendingscope: invitations:sendSend pending member invitations. Optional 'emails' array targets specific recipients; omitting it sends all pending invitations up to 'max'.
# List vendors
curl -H "Authorization: Bearer $RIDGEPOINT_KEY" https://customer.ridgepoint.me/api/v1/vendors
# Subscriptions for a tenant
curl -H "Authorization: Bearer $RIDGEPOINT_KEY" "https://customer.ridgepoint.me/api/v1/subscriptions?tenant_id=<uuid>"
# Target a single pending invitation
# (requires an API key with the invitations:send permission)
curl -X POST -H "Authorization: Bearer $RIDGEPOINT_KEY" -H "Content-Type: application/json" -d '{"confirm": true, "emails": ["kraja@qdb.qa"]}' "https://customer.ridgepoint.me/api/v1/tenants/QDB/invitations/send-pending"const res = await fetch("https://customer.ridgepoint.me/api/v1/me", {
headers: { Authorization: `Bearer ${process.env.RIDGEPOINT_KEY}` },
});
const data = await res.json();
console.log(data); // { key_id, name, scope_type, scope_id, permissions }List endpoints return { data: [...] }. Errors return:
{ "error": { "status": 401, "message": "Invalid API key." } }Standard codes: 401 unauthenticated, 403 insufficient permission, 404 not found / not in scope, 500 server error.
Connect any MCP-compatible client (Claude Desktop, IDE plugins, custom agents) using the Streamable HTTP transport. Auth is the same API key.
POST https://customer.ridgepoint.me/api/mcp
Authorization: Bearer rpk_live...
Accept: application/json, text/event-stream
Content-Type: application/json{
"mcpServers": {
"ridgepoint": {
"transport": "http",
"url": "https://customer.ridgepoint.me/api/mcp",
"headers": {
"Authorization": "Bearer rpk_live..."
}
}
}
}whoami — current key scope & permissionslist_vendorslist_tenantslist_customerslist_subscriptions — args: tenant_id?, vendor_id?get_subscription — args: idlist_subscription_entitlements — args: subscription_idlist_tenant_members — args: tenant_idplatform_stats — platform scope only