Skip to content

nimwire/core

This page is generated from the module’s exported API and ## documentation comments.

Typed protocol values and JSON-RPC validation.

mcpProtocolVersion = "2026-07-28"

View source

mcpJsonRpcVersion = "2.0"

View source

mcpParseErrorCode = -32700

View source

mcpInvalidRequestCode = -32600

View source

mcpMethodNotFoundCode = -32601

View source

mcpInvalidParamsCode = -32602

View source

mcpInternalErrorCode = -32603

View source

mcpRequestCancelledCode = -32800

View source

mcpServerBusyCode = -32029

View source

mcpHeaderMismatchCode = -32020

View source

mcpUnsupportedProtocolVersionCode = -32022

View source

mcpMissingRequiredClientCapabilityCode = -32021

View source

mcpDefaultMaxMessageBytes = 1048576

View source

mcpDefaultMaxNestingDepth = 64

View source

mcpDefaultCompletionLimit = 100

View source

mcpMetaProtocolVersionKey = "io.modelcontextprotocol/protocolVersion"

View source

mcpMetaClientInfoKey = "io.modelcontextprotocol/clientInfo"

View source

mcpMetaClientCapabilitiesKey = "io.modelcontextprotocol/clientCapabilities"

View source

mcpMetaTraceContextKey = "io.modelcontextprotocol/traceContext"

View source

mcpMetaLogLevelKey = "io.modelcontextprotocol/logLevel"

View source

mcpMetaProgressTokenKey = "progressToken"

View source

McpError = object of CatchableError
code*: int
data*: JsonNode
retryable*: bool

View source

McpIdKind = enum
mcpStringId, mcpIntegerId, mcpNullId

View source

McpId = object
case kind*: McpIdKind
of mcpStringId:
stringValue*: string
of mcpIntegerId:
integerValue*: int64
of mcpNullId:
nil

View source

McpClientInfo = object
name*: string
version*: string
extraFields*: JsonNode

View source

Capability names are extensible, so their object is retained as JSON.

McpClientCapabilities = object
fields*: JsonNode

View source

McpTraceContext = object
traceparent*: string
tracestate*: string
baggage*: string
extensionFields*: JsonNode

View source

McpLogLevel = enum
mcpLogDebug, mcpLogInfo, mcpLogNotice, mcpLogWarning, mcpLogError,
mcpLogCritical, mcpLogAlert, mcpLogEmergency

View source

McpRequestMeta = object
protocolVersion*: string
hasClientInfo*: bool
clientInfo*: McpClientInfo
clientCapabilities*: McpClientCapabilities
hasTraceContext*: bool
traceContext*: McpTraceContext
hasLogLevel*: bool
logLevel*: McpLogLevel
hasProgressToken*: bool
progressToken*: McpId
extensionMetadata*: JsonNode

View source

values contains method-specific params; _meta is decoded into meta.

McpParams = object
values*: JsonNode
meta*: McpRequestMeta

View source

A server-to-client request embedded in an input_required result.

McpInputRequest = object
methodName*: string
params*: JsonNode
extraFields*: JsonNode

View source

McpResultType = enum
mcpComplete, mcpInputRequired, mcpTask

View source

McpWireResult = object
resultType*: McpResultType ## Result fields are method-specific and retained for forward compatibility.
fields*: JsonNode

View source

McpTypedError = object
code*: string
message*: string
details*: JsonNode
retryable*: bool

View source

A typed handler result. It is converted to McpToolResult at the wire boundary and never leaks protocol-specific fields into application code.

McpResult[T] = object
case isError*: bool
of false:
value*: T
of true:
error*: McpTypedError

View source

McpRpcError = object
code*: int
message*: string
data*: JsonNode
extraFields*: JsonNode

View source

McpRequestKind = enum
mcpRequest, mcpNotification

View source

McpRpcRequest = object
case kind*: McpRequestKind
of mcpRequest:
id*: McpId
of mcpNotification:
nil
methodName*: string
params*: McpParams
extraFields*: JsonNode

View source

McpRpcResponse = object
id*: McpId
result*: McpWireResult
extraFields*: JsonNode

View source

McpRpcErrorResponse = object
id*: McpId
error*: McpRpcError
extraFields*: JsonNode

View source

McpJsonRpcMessageKind = enum
mcpRequestMessage, mcpNotificationMessage, mcpResponseMessage, mcpErrorMessage

View source

McpJsonRpcMessage = object
case kind*: McpJsonRpcMessageKind
of mcpRequestMessage, mcpNotificationMessage:
request*: McpRpcRequest
of mcpResponseMessage:
response*: McpRpcResponse
of mcpErrorMessage:
errorResponse*: McpRpcErrorResponse

View source

Handler-facing result before it is wrapped in a JSON-RPC result.

McpToolResult = object
content*: JsonNode
structuredContent*: JsonNode
isError*: bool
retryable*: bool

View source

proc newMcpError(message: string; code = mcpInvalidParamsCode;
data: JsonNode = nil): ref McpError {.raises: [], tags: [],
forbids: [].}

Returns: ref McpError.

Name Type Default
message string
code inferred mcpInvalidParamsCode
data JsonNode nil

View source

proc retryableMcpError(message: string; code = mcpInternalErrorCode;
data: JsonNode = nil): ref McpError {.raises: [],
tags: [], forbids: [].}

Returns: ref McpError.

Name Type Default
message string
code inferred mcpInternalErrorCode
data JsonNode nil

View source

proc mcpResult[T](value: T): McpResult[T]

Type parameters: T.

Returns: McpResult[T].

Name Type Default
value T

View source

proc mcpResultError[T](code, message: string; details: JsonNode = nil;
retryable = false): McpResult[T]

Type parameters: T.

Returns: McpResult[T].

Name Type Default
code string
message string
details JsonNode nil
retryable inferred false

View source

proc mcpFailure[T](message: string; details: JsonNode = nil; retryable = false): McpResult[
T]

Type parameters: T.

Returns: McpResult[T].

Name Type Default
message string
details JsonNode nil
retryable inferred false

View source

proc requireObject(node: JsonNode; context: string): JsonNode {.
raises: [McpError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
node JsonNode
context string

View source

proc requiredString(node: JsonNode; key, context: string): string {.
raises: [KeyError, McpError], tags: [], forbids: [].}

Returns: string.

Name Type Default
node JsonNode
key string
context string

View source

proc parseMcpId(node: JsonNode; allowNull = false): McpId {.raises: [McpError],
tags: [], forbids: [].}

Returns: McpId.

Name Type Default
node JsonNode
allowNull inferred false

View source

proc toJson(id: McpId): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
id McpId

View source

==

proc `==`(left, right: McpId): bool {.raises: [], tags: [], forbids: [].}

Returns: bool.

Name Type Default
left McpId
right McpId

View source

proc resultTypeName(resultType: McpResultType): string {.raises: [], tags: [],
forbids: [].}

Returns: string.

Name Type Default
resultType McpResultType

View source

proc newMcpResult(resultType: McpResultType; fields: JsonNode = nil): McpWireResult {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpWireResult.

Name Type Default
resultType McpResultType
fields JsonNode nil

View source

proc parseMcpResult(node: JsonNode): McpWireResult {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpWireResult.

Name Type Default
node JsonNode

View source

proc toJson(value: McpWireResult): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpWireResult

View source

proc newMcpRpcError(code: int; message: string; data: JsonNode = nil;
extraFields: JsonNode = nil): McpRpcError {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpRpcError.

Name Type Default
code int
message string
data JsonNode nil
extraFields JsonNode nil

View source

proc parseMcpRpcError(node: JsonNode): McpRpcError {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpRpcError.

Name Type Default
node JsonNode

View source

proc toJson(value: McpRpcError): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpRpcError

View source

proc logLevelName(level: McpLogLevel): string {.raises: [], tags: [],
forbids: [].}

Returns: string.

Name Type Default
level McpLogLevel

View source

proc toJson(value: McpClientInfo): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpClientInfo

View source

proc toJson(value: McpClientCapabilities): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
value McpClientCapabilities

View source

proc toJson(value: McpTraceContext): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
value McpTraceContext

View source

proc parseMcpRequestMeta(node: JsonNode): McpRequestMeta {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpRequestMeta.

Name Type Default
node JsonNode

View source

proc toJson(value: McpRequestMeta): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpRequestMeta

View source

proc parseMcpParams(node: JsonNode): McpParams {.raises: [McpError, KeyError],
tags: [], forbids: [].}

Returns: McpParams.

Name Type Default
node JsonNode

View source

proc toJson(value: McpParams): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpParams

View source

proc validateMethod(methodName: string) {.raises: [McpError], tags: [],
forbids: [].}
Name Type Default
methodName string

View source

proc parseMcpRequest(node: JsonNode; maxNestingDepth = mcpDefaultMaxNestingDepth): McpRpcRequest {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpRpcRequest.

Name Type Default
node JsonNode
maxNestingDepth inferred mcpDefaultMaxNestingDepth

View source

proc parseMcpResponse(node: JsonNode): McpRpcResponse {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpRpcResponse.

Name Type Default
node JsonNode

View source

proc parseMcpErrorResponse(node: JsonNode): McpRpcErrorResponse {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpRpcErrorResponse.

Name Type Default
node JsonNode

View source

proc parseMcpMessage(node: JsonNode; maxNestingDepth = mcpDefaultMaxNestingDepth): McpJsonRpcMessage {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpJsonRpcMessage.

Name Type Default
node JsonNode
maxNestingDepth inferred mcpDefaultMaxNestingDepth

View source

proc parseMcpMessage(payload: string;
maxMessageBytes = mcpDefaultMaxMessageBytes;
maxNestingDepth = mcpDefaultMaxNestingDepth): McpJsonRpcMessage {.
raises: [McpError, McpError, Exception, KeyError],
tags: [ReadIOEffect, WriteIOEffect, RootEffect], forbids: [].}

Returns: McpJsonRpcMessage.

Name Type Default
payload string
maxMessageBytes inferred mcpDefaultMaxMessageBytes
maxNestingDepth inferred mcpDefaultMaxNestingDepth

View source

proc successResponse(id: McpId; value: McpWireResult): McpJsonRpcMessage {.
raises: [], tags: [], forbids: [].}

Returns: McpJsonRpcMessage.

Name Type Default
id McpId
value McpWireResult

View source

proc errorResponse(id: McpId; code: int; message: string; data: JsonNode = nil): McpJsonRpcMessage {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpJsonRpcMessage.

Name Type Default
id McpId
code int
message string
data JsonNode nil

View source

proc requestIdOrNull(node: JsonNode): McpId {.raises: [KeyError], tags: [],
forbids: [].}

Returns: McpId.

Name Type Default
node JsonNode

View source

proc toJson(value: McpRpcRequest): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpRpcRequest

View source

proc toJson(value: McpRpcResponse): JsonNode {.raises: [], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
value McpRpcResponse

View source

proc toJson(value: McpRpcErrorResponse): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
value McpRpcErrorResponse

View source

proc toJson(value: McpJsonRpcMessage): JsonNode {.raises: [], tags: [],
forbids: [].}

Returns: JsonNode.

Name Type Default
value McpJsonRpcMessage

View source

proc textResult(text: string; isError = false): McpToolResult {.raises: [],
tags: [], forbids: [].}

Returns: McpToolResult.

Name Type Default
text string
isError inferred false

View source

proc jsonResult(value: JsonNode; isError = false): McpToolResult {.raises: [],
tags: [], forbids: [].}

Returns: McpToolResult.

Name Type Default
value JsonNode
isError inferred false

View source

proc textContent(text: string; annotations: JsonNode = nil): JsonNode {.
raises: [McpError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
text string
annotations JsonNode nil

View source

proc imageContent(data, mimeType: string; annotations: JsonNode = nil): JsonNode {.
raises: [McpError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
data string
mimeType string
annotations JsonNode nil

View source

proc audioContent(data, mimeType: string; annotations: JsonNode = nil): JsonNode {.
raises: [McpError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
data string
mimeType string
annotations JsonNode nil

View source

proc resourceLinkContent(uri, name: string; mimeType = ""; title = "";
description = ""; size: int64 = -1;
annotations: JsonNode = nil): JsonNode {.
raises: [McpError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
uri string
name string
mimeType inferred ""
title inferred ""
description inferred ""
size int64 -1
annotations JsonNode nil

View source

proc embeddedResourceContent(resource: JsonNode; annotations: JsonNode = nil): JsonNode {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
resource JsonNode
annotations JsonNode nil

View source

proc newMcpToolResult(content: JsonNode; structuredContent: JsonNode = nil;
isError = false): McpToolResult {.raises: [McpError],
tags: [], forbids: [].}

Returns: McpToolResult.

Name Type Default
content JsonNode
structuredContent JsonNode nil
isError inferred false

View source

proc structuredResult(value: JsonNode; isError = false): McpToolResult {.
raises: [], tags: [], forbids: [].}

Returns: McpToolResult.

Name Type Default
value JsonNode
isError inferred false

View source

proc typedResultJson[T](value: T): JsonNode

Type parameters: T.

Returns: JsonNode.

Name Type Default
value T

View source

proc toMcpToolResult[T](value: McpResult[T]): McpToolResult

Type parameters: T.

Returns: McpToolResult.

Name Type Default
value McpResult[T]

View source

proc toJson[T](value: McpResult[T]): JsonNode

Type parameters: T.

Returns: JsonNode.

Name Type Default
value McpResult[T]

View source