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

  1. Check the exact connection name in the XPipe UI and use it verbatim in the tool call
  2. List available connections first (e.g. via an MCP list/query tool) and pick a valid identifier
  3. Recreate the connection if it was deleted, or point the call at an existing one
  4. 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

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


AI-assisted analysis of xpipe-io/xpipe@d85ca821ba (2026-09-06). Data as JSON: /api/errors/d46c1b8890231c08. Report an issue: GitHub.