Atlas / MCP servers / blurifycom / AI-Native Open-source Casino Platform Framework

AI-Native Open-source Casino Platform FrameworkBLOCK

mcp/blurifycom/openora

Open-source Casino Platform Framework - AI-Native, Self-hosted, Headless, Plugin-based 🎰

Verdict
BLOCK
Grade
F
Trust score
57 /100
Exposed tools
26 24r · 2w · 0d
Transport
stdio · streamable-http
License
AGPL-3.0
Stars
25
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/blurifycom/openora/actions/workflows/pipeline.yml) [](https://www.npmjs.com/package/@openora/core) [](https://www.npmjs.com/package/@openora/core?activeTab=versions) [](./LICENSE) [](#requirements) [](#requirements) [](./CONTRIBUTING.md) [](./CODEOFCONDUCT.md) [](https://github.com/blurifycom/openora/discussions)

Open-source, headless, plugin-based, AI-native Casino Platform Framework. Clone it, extend it, deploy it - without forking core.

The platform ships the backend surface (auth, wallet, player management, compliance, audit, chat, backoffice) as composable modules and a typed SDK. Game lobby and CMS are early; bonuses, tournaments, affiliates and jackpots are not built yet - the order is being picked in Discussions. Your frontend, branding, and vendor adapters live in your own consumer repo and talk to it over HTTP. Nothing operator-specific lives here.

[!WARNING] Status: alpha (pre-1.0). Contracts, package layout, and APIs may change between releases. Not yet recommended for production without your own review. See the roadmap.

Highlights

  • **Headless
Read from source at commit 6c9c84d54f65OBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add testing --env PAYMENT_WEBHOOK_SECRET=${PAYMENT_WEBHOOK_SECRET} -- npx -y @openora/[email protected]
claude-desktop
{
  "mcpServers": {
    "testing": {
      "command": "npx",
      "args": [
        "-y",
        "@openora/[email protected]"
      ],
      "env": {
        "PAYMENT_WEBHOOK_SECRET": "${PAYMENT_WEBHOOK_SECRET}"
      }
    }
  }
}
03

Exposed tools (26)

24 read · 2 write · 0 destructive.

ToolRiskDescription
catalog-overviewread
db-query-readonlyread
describe-moduleread
docs-searchread
enhance-intentread
get-config-schemaread
get-drizzle-schemaread
impactread
legacy_lookupreadLegacy lookup
list-adaptersread
list-agent-toolsread
list-eventsread
list-extension-pointsread
list-modulesread
list-routesread
list-slash-commandsread
propose-table-changeread
read-agents-mdread
regenread
run-verifywrite
scaffold-appread
scaffold-moduleread
scaffold-pluginread
scaffold-routeread
schema-getread
startwrite
04

Trust audit

BLOCKgrade F · trust 57/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (1 observation(s))
Shell
declared (2 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
packages/core/src/mail/service/mail-payload.service.ts
mail-payload.service.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
packages/core/.env.example:1
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/oss_igaming
MEDIUMInventory / provenance · inv.binary · CWE-1104
packages/core/src/server/kernel/redis-pubsub-realtime-transport.ts
redis-pubsub-realtime-transport.ts
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:21
DATABASE_ADMIN_URL: postgres://postgres:postgres@localhost:5432/oss_igaming_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:22
DATABASE_URL: postgres://postgres:postgres@localhost:5432/oss_igaming_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:23
TEST_ADMIN_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:25
TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/oss_igaming_test
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/core/src/pam/identity/__tests__/identity.access-gates.int.test.ts:157
token: 'minted-session-token',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/core/src/pam/identity/__tests__/phone-verification.service.int.test.ts:54
password: 'stored-password-hash',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/core/src/pam/identity/__tests__/phone-verification.service.int.test.ts:60
token: 'active-session-token',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/core/src/pam/identity/__tests__/phone-verification.service.int.test.ts:155
token: 'other-active-session-token',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/core/src/pam/identity/__tests__/phone-verification.service.int.test.ts:195
password: 'stored-password-hash',
LOWInventory / provenance · inv.hidden_file · CWE-1104
.dependency-cruiser.cjs
.dependency-cruiser.cjs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.oxfmtrc.json
.oxfmtrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.oxlintrc.json
.oxlintrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.dependency-cruiser.cjs:40
files: ['../../extensions.config.ts'],
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/core/scripts/generate-all.mjs:17
join(core, '../../node_modules/.bin/drizzle-kit'),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/core/src/admin-console/__tests__/backoffice.router.test.ts:11
import { mock, testContext, makeAuditWriter, makeAdminGuard } from '../../testing/mock.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/core/src/admin-console/__tests__/backoffice.service.int.test.ts:4
import { mock } from '../../testing/mock.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/core/src/analytics/__tests__/analytics.router.test.ts:4
import { mock, adminCaller, testContext } from '../../testing/mock.js';
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/adapters/kyc.md:218
`POST /compliance/kyc/webhook` is unauthenticated (M2M, no admin session) and relies
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/adr/0012-player-front-next-rsc.md:64
`prefetchLobby`, `prefetchGames`, `prefetchWallet`, etc., live in `packages/sdks/react-sdk/src/server/`. They run server-only (no `'use client'`, no React tree), build an oRPC client via `@openora/sdk
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
.rulesync/subagents/dev.md:12
You are a senior backend TypeScript engineer (Hono, oRPC, Drizzle) building the OSS igaming platform. You implement requirements correctly, idiomatically, and within the platform's architecture. The p
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
.rulesync/subagents/expert.md:13
You are a senior iGaming product/domain expert who has shipped multiple real-money platforms: player journeys, game mechanics, RGS/provably-fair, payments (PSP + crypto), KYC/AML, responsible gaming,
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
.rulesync/subagents/quality-reviewer.md:12
You are a senior code-quality reviewer for this repo. One pass over the changed files, several lenses. You are NOT the implementer - findings only, no changes.

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 6c9c84d54f65full audit observations/trust-audit/mcp-server/blurifycom__openora.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-126c9c84d54f65BLOCKF57first audit
06

Questions

What is the @openora/mcp MCP server?

Open-source Casino Platform Framework - AI-Native, Self-hosted, Headless, Plugin-based 🎰

What tools does @openora/mcp expose?

26 in total: 24 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @openora/mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (57/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does @openora/mcp need?

It reads PAYMENT_WEBHOOK_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @openora/mcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @openora/testing at 0.4.0.

How current is this page?

The grade is for one exact copy of the source (6c9c84d54f65), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement