Summary
Artifacts cannot call tools from integrations whose slug contains a hyphen. The artifact is accepted and saved, but its runtime remains behind the stage cover and logs Error: Invalid tool path.
Confirmed with the built-in cloudflare-bindings integration on Executor 1.6.7.
Reproduction
Create an artifact containing a normal declarative query:
function App() {
const query = useQuery(
tools["cloudflare-bindings"].d1_database_query.queryOptions({
database_id: "example-database-id",
sql: "SELECT 1",
}),
)
if (query.isLoading) return <ArtifactLoading />
if (query.error) return <ArtifactError error={query.error} />
return <div>Loaded</div>
}
export { App }
The artifact saves, but opening it produces a blank artifact stage. Capturing the browser runtime exception shows:
Error: Invalid tool path.
at hP (...executor-mcp-apps-shell...)
An otherwise equivalent artifact using tools.honeycomb.run_query renders and executes correctly.
Root cause observed in the shipped client
The shipped artifact shell validates every path segment as a JavaScript identifier and always emits dot notation:
var mP = /^[A-Za-z_$][\w$]*$/;
function hP(path, args, role) {
if (path.length === 0) throw Error("Invalid tool path.");
let segments = path.map(segment => {
if (typeof segment !== "string" || !mP.test(segment)) {
throw Error("Invalid tool path.");
}
return segment;
});
// Emits return await tools.${first}...${rest.join(".")}(...)
}
cloudflare-bindings necessarily fails that regex. Camel-casing it in artifact source is not a workaround because the actual integration slug remains cloudflare-bindings.
Expected behavior
Artifact tool calls should support every configured integration/tool slug accepted elsewhere by Executor, including hyphenated slugs.
One possible fix is to serialize non-identifier path segments with bracket notation rather than rejecting them, for example tools["cloudflare-bindings"].d1_database_query(...). Applying the same serialization to all path segments would also cover hyphenated tool names safely.
Environment
- Executor 1.6.7
- macOS 26.4, arm64
- Local daemon/web app
- Integration: built-in
cloudflare-bindings
Summary
Artifacts cannot call tools from integrations whose slug contains a hyphen. The artifact is accepted and saved, but its runtime remains behind the stage cover and logs
Error: Invalid tool path.Confirmed with the built-in
cloudflare-bindingsintegration on Executor 1.6.7.Reproduction
Create an artifact containing a normal declarative query:
The artifact saves, but opening it produces a blank artifact stage. Capturing the browser runtime exception shows:
An otherwise equivalent artifact using
tools.honeycomb.run_queryrenders and executes correctly.Root cause observed in the shipped client
The shipped artifact shell validates every path segment as a JavaScript identifier and always emits dot notation:
cloudflare-bindingsnecessarily fails that regex. Camel-casing it in artifact source is not a workaround because the actual integration slug remainscloudflare-bindings.Expected behavior
Artifact tool calls should support every configured integration/tool slug accepted elsewhere by Executor, including hyphenated slugs.
One possible fix is to serialize non-identifier path segments with bracket notation rather than rejecting them, for example
tools["cloudflare-bindings"].d1_database_query(...). Applying the same serialization to all path segments would also cover hyphenated tool names safely.Environment
cloudflare-bindings