Skip to content

[bug] execute tools.search times out when namespace is omitted or several slugs are searched in one run #1935

Description

@dsivaasi

Executor version

Executor Cloud (hosted, 2026-09-03). Cloud MCP at https://executor.sh/<org>/mcp.

How do you run Executor?

Executor Cloud

Operating system

Linux

Integration involved

Built-in execute sandbox tools.search ({ query: string; namespace?: string; limit?: number; offset?: number }). Workspace with a large OpenAPI catalog (Grafana ~300 ops, Nutanix, Icinga, Outline, plus others).

What happened

tools.search inside execute dies / the MCP execute call hits the client timeout (~MCP -32001 / multi-minute hang) when a run searches more than one integration.

Two shapes we hit:

  1. No namespacetools.search({ query: "cpu" }) walks the whole workspace catalog.
  2. Several namespaced searches in one execute — e.g. a cloud agent / skill doing Icinga + Nutanix + Grafana + Outline in one batched execute (Promise.all or sequential searches in the same sandbox run).

A single tools.search({ namespace: "<one-slug>", query: "…" }) (or empty query to enumerate that slug) returns quickly.

namespace is a single string, not an array, so there is no supported multi-slug search — agents still batch it themselves and blow the timeout.

This is an Executor/client footgun, not an upstream API gap. Workaround we are putting on integration descriptions: search one slug per execute.

Related: #1383 (enumerating a namespace's catalog — closed). Empty query + namespace does enumerate now; the remaining failure is unbounded / multi-namespace search.

What you expected

Either:

  • tools.search without namespace (or with several slugs) should return a bounded, ranked page quickly (hard limit, fail closed rather than hang), or
  • reject omitted/* namespace immediately with a message: pass exactly one integration slug.

Agents should not have to learn the timeout the hard way.

Steps to reproduce

  1. Open a Cloud workspace whose OpenAPI catalog is large (hundreds of tools across Grafana, Nutanix, Icinga, Outline, …).
  2. execute: await tools.search({ query: "status" }); with no namespace. Observe MCP timeout / hang.
  3. execute: four tools.search calls in one run, each with a different namespace (icinga, nutanix-pc, grafana, outline). Same hang.
  4. execute: await tools.search({ namespace: "grafana", query: "health", limit: 8 }); — succeeds.

Diagnostics / logs

No secrets. Hosted Cloud. MCP error seen: MCP error -32001: Request timed out on the execute tool. Single-namespace search on the same connection is fine.

Before you submit

  • I searched the open issues for a duplicate.
  • I removed all keys, tokens, and credentials from this report.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions