Raziel MCP
Raziel is an MCP server that provides AI coding agents with deep knowledge of Tide authentication, threshold cryptography, end-to-end encryption, IGA governance, and Forseti smart contracts. It enables agents to follow verified playbooks for implementing TideCloak, perform security gap analysis, and provide guidance on self-hosting versus managed hosting.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.tide.org/mcpWhat its tools do
22 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (22)
tide_listtide_canontide_playbooktide_skilltide_prompttide_adaptertide_list_scenariostide_scenariotide_scenario_manifesttide_scenario_rolestide_scenario_bootstraptide_choose_scenariotide_choose_playbooktide_security_analysistide_blast_radiustide_hostingtide_dpop_assettide_onboardingtide_brandingtide_scaffoldtide_doctortide_gaps
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Implement TideCloak authentication in applications
- Perform security gap analysis of existing systems
- Apply verified playbooks for end-to-end encryption
- Get guidance on self-host vs managed-hosting
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- @tideorg/mcp 1.9.34
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 22 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- 5 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
22 advertised
tide_list
List all available content in the Tide agent pack by category
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category"
],
"properties": {
"category": {
"enum": [
"canon",
"playbooks",
"skills",
"prompts",
"adapters",
"scenarios",
"all"
],
"type": "string",
"description": "Which category to list, or 'all' for everything"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_canon
Read a canon file (invariants, anti-patterns, concepts, framework-matrix, feature-mapping, troubleshooting, tidecloak-bootstrap, etc.)
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Canon file name. Available: agent-authority, anti-patterns, breach-precedents, concepts, custom-contracts, feature-mapping, framework-matrix, hosting-options, iga-change-requests-api, invariants, redirect-handler, security-gap-mapping, security-runtime-probes, tide-neutralization, tidecloak-bootstrap, tidecloak-endpoints, tidify-compatibility, troubleshooting, ux-states, verifiable-claims, version-policy"
},
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
},
"section": {
"type": "string",
"description": "Return only the section(s) whose heading contains this text, e.g. 'AP-62' or 'T-26'. Use it when another document points you at one entry."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_playbook
Read a step-by-step playbook for a specific Tide task
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Playbook name. Available: add-auth-nextjs-existing, add-auth-nextjs-fresh, add-rbac-nextjs, bootstrap-realm-from-template, configure-e2ee-roles-and-policies, deploy-forseti-policy, deploy-tidecloak-docker, diagnose-broken-login, diagnose-missing-roles-or-claims, initialize-admin-and-link-account, migrate-from-existing-auth, protect-api-nextjs, protect-aspnet-core-asgard, protect-routes-nextjs, provision-tidecloak-skycloak, setup-forseti-e2ee, setup-iga-admin-panel, start-tidecloak-dev, verify-jwt-server-side"
},
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_skill
Read a composable skill definition
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Skill name. Available: grc-review, tide-diagnostics, tide-integration, tide-learning-capture, tide-mcp-qa, tide-rbac-and-e2ee, tide-red-team, tide-reviewer, tide-route-and-api-protection, tide-scenario-resolver, tide-security-analyst, tide-setup, tide-solutions-architect"
},
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
},
"section": {
"type": "string",
"description": "Return only the section(s) whose heading contains this text, e.g. 'AP-62' or 'T-26'. Use it when another document points you at one entry."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_prompt
Read a reusable starter prompt from the pack
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Prompt file name. Available: add-admin-approval-flow, build-private-customer-portal, migrate-generic-auth-to-tide, red-team-review, secure-existing-app, security-gap-analysis"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_adapter
Read an adapter instruction file (AGENTS, CLAUDE, replit)
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Adapter file name. Available: AGENTS, CLAUDE, replit"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_list_scenarios
List all available scenario patterns under reference-apps/
{
"type": "object",
"properties": {}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_scenario
Read a scenario summary from reference-apps/<scenario>/scenario.md
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Scenario name. Available: attestation, attested-provenance-registry, encrypted-communication, git-pr-signing-service, iga-admin-governance, organisation-password-manager, policy-governed-signing, relationship-attestation"
},
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_scenario_manifest
Read a scenario manifest from reference-apps/<scenario>/manifest.yaml
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Scenario name. Available: attestation, attested-provenance-registry, encrypted-communication, git-pr-signing-service, iga-admin-governance, organisation-password-manager, policy-governed-signing, relationship-attestation"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_scenario_roles
Read a scenario role-policy matrix from reference-apps/<scenario>/role-policy-matrix.md
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Scenario name. Available: attestation, attested-provenance-registry, encrypted-communication, git-pr-signing-service, iga-admin-governance, organisation-password-manager, policy-governed-signing, relationship-attestation"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_scenario_bootstrap
Read a scenario bootstrap sequence from reference-apps/<scenario>/bootstrap-sequence.md
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Scenario name. Available: attestation, attested-provenance-registry, encrypted-communication, git-pr-signing-service, iga-admin-governance, organisation-password-manager, policy-governed-signing, relationship-attestation"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_choose_scenario
Match a user request to a known scenario pattern before falling back to generic playbooks
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"situation"
],
"properties": {
"situation": {
"type": "string",
"description": "Describe the app or problem, e.g. 'build an organisation password manager'"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_choose_playbook
Recommend the right playbook for a given situation
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"situation"
],
"properties": {
"situation": {
"type": "string",
"description": "Describe what the builder wants to do, e.g. 'add login to a new Next.js app'"
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_security_analysis
Analyze an EXISTING (possibly non-Tide) system for security gaps and map them to Tide capabilities. Returns the Security Analyst role instructions, the security gap mapping table (SG-01…SG-18), and the runtime-probe procedures. Use this when the user asks 'do a security analysis', 'where is my auth weak', or 'what would Tide change about my security'.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
},
"include_runtime_probes": {
"type": "boolean",
"description": "Include the runtime-confirmation probe procedures (canon/security-runtime-probes.md). Only relevant when the operator is authorized to probe a live target. Defaults to true."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_blast_radius
Run a Blast Radius Assessment of an EXISTING app: an adversarial, vendor-neutral map of where authority is concentrated to a single point (whoever obtains that one thing obtains everything it governs), scored by blast radius (Total/Systemic/Contained/Limited) across three cores — Identity, Governance, Access — and delivered as a director-facing PDF. Phase 1 names no vendor; an opt-in Phase 2 companion explains how TideCloak shrinks each blast radius. Use this when the user wants to 'assess', 'red team', 'threat model', 'find the security gaps in', or make a before/after security case for an existing application.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_hosting
Where TideCloak runs: local Docker vs partner-hosted (Skycloak managed TideCloak-as-a-service). Returns the local-vs-hosted decision with the honest trade-offs, the trust model, the verified Skycloak API reference (correct cluster field names and the required version), and the full provisioning playbook. CALL THIS BEFORE STARTING ANY TIDECLOAK DEPLOYMENT — the choice must be made up front (I-17) because a realm cannot be moved between local and hosted afterwards. Triggers: 'deploy to production', 'deploy TideCloak', 'go live', 'host this somewhere', 'managed option', 'stable URL', 'can someone host TideCloak for us', or any request to stand up an instance where local-vs-hosted has not been settled.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_dpop_asset
Returns the exact command that installs `public/tide_dpop_auth.html` — the DPoP relay page the Tide enclave loads during login — plus its sha256, the required next.config.ts rewrite/CSP wiring, and how to verify. `@tidecloak/js` ships the file from 0.14.34; older SDKs and the TideCloak container do not, and a GitHub search finds a STALE copy that posts to window.parent, which breaks the popup fallback and fails login with TIDE-SWE-UNHANDLED. CALL THIS whenever DPoP is enabled (it is on by default), whenever a login fails with TIDE-SWE-UNHANDLED or 'Popup DPoP verification failed to load', and before copying this file from anywhere else.
{
"type": "object",
"properties": {}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_onboarding
STOP KEYCLOAK'S 'UPDATE ACCOUNT INFORMATION' PAGE and collect the details in-app instead. Tide asserts ONLY a username (the vuid) -- no email, no name -- so Keycloak blocks new users on an unstyled form showing a 64-hex username. Returns: a read-only DIAGNOSTIC that identifies which of FOUR mechanisms is causing the page (they need different fixes), the script that fixes it, and a ready-to-drop React modal that collects the details AFTER login via the Account API. CALL THIS whenever signup, onboarding, 'Update Account Information', a profile/details form, or 'what users see after they create an account' comes up -- and ALSO proactively once a realm is bootstrapped, because the default is that every new user hits that page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"realm": {
"type": "string",
"description": "Realm, e.g. 'vialproof'. Fills in the commands."
},
"fields": {
"type": "array",
"items": {
"enum": [
"displayName",
"firstName",
"lastName",
"email"
],
"type": "string"
},
"description": "Which fields to collect. ASK THE USER FIRST — do not guess. Default ['firstName','lastName']."
},
"appName": {
"type": "string",
"description": "App name, e.g. 'Mood Garden'. Used in the modal's copy."
},
"framework": {
"enum": [
"nextjs-app",
"nextjs-pages",
"react-vite"
],
"type": "string",
"description": "Controls the mounting snippet. Default nextjs-app."
},
"tidecloakUrl": {
"type": "string",
"description": "Base URL. Default http://localhost:8080."
},
"componentPath": {
"type": "string",
"description": "Where to WRITE the component, e.g. 'src/components/ProfileOnboarding.tsx'."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_branding
BRAND THE ENCLAVE FOR THE USER — generate a logo + background and upload them so the Tide login/approval screen is branded. Returns a single ready-to-run command that generates the assets (no image model needed), validates them, uploads both, and saves+signs the IdP settings. Also returns the VERIFIED upload contract (multipart parts, the png/jpg/jpeg/gif/webp allowlist with SVG REJECTED, the 5 MB cap, set-branding = save AND re-sign, IGA-exempt) plus image-model prompts for agents that can generate images. Pass realm/accent/appName to get the command pre-filled. CALL THIS whenever branding, a logo, a background, theming or 'skinning' the enclave or login screen comes up — then RUN the command; do not just describe it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"realm": {
"type": "string",
"description": "Realm to brand, e.g. 'myapp'. Fills in the command."
},
"accent": {
"type": "string",
"description": "Hex accent colour without '#', e.g. '2f6f4e'. Default 1f6feb."
},
"appName": {
"type": "string",
"description": "App name. Deterministically varies the mark's geometry so realms look distinct."
},
"tidecloakUrl": {
"type": "string",
"description": "Base URL. Default http://localhost:8080."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_scaffold
START A NEW TIDE APP FROM A WORKING TEMPLATE. Returns the exact commands to copy a complete, building app — login, the DPoP page and its wiring, server-side token AND proof verification, and the realm bootstrap script — then install, bootstrap and check it. CALL THIS when building a new app, BEFORE writing any auth code: the code that most often goes wrong (provider config, DPoP, route and API protection) is then copied, not retyped. Pass `situation` and it picks the template; or name one. Not for adding Tide to an existing app.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"appDir": {
"type": "string",
"description": "Directory to create the app in. Default: the current directory."
},
"appName": {
"type": "string",
"description": "Lowercase name, e.g. 'mood-garden'. Becomes the package name, and so the realm and client names."
},
"template": {
"enum": [
"nextjs-customer-portal",
"nextjs-e2ee-vault",
"react-vite-internal-dashboard",
"vanilla-js-secure-form"
],
"type": "string",
"description": "Choose a template explicitly instead of from `situation`."
},
"situation": {
"type": "string",
"description": "What the user wants to build, in their words. Used to pick the template."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_doctor
FIND AND FIX WHAT IS WRONG WITH A TIDE APP, IN ONE COMMAND. Returns the command that checks an app for the faults behind most broken logins and unprotected APIs. It REPAIRS the mechanical ones itself (re-copies the DPoP page byte-exact, corrects a wrong rewrite path, gitignores .env) and prints the exact fix for the rest, which YOU apply — do not pass the list to the user. Covers: DPoP page missing/stale/served without its headers, useDPoP passed as a JSX prop (silently OFF), createTideCloakProxy called without protectedRoutes (protects nothing), adapter without its embedded key, remote JWKS, Bearer-only token parsing, no server-side verification, secrets about to be committed, a destructive change request pending. CALL THIS after scaffolding or changing auth code, BEFORE telling the user it works, and FIRST whenever a login or an API check misbehaves. This tool call itself only returns the command.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"realm": {
"type": "string",
"description": "Realm name. Adds read-only realm checks (needs the admin password in .env)."
},
"appDir": {
"type": "string",
"description": "App directory. Default: the current directory."
},
"appUrl": {
"type": "string",
"description": "URL of the RUNNING app, e.g. http://localhost:3000. Adds checks of what is actually served."
},
"checkOnly": {
"type": "boolean",
"description": "Report only and change nothing (for CI). Default false: mechanical faults are repaired."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}tide_gaps
Read the gap register — what is still uncertain or unresolved in the pack
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"part": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which part to return when the document is delivered in several parts. Omit for part 1; the response says how many there are."
}
}
}{
"readOnlyHint": true,
"destructiveHint": false
}Prompts
5 advertised
tide-build-app
Start building a Tide-protected app from scratch
- framework
- Target framework (required)
tide-secure-existing
Add Tide to an existing app
tide-security-analysis
Analyze an existing system for security gaps and map them to Tide
tide-build-from-scenario
Start building a Tide app from a known scenario pattern
- scenario
- Scenario name. Available: attestation, attested-provenance-registry, encrypted-communication, git-pr-signing-service, iga-admin-governance, organisation-password-manager, policy-governed-signing, relationship-attestation (required)
- framework
- Target framework (required)
tide-mcp-qa
Run the pre-release QA gate on the Tide MCP pack and issue a SHIP/BLOCK verdict
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 950 ms
- 95th percentile latency
- 950 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 950 ms · metadata changed · 22 tool(s), 5 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http raziel-mcp-tide https://mcp.tide.org/mcpCodex
codex mcp add raziel-mcp-tide --url https://mcp.tide.org/mcpCursor
{
"mcpServers": {
"raziel-mcp-tide": {
"url": "https://mcp.tide.org/mcp"
}
}
}Cline
{
"mcpServers": {
"raziel-mcp-tide": {
"type": "streamableHttp",
"url": "https://mcp.tide.org/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"raziel-mcp-tide": {
"type": "http",
"url": "https://mcp.tide.org/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http raziel-mcp-tide https://mcp.tide.org/mcpClaude Desktop
https://mcp.tide.org/mcpWindsurf
{
"mcpServers": {
"raziel-mcp-tide": {
"serverUrl": "https://mcp.tide.org/mcp"
}
}
}Let your agent find its tools
Find servers like Raziel MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.