Connects stateful reasoning sessions to any MCP client over stdio. You get one tool, reasoning_think, that runs multi-step thought chains at four depth levels (basic, normal, high, expert), each with its own token budget and iteration limits. Sessions persist in memory with rollback, early conclusion, and structured observation/hypothesis/evaluation input. The server exposes six static resources and four resource templates for session lists, JSON snapshots, full markdown traces, and individual thought documents. Seven prompts wrap common workflows like continuing sessions or retrying failed thoughts. Completions are wired for level names, session IDs, and thought references. Useful when you need reproducible reasoning traces that you can inspect, resume, or replay without rebuilding prompt chains manually.
Public tool metadata for what this MCP can expose to an agent.
listAllEntitiesList and filter catalog entities with support for pagination, search, and various filters including groups, types, owners, and git repositories. If the client is trying to fetch data for teams, use 'type': 'team' in these APIs.16 paramsList and filter catalog entities with support for pagination, search, and various filters including groups, types, owners, and git repositories. If the client is trying to fetch data for teams, use 'type': 'team' in these APIs.
pageintegerquerystringtypesarraygroupsarrayownersarraycontextstringpageSizeintegerincludeLinksbooleanincludeOwnersbooleanhierarchyDepthstringgitRepositoriesarrayincludeArchivedbooleanincludeMetadatabooleanincludeNestedFieldsarrayincludeSlackChannelsbooleanincludeHierarchyFieldsarraylistEntityDescriptorsCortex Catalog API - Access and manage your service catalog, teams, domains, and resources5 paramsCortex Catalog API - Access and manage your service catalog, teams, domains, and resources
pageintegeryamlbooleantypesarraycontextstringpageSizeintegerlistDependenciesForEntityList all dependencies for an entity including both incoming (who depends on this service) and outgoing (what this service depends on) relationships. Essential for understanding service interactions, planning changes, and assessing blast radius6 paramsList all dependencies for an entity including both incoming (who depends on this service) and outgoing (what this service depends on) relationships. Essential for understanding service interactions, planning changes, and assessing blast radius
pageintegercontextstringpageSizeintegercallerTagstringincludeIncomingbooleanincludeOutgoingbooleangetDependencyGet specific dependency details between two entities including method, path, and metadata. Useful for understanding the nature of the relationship, API contracts, and communication patterns between services5 paramsGet specific dependency details between two entities including method, path, and metadata. Useful for understanding the nature of the relationship, API contracts, and communication patterns between services
pathstringmethodstringcontextstringcalleeTagstringcallerTagstringgetEntityDetailsRetrieve comprehensive details about a specific entity including its metadata, ownership, hierarchies, and relationships. This is the primary method for getting complete information about services, teams, or domains.5 paramsRetrieve comprehensive details about a specific entity including its metadata, ownership, hierarchies, and relationships. This is the primary method for getting complete information about services, teams, or domains.
contextstringtagOrIdstringincludeOwnersbooleanhierarchyDepthstringincludeHierarchyFieldsarraygetCustomDataForEntityList all custom data key-value pairs associated with an entity. Retrieve metadata, configuration settings, and custom attributes stored for services, resources, or domains. Supports pagination for entities with large amounts of custom data4 paramsList all custom data key-value pairs associated with an entity. Retrieve metadata, configuration settings, and custom attributes stored for services, resources, or domains. Supports pagination for entities with large amounts of custom data
pageintegercontextstringtagOrIdstringpageSizeintegergetCustomDataForEntityByKeyRetrieve a specific custom data value by key for an entity. Efficiently access individual metadata attributes, configuration values, or custom properties without fetching all custom data3 paramsRetrieve a specific custom data value by key for an entity. Efficiently access individual metadata attributes, configuration values, or custom properties without fetching all custom data
keystringcontextstringtagOrIdstringlistCustomEventsForEntityList custom events for an entity with optional filtering by type and time range. Supports pagination and filtering by event type, start time, and end time to retrieve historical event data8 paramsList custom events for an entity with optional filtering by type and time range. Supports pagination and filtering by event type, start time, and end time to retrieve historical event data
pageintegertypestringcontextstringendTimestringtagOrIdstringpageSizeintegerstartTimestringtimestampstringgetCustomEventForEntityByUuidRetrieve a specific custom event by its UUID. Returns event details including title, description, timestamp, type, and any custom data associated with the event3 paramsRetrieve a specific custom event by its UUID. Returns event details including title, description, timestamp, type, and any custom data associated with the event
uuidstringcontextstringtagOrIdstringgetDeploysForEntityList all deployments for a specific catalog entity. Returns deployment history including timestamps, environments, SHAs, and deployment types in paginated format4 paramsList all deployments for a specific catalog entity. Returns deployment history including timestamps, environments, SHAs, and deployment types in paginated format
pageintegercontextstringtagOrIdstringpageSizeintegergetCurrentOncallForEntityRetrieve the current on-call personnel for an entity in real-time. Shows who is actively responsible for incident response, including primary and secondary on-call, contact information, and rotation schedules2 paramsRetrieve the current on-call personnel for an entity in real-time. Shows who is actively responsible for incident response, including primary and secondary on-call, contact information, and rotation schedules
contextstringtagOrIdstringgetEntityDescriptorCortex Catalog API - Access and manage your service catalog, teams, domains, and resources3 paramsCortex Catalog API - Access and manage your service catalog, teams, domains, and resources
yamlbooleancontextstringtagOrIdstringlistEntityDestinationsForRelationshipTypeList all destinations for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.5 paramsList all destinations for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.
depthstringcontextstringtagOrIdstringincludeArchivedbooleanrelationshipTypeTagstringlistEntitySourcesForRelationshipTypeList all sources for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.5 paramsList all sources for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag.
depthstringcontextstringtagOrIdstringincludeArchivedbooleanrelationshipTypeTagstringgetCustomMetricDataRetrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns7 paramsRetrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns
pageintegercontextstringendDatestringtagOrIdstringpageSizeintegerstartDatestringcustomMetricKeystringqueryPointInTimeMetricsExecute point-in-time queries for one or more engineering metrics. Returns current metric values for specified time periods, with support for batch queries and optional period-over-period comparisons. Time range (startTime/endTime) cannot exceed 6 months (180 days). PREREQUISI...14 paramsExecute point-in-time queries for one or more engineering metrics. Returns current metric values for specified time periods, with support for batch queries and optional period-over-period comparisons. Time range (startTime/endTime) cannot exceed 6 months (180 days). PREREQUISI...
limitintegercontextstringendTimestringfiltersarraygroupByarraymetricsarrayorderByarraynextPagestringstartTimestringcomparisonvaluenestedGroupByarraynestedMetricsarraytimeAttributestringnestedTimeAttributestringlistMetricDefinitionsList all available engineering metric definitions. USAGE - Call this endpoint BEFORE querying metrics (queryPointInTimeMetrics): 1. Once at start: Call with view='basic' to discover all available metrics - cache this response 2. Once per metric: Call with view='full' and key=M...3 paramsList all available engineering metric definitions. USAGE - Call this endpoint BEFORE querying metrics (queryPointInTimeMetrics): 1. Once at start: Call with view='basic' to discover all available metrics - cache this response 2. Once per metric: Call with view='full' and key=M...
keyarrayviewstringcontextstringlistInitiativesList all initiatives in the organization with optional filters for draft and expired initiatives. View active improvement programs, strategic projects, and their current status to understand organizational priorities and track progress5 paramsList all initiatives in the organization with optional filters for draft and expired initiatives. View active improvement programs, strategic projects, and their current status to understand organizational priorities and track progress
pageintegercontextstringpageSizeintegerincludeDraftsbooleanincludeExpiredbooleangetInitiativeRetrieve detailed information about a specific initiative including its goals, timeline, affected entities, scorecard targets, and current progress. Essential for understanding initiative scope and tracking achievement of objectives2 paramsRetrieve detailed information about a specific initiative including its goals, timeline, affected entities, scorecard targets, and current progress. Essential for understanding initiative scope and tracking achievement of objectives
cidstringcontextstringgetMyWorkspaceTOOL for retrieving current user's owned resources and work items across the Cortex workspace. FLEXIBLE REQUEST STRUCTURE: The request accepts an object with optional fields for each resource type: - myEntitiesRequest: Fetch entities (services, resources, domains) owned by the...7 paramsTOOL for retrieving current user's owned resources and work items across the Cortex workspace. FLEXIBLE REQUEST STRUCTURE: The request accepts an object with optional fields for each resource type: - myEntitiesRequest: Fetch entities (services, resources, domains) owned by the...
contextstringmyTeamsRequestobjectmyOpenPRsRequestobjectmyEntitiesRequestobjectmyWorkItemsRequestobjectmyScorecardsRequestobjectmyRequestedReviewsRequestobjectlistRelationshipTypesList all available relationship types with pagination. View relationship type configurations to understand what kinds of relationships can be created between entities like services, resources, domains, and teams3 paramsList all available relationship types with pagination. View relationship type configurations to understand what kinds of relationships can be created between entities like services, resources, domains, and teams
pageintegercontextstringpageSizeintegergetRelationshipTypeDetailsGet complete details of a specific relationship type including its configuration, rules, source/destination filters, and inheritance settings. Essential for understanding how entities can be connected and what validation rules apply2 paramsGet complete details of a specific relationship type including its configuration, rules, source/destination filters, and inheritance settings. Essential for understanding how entities can be connected and what validation rules apply
contextstringrelationshipTypeTagstringlistEntityRelationshipsList all entity relationships/full graph for a specific relationship type across the entire organization. Returns paginated results showing all source-destination pairs, useful for understanding the complete relationship graph and finding all connections of a particular type4 paramsList all entity relationships/full graph for a specific relationship type across the entire organization. Returns paginated results showing all source-destination pairs, useful for understanding the complete relationship graph and finding all connections of a particular type
pageintegercontextstringpageSizeintegerrelationshipTypeTagstringlistScorecardsList all scorecards in the organization with optional filtering. View scorecard configurations to understand quality standards, compliance requirements, and maturity models. Supports filtering by groups, entities, and teams to find relevant scorecards7 paramsList all scorecards in the organization with optional filtering. View scorecard configurations to understand quality standards, compliance requirements, and maturity models. Supports filtering by groups, entities, and teams to find relevant scorecards
pageintegerteamsarraygroupsarraycontextstringentitiesarraypageSizeintegershowDraftsbooleangetScorecardGet complete details of a scorecard including its configuration, rules, levels, weights, exemption settings, and evaluation criteria. Essential for understanding how services are evaluated and what standards they must meet2 paramsGet complete details of a scorecard including its configuration, rules, levels, weights, exemption settings, and evaluation criteria. Essential for understanding how services are evaluated and what standards they must meet
tagstringcontextstringgetScorecardNextStepsForEntityGet actionable next steps for an entity to improve its scorecard performance. Shows which rules need to be satisfied to reach the next maturity level, helping teams prioritize improvements and track progress toward compliance goals3 paramsGet actionable next steps for an entity to improve its scorecard performance. Shows which rules need to be satisfied to reach the next maturity level, helping teams prioritize improvements and track progress toward compliance goals
tagstringcontextstringentityTagstringlistScorecardScoresRetrieve scores for all entities evaluated by a specific scorecard. Returns paginated results showing how each service, resource, or domain performs against the scorecard's rules, including individual rule scores and overall scorecard scores5 paramsRetrieve scores for all entities evaluated by a specific scorecard. Returns paginated results showing how each service, resource, or domain performs against the scorecard's rules, including individual rule scores and overall scorecard scores
tagstringpageintegercontextstringpageSizeintegerentityTagstringgetTeamDetailsRetrieve detailed information about a specific team by its tag or ID. Returns complete team data including members, slack channels, metadata, and whether it's backed by an identity provider group2 paramsRetrieve detailed information about a specific team by its tag or ID. Returns complete team data including members, slack channels, metadata, and whether it's backed by an identity provider group
contextstringtagOrIdstringquery_docsQuery the Cortex knowledge base for answers. Args: query: The question to ask Cortex docs Returns: Response from Cortex including answer and metadata2 paramsQuery the Cortex knowledge base for answers. Args: query: The question to ask Cortex docs Returns: Response from Cortex including answer and metadata
querystringcontextstringget_more_toolsCheck for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.1 paramsCheck for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.
contextvalueMulti-level reasoning MCP server with configurable depth levels, session-based state management, structured thought input, and real-time trace resources.
Cortex MCP is a stdio-only MCP server for stateful, depth-controlled reasoning. The runtime entrypoint in src/index.ts connects createServer() to StdioServerTransport, and the server surface in src/server.ts enables tools, prompts, completions, logging, and subscribable resources around a single session-based reasoning engine.
The live MCP surface confirmed by Inspector is 1 tool, 6 concrete resources, 4 resource templates, and 7 prompts. Sessions are stored in memory, exposed as MCP resources, and cleared on process restart.
reasoning_think supports step-by-step sessions, run_to_completion batches, rollback, early conclusion, and structured observation / hypothesis / evaluation input.basic, normal, high, and expert, each with bounded thought ranges and token budgets.reasoning.basic, reasoning.normal, reasoning.high, reasoning.expert, reasoning.continue, reasoning.retry, and get-help.completable() and resource-template completion hooks.>=24 for local npx or npm usage.stdio transport.Dockerfile.Use this standard MCP client configuration:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
Or install via CLI:
code --add-mcp '{"name":"cortex-mcp","command":"npx","args":["-y","@j0hanz/cortex-mcp@latest"]}'
For more info, see VS Code MCP docs.
Add to .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
Or install via CLI:
code-insiders --add-mcp '{"name":"cortex-mcp","command":"npx","args":["-y","@j0hanz/cortex-mcp@latest"]}'
For more info, see VS Code Insiders MCP docs.
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Cursor MCP docs.
Add to mcp.json (VS integrated):
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Visual Studio MCP docs.
Add to Goose extension registry:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Goose MCP docs.
Add to LM Studio MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see LM Studio MCP docs.
Add to claude_desktop_config.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Claude Desktop MCP docs.
Add to Claude Code CLI:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
Or install via CLI:
claude mcp add cortex-mcp -- npx -y @j0hanz/cortex-mcp@latest
For more info, see Claude Code MCP docs.
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Windsurf MCP docs.
Add to Amp MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
Or install via CLI:
amp mcp add cortex-mcp -- npx -y @j0hanz/cortex-mcp@latest
For more info, see Amp MCP docs.
Add to cline_mcp_settings.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Cline MCP docs.
Add to ~/.codex/config.yaml or codex CLI:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Codex CLI MCP docs.
Add to .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see GitHub Copilot MCP docs.
Add to Warp MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Warp MCP docs.
Add to .kiro/settings/mcp.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Kiro MCP docs.
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Gemini CLI MCP docs.
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"cortex-mcp": {
"settings": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
}
For more info, see Zed MCP docs.
Add to VS Code settings.json:
Add to your VS Code
settings.jsonunderaugment.advanced.
{
"augment.advanced": {
"mcpServers": [
{
"id": "cortex-mcp",
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
]
}
}
For more info, see Augment MCP docs.
Add to Roo Code MCP settings:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Roo Code MCP docs.
Add to Kilo Code MCP settings:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Kilo Code MCP docs.
Use reasoning.basic, reasoning.normal, reasoning.high, or reasoning.expert when the client wants a prompt-first entrypoint, or call reasoning_think directly with query, level, and the first thought. Each response returns the current session state plus a summary string that tells the client how to continue.
Relevant tool: reasoning_think
Related prompts: reasoning.basic, reasoning.normal, reasoning.high, reasoning.expert
Reuse sessionId to continue a prior trace, switch to runMode="run_to_completion" when you already have the remaining thought inputs, or use the continuation and retry prompts to generate the next call payload. The handler also supports rollbackToStep and isConclusion for revising or ending a trace early.
Relevant tool: reasoning_think
Related prompts: reasoning.continue, reasoning.retry
Read reasoning://sessions for the active session list, reasoning://sessions/{sessionId} for the JSON detail view, reasoning://sessions/{sessionId}/trace for the markdown transcript, or reasoning://sessions/{sessionId}/thoughts/{thoughtName} for a single thought. This lets a client present progress or audit a session independently from the next tool call.
Relevant resources: reasoning://sessions, reasoning://sessions/{sessionId}, reasoning://sessions/{sessionId}/trace, reasoning://sessions/{sessionId}/thoughts/{thoughtName}
[MCP Client]
|
| stdio
v
[src/index.ts]
createServer()
-> new StdioServerTransport()
-> server.connect(transport)
|
v
[src/server.ts]
McpServer("cortex-mcp")
capabilities:
- tools
- prompts
- completions
- logging
- resources { subscribe: true, listChanged: true }
|
+--> tools/call
| -> reasoning_think
| -> src/tools/reasoning-think.ts
| -> ReasoningThinkInputSchema / ReasoningThinkToolOutputSchema
| -> src/engine/reasoner.ts
| -> SessionStore
|
+--> prompts/get
| -> src/prompts/index.ts
|
+--> resources/read
| -> src/resources/index.ts
| -> internal://* and reasoning://sessions/*
|
+--> notifications
-> logging messages
-> resources/list_changed
-> resources/updated
-> notifications/progress
[Client] -- initialize --> [Server]
[Server] -- serverInfo + capabilities --> [Client]
[Client] -- notifications/initialized --> [Server]
[Client] -- tools/call {name: "reasoning_think", arguments} --> [Handler]
[Handler] -- validate args --> [Reasoner + SessionStore]
[Reasoner] -- progress/resource events --> [Server notifications]
[Handler] -- structuredContent + optional trace resource --> [Client]
reasoning_thinkStateful reasoning tool for creating and continuing multi-step sessions. It supports one-step interactive calls, run_to_completion batches, structured observation/hypothesis/evaluation input, rollback, and early conclusion while returning structured session state.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | no | Question or problem to analyze. |
level | string | no | Depth level. Required for new sessions. basic (1–3 steps, 2K budget), normal (4–8 steps, 8K budget), high (10–15 steps, 32K budget), expert (20–25 steps, 128K budget). |
targetThoughts | integer | no | Exact step count. Must fit level range. |
sessionId | string | no | Session ID to continue. |
runMode | string | no | "step" (default) or "run_to_completion". |
thought | any | no | Reasoning text. Stored verbatim. String for step mode, string[] for batch. |
isConclusion | boolean | no | End session early at final answer. |
rollbackToStep | integer | no | 0-based index to rollback to. Discards later thoughts. |
stepSummary | string | no | One-sentence step summary. |
observation | string | no | Known facts at this step. |
hypothesis | string | no | Proposed next idea. |
evaluation | string | no | Critique of hypothesis. |
1. [Client] -- tools/call {name: "reasoning_think", arguments} --> [Server]
Transport: stdio
2. [Server] -- dispatch("reasoning_think") --> [Handler: src/tools/reasoning-think.ts]
3. [Handler] -- validate(ReasoningThinkInputSchema) --> [src/engine/reasoner.ts]
4. [Reasoner] -- create/update session --> [src/engine/session-store.ts]
5. [Handler] -- structuredContent + optional embedded trace resource --> [Client]
| Resource | URI or Template | MIME Type | Description |
|---|---|---|---|
server-instructions | internal://instructions | text/markdown | Usage instructions for the MCP server. |
server-config | internal://server-config | application/json | Runtime limits and level configurations for the reasoning server. |
tool-catalog | internal://tool-catalog | text/markdown | Tool reference: models, params, outputs, data flow. |
tool-info | internal://tool-info/{toolName} | text/markdown | Per-tool contract details. |
tool-info-reasoning_think | internal://tool-info/reasoning_think | text/markdown | Contract details for reasoning_think. |
workflows | internal://workflows | text/markdown | Recommended workflows and tool sequences. |
reasoning.sessions | reasoning://sessions | application/json | List of active reasoning sessions with summaries. Updated in real-time as sessions progress. |
reasoning.session | reasoning://sessions/{sessionId} | application/json | Detailed view of a single reasoning session, including all thoughts and metadata. |
reasoning.trace | reasoning://sessions/{sessionId}/trace | text/markdown | Markdown trace of a reasoning session (full content). |
reasoning.thought | reasoning://sessions/{sessionId}/thoughts/{thoughtName} | text/markdown | Markdown content of a single thought (for example Thought-1). |
| Prompt | Arguments | Description |
|---|---|---|
get-help | none | Return server usage instructions. |
reasoning.basic | query required, targetThoughts optional | Basic-depth reasoning (1-3 thoughts). |
reasoning.normal | query required, targetThoughts optional | Normal-depth reasoning (4-8 thoughts). |
reasoning.high | query required, targetThoughts optional | High-depth reasoning (10-15 thoughts). |
reasoning.expert | query required, targetThoughts optional | Expert-depth reasoning (20-25 thoughts). |
reasoning.continue | sessionId required, query optional, level optional | Continue an existing session. Optional follow-up query. |
reasoning.retry | query required, level required, targetThoughts optional | Retry a failed reasoning task with modified parameters. |
| Capability | Status | Evidence |
|---|---|---|
tools | confirmed | src/server.ts:203-205, src/tools/reasoning-think.ts:479 |
prompts | confirmed | src/server.ts:205, src/prompts/index.ts:201 |
completions | confirmed | src/server.ts:207, src/prompts/index.ts:249, src/resources/index.ts:375 |
logging | confirmed | src/server.ts:204, src/server.ts:98 |
resources.subscribe | confirmed | src/server.ts:208, src/server.ts:121 |
resources.listChanged | confirmed | src/server.ts:208, src/server.ts:114 |
progress notifications | confirmed | src/lib/mcp.ts:71, src/tools/reasoning-think.ts:424 |
| Annotation | Value | Evidence |
|---|---|---|
readOnlyHint | false | src/tools/reasoning-think.ts:500 |
destructiveHint | false | src/tools/reasoning-think.ts:502 |
openWorldHint | false | src/tools/reasoning-think.ts:503 |
idempotentHint | false | src/tools/reasoning-think.ts:501 |
reasoning_think declares outputSchema and returns structuredContent, with an embedded trace resource when the trace is small enough. Evidence: src/tools/reasoning-think.ts:498, src/lib/mcp.ts:97-114.| Variable | Default | Required | Evidence |
|---|---|---|---|
CORTEX_SESSION_TTL_MS | 1800000 (30 minutes) | no | src/engine/reasoner.ts:22, src/engine/session-store.ts:19 |
CORTEX_MAX_SESSIONS | 100 | no | src/engine/reasoner.ts:23, src/engine/session-store.ts:20 |
CORTEX_MAX_TOTAL_TOKENS | 2000000 | no | src/engine/reasoner.ts:24, src/engine/session-store.ts:21 |
CORTEX_MAX_ACTIVE_REASONING_TASKS | 32 | no | src/engine/config.ts:41-44 |
CORTEX_REDACT_TRACE_CONTENT | false | no | src/engine/config.ts:21 |
[!NOTE] The source does not define any HTTP host/port configuration. The only other environment-related signal is
NODE_ENV=productionin the Docker image and--env-file=.envin the localdev:runscript.
| Control | Status | Evidence |
|---|---|---|
| input validation | confirmed | src/schemas/inputs.ts:13, src/schemas/outputs.ts:46, src/prompts/index.ts:207 |
| stdout-safe logging fallback | confirmed | src/server.ts:98, src/server.ts:145 |
| main-thread-only runtime | confirmed | src/index.ts:15-25 |
| non-root container user | confirmed | Dockerfile:37 |
[!NOTE] No auth, OAuth, HTTP origin checks, or rate-limiting controls are implemented in the current source because the server only exposes stdio transport.
| Script | Command | Purpose |
|---|---|---|
dev | tsc --watch --preserveWatchOutput | Watch and compile source during development. |
dev:run | node --env-file=.env --watch dist/index.js | Run the built server in watch mode with an optional local .env file. |
build | node scripts/tasks.mjs build | Clean dist, compile TypeScript, copy assets, and make the entrypoint executable. |
lint | eslint . | Run ESLint across the repository. |
type-check | node scripts/tasks.mjs type-check | Run source and test TypeScript checks concurrently. |
test | node scripts/tasks.mjs test | Run the TypeScript test suites with the configured loader. |
test:dist | node scripts/tasks.mjs test:dist | Rebuild first, then run tests against the built output. |
test:fast | node --test --import tsx/esm src/__tests__/**/*.test.ts node-tests/**/*.test.ts | Run the fast direct test command without the task wrapper. |
format | prettier --write . | Format the repository. |
inspector | npm run build && npx -y @modelcontextprotocol/inspector node dist/index.js | Build the server and open it in the MCP Inspector. |
prepublishOnly | npm run lint && npm run type-check && npm run build | Enforce release checks before publishing. |
Additional helper scripts for diagnostics, coverage, asset copying, and knip are defined in package.json.
.github/workflows/release.yml bumps package.json and server.json, then runs npm run lint, npm run type-check, npm run test, and npm run build before tagging and creating a GitHub release.mcp-publisher, and pushes a multi-arch Docker image to ghcr.io.Dockerfile uses a multi-stage Node 24 Alpine build, prunes dev dependencies, and runs the released container as the mcp user.E_SESSION_NOT_FOUND, start a new session or increase CORTEX_SESSION_TTL_MS.runMode="run_to_completion" requires enough thought entries to cover the remaining steps. If you want the server to return after each step, keep the default step mode.stderr on failures.| Dependency | Registry |
|---|---|
| @modelcontextprotocol/sdk | npm |
| zod | npm |