nimwire/core
This page is generated from the module’s exported API and ## documentation comments.
Typed protocol values and JSON-RPC validation.
Constants
Section titled “Constants”mcpProtocolVersion
Section titled “mcpProtocolVersion”mcpProtocolVersion = "2026-07-28"mcpJsonRpcVersion
Section titled “mcpJsonRpcVersion”mcpJsonRpcVersion = "2.0"mcpParseErrorCode
Section titled “mcpParseErrorCode”mcpParseErrorCode = -32700mcpInvalidRequestCode
Section titled “mcpInvalidRequestCode”mcpInvalidRequestCode = -32600mcpMethodNotFoundCode
Section titled “mcpMethodNotFoundCode”mcpMethodNotFoundCode = -32601mcpInvalidParamsCode
Section titled “mcpInvalidParamsCode”mcpInvalidParamsCode = -32602mcpInternalErrorCode
Section titled “mcpInternalErrorCode”mcpInternalErrorCode = -32603mcpRequestCancelledCode
Section titled “mcpRequestCancelledCode”mcpRequestCancelledCode = -32800mcpServerBusyCode
Section titled “mcpServerBusyCode”mcpServerBusyCode = -32029mcpHeaderMismatchCode
Section titled “mcpHeaderMismatchCode”mcpHeaderMismatchCode = -32020mcpUnsupportedProtocolVersionCode
Section titled “mcpUnsupportedProtocolVersionCode”mcpUnsupportedProtocolVersionCode = -32022mcpMissingRequiredClientCapabilityCode
Section titled “mcpMissingRequiredClientCapabilityCode”mcpMissingRequiredClientCapabilityCode = -32021mcpDefaultMaxMessageBytes
Section titled “mcpDefaultMaxMessageBytes”mcpDefaultMaxMessageBytes = 1048576mcpDefaultMaxNestingDepth
Section titled “mcpDefaultMaxNestingDepth”mcpDefaultMaxNestingDepth = 64mcpDefaultCompletionLimit
Section titled “mcpDefaultCompletionLimit”mcpDefaultCompletionLimit = 100mcpMetaProtocolVersionKey
Section titled “mcpMetaProtocolVersionKey”mcpMetaProtocolVersionKey = "io.modelcontextprotocol/protocolVersion"mcpMetaClientInfoKey
Section titled “mcpMetaClientInfoKey”mcpMetaClientInfoKey = "io.modelcontextprotocol/clientInfo"mcpMetaClientCapabilitiesKey
Section titled “mcpMetaClientCapabilitiesKey”mcpMetaClientCapabilitiesKey = "io.modelcontextprotocol/clientCapabilities"mcpMetaTraceContextKey
Section titled “mcpMetaTraceContextKey”mcpMetaTraceContextKey = "io.modelcontextprotocol/traceContext"mcpMetaLogLevelKey
Section titled “mcpMetaLogLevelKey”mcpMetaLogLevelKey = "io.modelcontextprotocol/logLevel"mcpMetaProgressTokenKey
Section titled “mcpMetaProgressTokenKey”mcpMetaProgressTokenKey = "progressToken"McpError
Section titled “McpError”McpError = object of CatchableError code*: int data*: JsonNode retryable*: boolMcpIdKind
Section titled “McpIdKind”McpIdKind = enum mcpStringId, mcpIntegerId, mcpNullIdMcpId = object case kind*: McpIdKind of mcpStringId: stringValue*: string of mcpIntegerId: integerValue*: int64 of mcpNullId: nilMcpClientInfo
Section titled “McpClientInfo”McpClientInfo = object name*: string version*: string extraFields*: JsonNodeMcpClientCapabilities
Section titled “McpClientCapabilities”Capability names are extensible, so their object is retained as JSON.
McpClientCapabilities = object fields*: JsonNodeMcpTraceContext
Section titled “McpTraceContext”McpTraceContext = object traceparent*: string tracestate*: string baggage*: string extensionFields*: JsonNodeMcpLogLevel
Section titled “McpLogLevel”McpLogLevel = enum mcpLogDebug, mcpLogInfo, mcpLogNotice, mcpLogWarning, mcpLogError, mcpLogCritical, mcpLogAlert, mcpLogEmergencyMcpRequestMeta
Section titled “McpRequestMeta”McpRequestMeta = object protocolVersion*: string hasClientInfo*: bool clientInfo*: McpClientInfo clientCapabilities*: McpClientCapabilities hasTraceContext*: bool traceContext*: McpTraceContext hasLogLevel*: bool logLevel*: McpLogLevel hasProgressToken*: bool progressToken*: McpId extensionMetadata*: JsonNodeMcpParams
Section titled “McpParams”values contains method-specific params; _meta is decoded into meta.
McpParams = object values*: JsonNode meta*: McpRequestMetaMcpInputRequest
Section titled “McpInputRequest”A server-to-client request embedded in an input_required result.
McpInputRequest = object methodName*: string params*: JsonNode extraFields*: JsonNodeMcpResultType
Section titled “McpResultType”McpResultType = enum mcpComplete, mcpInputRequired, mcpTaskMcpWireResult
Section titled “McpWireResult”McpWireResult = object resultType*: McpResultType ## Result fields are method-specific and retained for forward compatibility. fields*: JsonNodeMcpTypedError
Section titled “McpTypedError”McpTypedError = object code*: string message*: string details*: JsonNode retryable*: boolMcpResult
Section titled “McpResult”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*: McpTypedErrorMcpRpcError
Section titled “McpRpcError”McpRpcError = object code*: int message*: string data*: JsonNode extraFields*: JsonNodeMcpRequestKind
Section titled “McpRequestKind”McpRequestKind = enum mcpRequest, mcpNotificationMcpRpcRequest
Section titled “McpRpcRequest”McpRpcRequest = object case kind*: McpRequestKind of mcpRequest: id*: McpId of mcpNotification: nil methodName*: string params*: McpParams extraFields*: JsonNodeMcpRpcResponse
Section titled “McpRpcResponse”McpRpcResponse = object id*: McpId result*: McpWireResult extraFields*: JsonNodeMcpRpcErrorResponse
Section titled “McpRpcErrorResponse”McpRpcErrorResponse = object id*: McpId error*: McpRpcError extraFields*: JsonNodeMcpJsonRpcMessageKind
Section titled “McpJsonRpcMessageKind”McpJsonRpcMessageKind = enum mcpRequestMessage, mcpNotificationMessage, mcpResponseMessage, mcpErrorMessageMcpJsonRpcMessage
Section titled “McpJsonRpcMessage”McpJsonRpcMessage = object case kind*: McpJsonRpcMessageKind of mcpRequestMessage, mcpNotificationMessage: request*: McpRpcRequest of mcpResponseMessage: response*: McpRpcResponse of mcpErrorMessage: errorResponse*: McpRpcErrorResponseMcpToolResult
Section titled “McpToolResult”Handler-facing result before it is wrapped in a JSON-RPC result.
McpToolResult = object content*: JsonNode structuredContent*: JsonNode isError*: bool retryable*: boolProcedures
Section titled “Procedures”newMcpError
Section titled “newMcpError”proc newMcpError(message: string; code = mcpInvalidParamsCode; data: JsonNode = nil): ref McpError {.raises: [], tags: [], forbids: [].}Returns: ref McpError.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
message |
string |
|
code |
inferred |
mcpInvalidParamsCode |
data |
JsonNode |
nil |
retryableMcpError
Section titled “retryableMcpError”proc retryableMcpError(message: string; code = mcpInternalErrorCode; data: JsonNode = nil): ref McpError {.raises: [], tags: [], forbids: [].}Returns: ref McpError.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
message |
string |
|
code |
inferred |
mcpInternalErrorCode |
data |
JsonNode |
nil |
mcpResult
Section titled “mcpResult”proc mcpResult[T](value: T): McpResult[T]Type parameters: T.
Returns: McpResult[T].
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
T |
mcpResultError
Section titled “mcpResultError”proc mcpResultError[T](code, message: string; details: JsonNode = nil; retryable = false): McpResult[T]Type parameters: T.
Returns: McpResult[T].
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
code |
string |
|
message |
string |
|
details |
JsonNode |
nil |
retryable |
inferred |
false |
mcpFailure
Section titled “mcpFailure”proc mcpFailure[T](message: string; details: JsonNode = nil; retryable = false): McpResult[ T]Type parameters: T.
Returns: McpResult[T].
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
message |
string |
|
details |
JsonNode |
nil |
retryable |
inferred |
false |
requireObject
Section titled “requireObject”proc requireObject(node: JsonNode; context: string): JsonNode {. raises: [McpError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
|
context |
string |
requiredString
Section titled “requiredString”proc requiredString(node: JsonNode; key, context: string): string {. raises: [KeyError, McpError], tags: [], forbids: [].}Returns: string.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
|
key |
string |
|
context |
string |
parseMcpId
Section titled “parseMcpId”proc parseMcpId(node: JsonNode; allowNull = false): McpId {.raises: [McpError], tags: [], forbids: [].}Returns: McpId.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
|
allowNull |
inferred |
false |
toJson (overload 1)
Section titled “toJson (overload 1)”proc toJson(id: McpId): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
id |
McpId |
==
proc `==`(left, right: McpId): bool {.raises: [], tags: [], forbids: [].}Returns: bool.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
left |
McpId |
|
right |
McpId |
resultTypeName
Section titled “resultTypeName”proc resultTypeName(resultType: McpResultType): string {.raises: [], tags: [], forbids: [].}Returns: string.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
resultType |
McpResultType |
newMcpResult
Section titled “newMcpResult”proc newMcpResult(resultType: McpResultType; fields: JsonNode = nil): McpWireResult {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpWireResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
resultType |
McpResultType |
|
fields |
JsonNode |
nil |
parseMcpResult
Section titled “parseMcpResult”proc parseMcpResult(node: JsonNode): McpWireResult {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpWireResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
toJson (overload 2)
Section titled “toJson (overload 2)”proc toJson(value: McpWireResult): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpWireResult |
newMcpRpcError
Section titled “newMcpRpcError”proc newMcpRpcError(code: int; message: string; data: JsonNode = nil; extraFields: JsonNode = nil): McpRpcError {. raises: [McpError], tags: [], forbids: [].}Returns: McpRpcError.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
code |
int |
|
message |
string |
|
data |
JsonNode |
nil |
extraFields |
JsonNode |
nil |
parseMcpRpcError
Section titled “parseMcpRpcError”proc parseMcpRpcError(node: JsonNode): McpRpcError {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpRpcError.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
toJson (overload 3)
Section titled “toJson (overload 3)”proc toJson(value: McpRpcError): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpRpcError |
logLevelName
Section titled “logLevelName”proc logLevelName(level: McpLogLevel): string {.raises: [], tags: [], forbids: [].}Returns: string.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
level |
McpLogLevel |
toJson (overload 4)
Section titled “toJson (overload 4)”proc toJson(value: McpClientInfo): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpClientInfo |
toJson (overload 5)
Section titled “toJson (overload 5)”proc toJson(value: McpClientCapabilities): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpClientCapabilities |
toJson (overload 6)
Section titled “toJson (overload 6)”proc toJson(value: McpTraceContext): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpTraceContext |
parseMcpRequestMeta
Section titled “parseMcpRequestMeta”proc parseMcpRequestMeta(node: JsonNode): McpRequestMeta {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpRequestMeta.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
toJson (overload 7)
Section titled “toJson (overload 7)”proc toJson(value: McpRequestMeta): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpRequestMeta |
parseMcpParams
Section titled “parseMcpParams”proc parseMcpParams(node: JsonNode): McpParams {.raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpParams.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
toJson (overload 8)
Section titled “toJson (overload 8)”proc toJson(value: McpParams): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpParams |
validateMethod
Section titled “validateMethod”proc validateMethod(methodName: string) {.raises: [McpError], tags: [], forbids: [].}Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
methodName |
string |
parseMcpRequest
Section titled “parseMcpRequest”proc parseMcpRequest(node: JsonNode; maxNestingDepth = mcpDefaultMaxNestingDepth): McpRpcRequest {. raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}Returns: McpRpcRequest.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
|
maxNestingDepth |
inferred |
mcpDefaultMaxNestingDepth |
parseMcpResponse
Section titled “parseMcpResponse”proc parseMcpResponse(node: JsonNode): McpRpcResponse {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpRpcResponse.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
parseMcpErrorResponse
Section titled “parseMcpErrorResponse”proc parseMcpErrorResponse(node: JsonNode): McpRpcErrorResponse {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: McpRpcErrorResponse.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
parseMcpMessage (overload 1)
Section titled “parseMcpMessage (overload 1)”proc parseMcpMessage(node: JsonNode; maxNestingDepth = mcpDefaultMaxNestingDepth): McpJsonRpcMessage {. raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}Returns: McpJsonRpcMessage.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
|
maxNestingDepth |
inferred |
mcpDefaultMaxNestingDepth |
parseMcpMessage (overload 2)
Section titled “parseMcpMessage (overload 2)”proc parseMcpMessage(payload: string; maxMessageBytes = mcpDefaultMaxMessageBytes; maxNestingDepth = mcpDefaultMaxNestingDepth): McpJsonRpcMessage {. raises: [McpError, McpError, Exception, KeyError], tags: [ReadIOEffect, WriteIOEffect, RootEffect], forbids: [].}Returns: McpJsonRpcMessage.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
payload |
string |
|
maxMessageBytes |
inferred |
mcpDefaultMaxMessageBytes |
maxNestingDepth |
inferred |
mcpDefaultMaxNestingDepth |
successResponse
Section titled “successResponse”proc successResponse(id: McpId; value: McpWireResult): McpJsonRpcMessage {. raises: [], tags: [], forbids: [].}Returns: McpJsonRpcMessage.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
id |
McpId |
|
value |
McpWireResult |
errorResponse
Section titled “errorResponse”proc errorResponse(id: McpId; code: int; message: string; data: JsonNode = nil): McpJsonRpcMessage {. raises: [McpError], tags: [], forbids: [].}Returns: McpJsonRpcMessage.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
id |
McpId |
|
code |
int |
|
message |
string |
|
data |
JsonNode |
nil |
requestIdOrNull
Section titled “requestIdOrNull”proc requestIdOrNull(node: JsonNode): McpId {.raises: [KeyError], tags: [], forbids: [].}Returns: McpId.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
node |
JsonNode |
toJson (overload 9)
Section titled “toJson (overload 9)”proc toJson(value: McpRpcRequest): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpRpcRequest |
toJson (overload 10)
Section titled “toJson (overload 10)”proc toJson(value: McpRpcResponse): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpRpcResponse |
toJson (overload 11)
Section titled “toJson (overload 11)”proc toJson(value: McpRpcErrorResponse): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpRpcErrorResponse |
toJson (overload 12)
Section titled “toJson (overload 12)”proc toJson(value: McpJsonRpcMessage): JsonNode {.raises: [], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpJsonRpcMessage |
textResult
Section titled “textResult”proc textResult(text: string; isError = false): McpToolResult {.raises: [], tags: [], forbids: [].}Returns: McpToolResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
text |
string |
|
isError |
inferred |
false |
jsonResult
Section titled “jsonResult”proc jsonResult(value: JsonNode; isError = false): McpToolResult {.raises: [], tags: [], forbids: [].}Returns: McpToolResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
JsonNode |
|
isError |
inferred |
false |
textContent
Section titled “textContent”proc textContent(text: string; annotations: JsonNode = nil): JsonNode {. raises: [McpError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
text |
string |
|
annotations |
JsonNode |
nil |
imageContent
Section titled “imageContent”proc imageContent(data, mimeType: string; annotations: JsonNode = nil): JsonNode {. raises: [McpError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
data |
string |
|
mimeType |
string |
|
annotations |
JsonNode |
nil |
audioContent
Section titled “audioContent”proc audioContent(data, mimeType: string; annotations: JsonNode = nil): JsonNode {. raises: [McpError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
data |
string |
|
mimeType |
string |
|
annotations |
JsonNode |
nil |
resourceLinkContent
Section titled “resourceLinkContent”proc resourceLinkContent(uri, name: string; mimeType = ""; title = ""; description = ""; size: int64 = -1; annotations: JsonNode = nil): JsonNode {. raises: [McpError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
uri |
string |
|
name |
string |
|
mimeType |
inferred |
"" |
title |
inferred |
"" |
description |
inferred |
"" |
size |
int64 |
-1 |
annotations |
JsonNode |
nil |
embeddedResourceContent
Section titled “embeddedResourceContent”proc embeddedResourceContent(resource: JsonNode; annotations: JsonNode = nil): JsonNode {. raises: [McpError, KeyError], tags: [], forbids: [].}Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
resource |
JsonNode |
|
annotations |
JsonNode |
nil |
newMcpToolResult
Section titled “newMcpToolResult”proc newMcpToolResult(content: JsonNode; structuredContent: JsonNode = nil; isError = false): McpToolResult {.raises: [McpError], tags: [], forbids: [].}Returns: McpToolResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
content |
JsonNode |
|
structuredContent |
JsonNode |
nil |
isError |
inferred |
false |
structuredResult
Section titled “structuredResult”proc structuredResult(value: JsonNode; isError = false): McpToolResult {. raises: [], tags: [], forbids: [].}Returns: McpToolResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
JsonNode |
|
isError |
inferred |
false |
typedResultJson
Section titled “typedResultJson”proc typedResultJson[T](value: T): JsonNodeType parameters: T.
Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
T |
toMcpToolResult
Section titled “toMcpToolResult”proc toMcpToolResult[T](value: McpResult[T]): McpToolResultType parameters: T.
Returns: McpToolResult.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpResult[T] |
toJson (overload 13)
Section titled “toJson (overload 13)”proc toJson[T](value: McpResult[T]): JsonNodeType parameters: T.
Returns: JsonNode.
Arguments
Section titled “Arguments”| Name | Type | Default |
|---|---|---|
value |
McpResult[T] |