xpipe-io/xpipe · error · BeaconClientException
No connection found for input " + name
Error message
No connection found for input " + name
What it means
McpToolHandler.getDataStoreRef resolves a connection by user-supplied name via DataStorageQuery.queryUserInput and throws this BeaconClientException when the query returns no entries. The name did not match any stored connection in the XPipe data storage.
Source
Thrown at app/src/main/java/io/xpipe/app/beacon/mcp/McpToolHandler.java:138
throw new BeaconClientException("Invalid argument for key " + key);
}
return b;
}
public FilePath getFilePath(ShellControl sc, String key) throws Exception {
var s = getStringArgument(key);
var path = FilePath.parse(s);
if (path == null) {
throw new BeaconClientException("Invalid argument for key " + key);
}
return path.resolveTildeHome(sc.view().userHome());
}
public DataStoreEntryRef<?> getDataStoreRef(String name) throws BeaconClientException {
var found = DataStorageQuery.queryUserInput(name);
if (found.isEmpty()) {
throw new BeaconClientException("No connection found for input " + name);
}
if (found.size() > 1) {
throw new BeaconClientException("Multiple connections found: "
+ found.stream()
.map(entry ->
DataStorage.get().getStorePath(entry).toString())
.toList());
}
var e = found.getFirst();
return e.ref();
}
public DataStoreEntryRef<ShellStore> getShellStoreRef(String name, boolean mutation)
throws BeaconClientException {
var ref = getDataStoreRef(name);
var isShell = ref.getStore() instanceof ShellStore;View on GitHub (pinned to d85ca821ba)
Solutions
- Check the exact connection name in the XPipe UI and use it verbatim in the tool call
- List available connections first (e.g. via an MCP list/query tool) and pick a valid identifier
- Recreate the connection if it was deleted, or point the call at an existing one
- Catch BeaconClientException and prompt the user for a corrected connection name
Example fix
// before
req.getDataStoreRef("prod-db-1") // connection does not exist
// after
req.getDataStoreRef("Producers / prod-db") // exact stored path Defensive patterns
Strategy: validation
Validate before calling
// validate before the tool call
const connections = await listConnections(); // e.g. via an MCP listing tool
if (!connections.some(c => c.name === requestedName)) {
throw new Error(`connection '${requestedName}' not found; available: ${connections.map(c => c.name).join(', ')}`);
} Try / catch
try { return tool.call({name}); } catch (BeaconClientException e) { if (e.message.startsWith('No connection found for input')) { /* re-list connections and retry with an exact name */ } throw e; } Prevention
- Resolve connection names from a live listing, not from memory or docs
- Use the full store path shown in the XPipe UI for uniqueness
- Re-verify names after renaming or deleting connections
When it happens
Trigger: Calling an MCP tool with a connection 'name'/'system' argument that matches zero connections: nonexistent connection, deleted connection, or a typo/different casing.
Common situations: Connection was renamed or removed after the tool call was authored; querying by display name when only a path fragment matches; working against a different data storage install (different machine/user profile) that lacks the connection.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Multiple connections found: " + connectionPaths
- Missing argument for key " + key
- Invalid argument for key " + key
- Connection ${path} is not a shell connection
- Modifications to connection ${path} is disabled by the categ
AI-assisted analysis of xpipe-io/xpipe@d85ca821ba (2026-09-06).
Data as JSON: /api/errors/d46c1b8890231c08.
Report an issue: GitHub.