{
  "name": "com.l1fe.forge:forge-mcp",
  "language": "kotlin",
  "version": "0.1.0",
  "description": "Kotlin/JVM forge-mcp module.",
  "manifest": "forge-kt/forge-mcp/build.gradle.kts",
  "manifestSha256": "5e2ce701d0ca455bdfb3d83fc58a6ef58205440728777573e527434c6d2cb84f",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/kotlin/forge-mcp",
  "features": {},
  "files": [
    {
      "path": "forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpClient.kt",
      "sha256": "af05cad8dd6cd11c798b1de8b5a1b7e278257c640649d5ca9fd2d157c49959c9",
      "artifactSha256": "796cfa3465e5d16f86f9d5e7730b652376ef4f8281ef278f90993f17fde79274",
      "url": "/reference/source/forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpClient.kt.txt",
      "declarations": [
        {
          "name": "public class McpClient(",
          "line": 32,
          "signature": "public class McpClient(\nprivate val transport: McpTransport,\nprivate val telemetry: TelemetryEmitter;",
          "documentation": ""
        },
        {
          "name": "public val isConnected: Boolean get();",
          "line": 45,
          "signature": "public val isConnected: Boolean get();",
          "documentation": ""
        },
        {
          "name": "public suspend fun connect()",
          "line": 54,
          "signature": "public suspend fun connect()",
          "documentation": ""
        },
        {
          "name": "public suspend fun listTools(): List<McpToolDescriptor>",
          "line": 108,
          "signature": "public suspend fun listTools(): List<McpToolDescriptor>",
          "documentation": ""
        },
        {
          "name": "public suspend fun callTool(toolName: String, arguments: JsonObject): List<McpContent>",
          "line": 139,
          "signature": "public suspend fun callTool(toolName: String, arguments: JsonObject): List<McpContent>",
          "documentation": ""
        },
        {
          "name": "public suspend fun listResources(): List<McpResource>",
          "line": 192,
          "signature": "public suspend fun listResources(): List<McpResource>",
          "documentation": ""
        },
        {
          "name": "public suspend fun disconnect()",
          "line": 216,
          "signature": "public suspend fun disconnect()",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpError.kt",
      "sha256": "4a613d41895bfcd7d1ed661568aec55e709bd178b36ac38b54b5c5901d31b7e5",
      "artifactSha256": "d97099094bc486a10a3f44761dfe51384b9928c5a0fcb1d1bd69e0b7ce64b082",
      "url": "/reference/source/forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpError.kt.txt",
      "declarations": [
        {
          "name": "public sealed class ForgeMcpError(",
          "line": 13,
          "signature": "public sealed class ForgeMcpError(\nmessage: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ConnectionFailed(",
          "line": 24,
          "signature": "public class ConnectionFailed(\npublic val endpoint: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val endpoint: String,",
          "line": 25,
          "signature": "public val endpoint: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 26,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ToolCallFailed(",
          "line": 36,
          "signature": "public class ToolCallFailed(\npublic val toolName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val toolName: String,",
          "line": 37,
          "signature": "public val toolName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 38,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ResourceFailed(",
          "line": 48,
          "signature": "public class ResourceFailed(\npublic val resourceUri: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val resourceUri: String,",
          "line": 49,
          "signature": "public val resourceUri: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 50,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ProtocolError(",
          "line": 60,
          "signature": "public class ProtocolError(\npublic val code: Int,\npublic val detail: String,\n) : ForgeMcpError(\"MCP protocol error (code $code): $detail\")\n\n/**\n* The MCP transport layer failed.\n*\n* @property transport The transport type that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transport: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val code: Int,",
          "line": 61,
          "signature": "public val code: Int,\npublic val detail: String,\n) : ForgeMcpError(\"MCP protocol error (code $code): $detail\")\n\n/**\n* The MCP transport layer failed.\n*\n* @property transport The transport type that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transport: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val detail: String,",
          "line": 62,
          "signature": "public val detail: String,\n) : ForgeMcpError(\"MCP protocol error (code $code): $detail\")\n\n/**\n* The MCP transport layer failed.\n*\n* @property transport The transport type that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transport: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class TransportError(",
          "line": 71,
          "signature": "public class TransportError(\npublic val transport: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val transport: String,",
          "line": 72,
          "signature": "public val transport: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 73,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class HandlerError(",
          "line": 83,
          "signature": "public class HandlerError(\npublic val handler: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val handler: String,",
          "line": 84,
          "signature": "public val handler: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 85,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpServer.kt",
      "sha256": "69f651637d0b0d47995e1f855de43a0c6e254140140915cea85cff85c1031c58",
      "artifactSha256": "90676ba9c1b46caa6c5ad87e70542093d4f60b7b05fd7336da37c2550f214f5b",
      "url": "/reference/source/forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpServer.kt.txt",
      "declarations": [
        {
          "name": "public fun interface McpToolHandler",
          "line": 25,
          "signature": "public fun interface McpToolHandler",
          "documentation": ""
        },
        {
          "name": "public suspend fun handle(arguments: JsonObject): List<McpContent>",
          "line": 32,
          "signature": "public suspend fun handle(arguments: JsonObject): List<McpContent>\n}\n\n/**\n* A handler for an MCP resource read.\n*/\npublic fun interface McpResourceHandler",
          "documentation": ""
        },
        {
          "name": "public fun interface McpResourceHandler",
          "line": 38,
          "signature": "public fun interface McpResourceHandler",
          "documentation": ""
        },
        {
          "name": "public suspend fun handle(uri: String): List<McpContent>",
          "line": 45,
          "signature": "public suspend fun handle(uri: String): List<McpContent>\n}\n\n/**\n* A registered tool on the MCP server.\n*/\nprivate data class RegisteredTool(\nval descriptor: McpToolDescriptor,\nval handler: McpToolHandler,\n)\n\n/**\n* A registered resource on the MCP server.\n*/\nprivate data class RegisteredResource(\nval resource: McpResource,\nval handler: McpResourceHandler,\n)\n\n/**\n* An MCP server that exposes tools and resources.\n*\n* Register tools and resources, then call [handleRequest] to process\n* incoming JSON-RPC 2.0 messages.\n*\n* ANVIL Spec Section 16.4",
          "documentation": ""
        },
        {
          "name": "public class McpServer(",
          "line": 75,
          "signature": "public class McpServer(\npublic val serverName: String;",
          "documentation": ""
        },
        {
          "name": "public val serverName: String;",
          "line": 76,
          "signature": "public val serverName: String;",
          "documentation": ""
        },
        {
          "name": "public val serverVersion: String;",
          "line": 77,
          "signature": "public val serverVersion: String;",
          "documentation": ""
        },
        {
          "name": "public fun registerTool(",
          "line": 91,
          "signature": "public fun registerTool(\nname: String,\ndescription: String,\ninputSchema: JsonSchema;",
          "documentation": ""
        },
        {
          "name": "public fun registerResource(",
          "line": 114,
          "signature": "public fun registerResource(\nuri: String,\nname: String,\ndescription: String?;",
          "documentation": ""
        },
        {
          "name": "public suspend fun handleRequest(requestJson: String): String",
          "line": 138,
          "signature": "public suspend fun handleRequest(requestJson: String): String",
          "documentation": ""
        },
        {
          "name": "public val toolCount: Int get();",
          "line": 239,
          "signature": "public val toolCount: Int get();",
          "documentation": ""
        },
        {
          "name": "public val resourceCount: Int get();",
          "line": 242,
          "signature": "public val resourceCount: Int get();",
          "documentation": ""
        },
        {
          "name": "public fun listRegisteredTools(): List<McpToolDescriptor> =",
          "line": 245,
          "signature": "public fun listRegisteredTools(): List<McpToolDescriptor> =",
          "documentation": ""
        },
        {
          "name": "public fun listRegisteredResources(): List<McpResource> =",
          "line": 249,
          "signature": "public fun listRegisteredResources(): List<McpResource> =",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpTransport.kt",
      "sha256": "0229e9289e7d0706d72d44acb1d8d8636dc6269e5d660384b72e2d1f7db0de93",
      "artifactSha256": "9677c38a40775aac142302331968077fb7931db3b88bca9f896fe6fba98590d7",
      "url": "/reference/source/forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpTransport.kt.txt",
      "declarations": [
        {
          "name": "public interface McpTransport",
          "line": 20,
          "signature": "public interface McpTransport",
          "documentation": ""
        },
        {
          "name": "public suspend fun send(message: String)",
          "line": 28,
          "signature": "public suspend fun send(message: String)\n\n/**\n* Receive a JSON-RPC message from the transport.\n*\n* Suspends until a message is available.\n*\n* @return The received JSON message.\n* @throws ForgeMcpError.TransportError if receiving fails.\n*/\npublic suspend fun receive(): String\n\n/**\n* Close the transport connection.\n*/\npublic suspend fun close()\n\n/**\n* Whether the transport is currently connected.\n*/\npublic val isConnected: Boolean\n}\n\n/**\n* Transport configuration.\n*",
          "documentation": ""
        },
        {
          "name": "public suspend fun receive(): String",
          "line": 38,
          "signature": "public suspend fun receive(): String\n\n/**\n* Close the transport connection.\n*/\npublic suspend fun close()\n\n/**\n* Whether the transport is currently connected.\n*/\npublic val isConnected: Boolean\n}\n\n/**\n* Transport configuration.\n*\n* @property type The transport type.\n* @property command The command to execute (for stdio transport).\n* @property args Command arguments (for stdio transport).\n* @property url The URL to connect to (for SSE/HTTP transport).\n* @property headers Optional HTTP headers (for SSE/HTTP transport).\n*/\npublic data class TransportConfig(\nval type: TransportType,\nval command: String?;",
          "documentation": ""
        },
        {
          "name": "public suspend fun close()",
          "line": 43,
          "signature": "public suspend fun close()\n\n/**\n* Whether the transport is currently connected.\n*/\npublic val isConnected: Boolean\n}\n\n/**\n* Transport configuration.\n*\n* @property type The transport type.\n* @property command The command to execute (for stdio transport).\n* @property args Command arguments (for stdio transport).\n* @property url The URL to connect to (for SSE/HTTP transport).\n* @property headers Optional HTTP headers (for SSE/HTTP transport).\n*/\npublic data class TransportConfig(\nval type: TransportType,\nval command: String?;",
          "documentation": ""
        },
        {
          "name": "public val isConnected: Boolean",
          "line": 48,
          "signature": "public val isConnected: Boolean\n}\n\n/**\n* Transport configuration.\n*\n* @property type The transport type.\n* @property command The command to execute (for stdio transport).\n* @property args Command arguments (for stdio transport).\n* @property url The URL to connect to (for SSE/HTTP transport).\n* @property headers Optional HTTP headers (for SSE/HTTP transport).\n*/\npublic data class TransportConfig(\nval type: TransportType,\nval command: String?;",
          "documentation": ""
        },
        {
          "name": "public data class TransportConfig(",
          "line": 60,
          "signature": "public data class TransportConfig(\nval type: TransportType,\nval command: String?;",
          "documentation": ""
        },
        {
          "name": "public enum class TransportType",
          "line": 71,
          "signature": "public enum class TransportType",
          "documentation": ""
        },
        {
          "name": "public class StdioTransport(",
          "line": 92,
          "signature": "public class StdioTransport(\nprivate val command: String,\nprivate val args: List<String>;",
          "documentation": ""
        },
        {
          "name": "public fun start()",
          "line": 108,
          "signature": "public fun start()",
          "documentation": ""
        },
        {
          "name": "public class SseTransport(",
          "line": 162,
          "signature": "public class SseTransport(\nprivate val url: String,\nprivate val headers: Map<String, String>;",
          "documentation": ""
        },
        {
          "name": "public fun connect()",
          "line": 180,
          "signature": "public fun connect()",
          "documentation": ""
        },
        {
          "name": "public class HttpTransport(",
          "line": 215,
          "signature": "public class HttpTransport(\nprivate val url: String,\nprivate val headers: Map<String, String>;",
          "documentation": ""
        },
        {
          "name": "public fun connect()",
          "line": 229,
          "signature": "public fun connect()",
          "documentation": ""
        },
        {
          "name": "public fun createTransport(config: TransportConfig): McpTransport;",
          "line": 261,
          "signature": "public fun createTransport(config: TransportConfig): McpTransport;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpTypes.kt",
      "sha256": "9f67ab2911f83df5a66830ed62416c53b5d6db676b1c1400477c363d1fec4f18",
      "artifactSha256": "441a1bce954558000376a8fa30add8ba7ed5efb7394bf18f5e63a66d58d71b32",
      "url": "/reference/source/forge-kt/forge-mcp/src/main/kotlin/com/l1fe/forge/mcp/McpTypes.kt.txt",
      "declarations": [
        {
          "name": "public data class McpToolDescriptor(",
          "line": 25,
          "signature": "public data class McpToolDescriptor(\nval name: String,\nval description: String,\nval inputSchema: JsonSchema;",
          "documentation": ""
        },
        {
          "name": "public data class McpResource(",
          "line": 40,
          "signature": "public data class McpResource(\nval uri: String,\nval name: String,\nval description: String?;",
          "documentation": ""
        },
        {
          "name": "public data class McpPrompt(",
          "line": 56,
          "signature": "public data class McpPrompt(\nval name: String,\nval description: String?;",
          "documentation": ""
        },
        {
          "name": "public data class McpPromptArgument(",
          "line": 70,
          "signature": "public data class McpPromptArgument(\nval name: String,\nval description: String?;",
          "documentation": ""
        },
        {
          "name": "public data class McpRequest(",
          "line": 85,
          "signature": "public data class McpRequest(\nval jsonrpc: String;",
          "documentation": ""
        },
        {
          "name": "public data class McpResponse(",
          "line": 101,
          "signature": "public data class McpResponse(\nval jsonrpc: String;",
          "documentation": ""
        },
        {
          "name": "public data class McpJsonRpcError(",
          "line": 116,
          "signature": "public data class McpJsonRpcError(\nval code: Int,\nval message: String,\nval data: JsonElement?;",
          "documentation": ""
        },
        {
          "name": "public data class McpCapabilities(",
          "line": 130,
          "signature": "public data class McpCapabilities(\nval tools: Boolean;",
          "documentation": ""
        },
        {
          "name": "public data class McpContent(",
          "line": 145,
          "signature": "public data class McpContent(\nval type: String;",
          "documentation": ""
        },
        {
          "name": "public fun text(text: String): McpContent;",
          "line": 154,
          "signature": "public fun text(text: String): McpContent;",
          "documentation": ""
        },
        {
          "name": "public fun image(data: String, mimeType: String): McpContent =",
          "line": 157,
          "signature": "public fun image(data: String, mimeType: String): McpContent =",
          "documentation": ""
        }
      ]
    }
  ]
}
