Start a new conversation to begin chatting with AI.
++ The AI has access to both test tools and any connected MCP servers. +
+No conversations yet.
+Click "New Conversation" to get started.
++ {formatDate(conversation.updatedAt)} +
+ {conversation.messages.length > 0 && ( ++ {(() => { + const lastMessage = conversation.messages[conversation.messages.length - 1]; + const firstBlock = lastMessage?.content?.[0]; + return firstBlock?.type === 'text' ? firstBlock.text : 'Tool interaction'; + })()} +
+ )} ++ Choose a provider and authenticate to start chatting +
+{error}
++ Your API key is stored locally and never sent to our servers +
+
+ {JSON.stringify({
+ id: message.id,
+ type: message.type,
+ providerId: message.providerId,
+ providerName: message.providerName,
+ model: message.model,
+ timestamp: message.timestamp.toISOString(),
+ duration: message.duration
+ }, null, 2)}
+
+
+ {JSON.stringify(message.request, null, 2)}
+
+
+ {JSON.stringify(message.response, null, 2)}
+
+
+ {message.error instanceof Error ? message.error.message : JSON.stringify(message.error, null, 2)}
+
+ + π’ Connected to {provider.name} +
++ {models.length} models available +
++ βͺ Not connected +
+ +Connect to OpenRouter to access AI models for conversations.
+You'll need an OpenRouter account and API key to authenticate.
+
+ {JSON.stringify(entry.message, null, 2)}
+
+ + {connectedServers.length} servers connected +
++ {allTools.length} tools available +
++ No MCP servers configured. Go to the "MCP Provider Test" tab to add servers. +
+ ) : ( ++ {connection.status} +
+ {connection.error && ( ++ {connection.error} +
+ )} ++ Tools ({connection.tools.length}): +
++ {tool.function.description} +
+ )} ++ {connectedServers.length} servers connected +
++ {allTools.length} tools available +
++ No MCP servers configured. Add a server above to get started. +
+ ) : ( ++ {connection.status} +
+ {connection.error && ( ++ {connection.error} +
+ )} ++ {connection.url} +
++ Tools ({connection.tools.length}): +
+{block.text}
+
+ {JSON.stringify(block.input, null, 2)}
+
+
+ {block.content}
+
+ ) : (
+ block.content.map((contentItem: any, idx: number) => (
+ {contentItem.text}
+ )}
+ {contentItem.error && (
+
+ Error: {contentItem.error}
+
+ )}
+ Start a conversation
++ Ask a question or request help with something. The AI can use tools to help you. +
++ This window will close automatically. +
+