npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@weldall/goose

v0.4.6

Published

Weldall skills and governed API tools for Goose over stdio MCP; requires the local Weldall binary

Readme

Weldall for Goose

Use Weldall skills and connected services in Goose through a local stdio MCP extension.

Requirements

  • Node.js 22.15 or newer.
  • The local Weldall binary in PATH, logged in and supporting organizationInstructions in weldall status --json.

Setup

Add a Command-Line Extension in Goose with a 300-second timeout:

npx -y @weldall/[email protected]

Keep Code Mode disabled in Goose 1.51 so organization instructions reach the model.

Shared discovery (development branch)

When the local CLI explicitly advertises nativeDiscoveryVersion: 1 in status --json, the extension exposes discover_integrations({ resources: ["expenses"], connectorTypes: ["atlassian-mcp"], skills: ["expenses.review"] }), or { query: "expenses" }. It resolves through the CLI and atomically publishes each successful source’s tools and ordinary resources, then emits list-change notifications before returning instructions/outcomes. catalogOnly: true does not activate. Ambiguity uses select_mcp_connection with an explicitly chosen offered ID. read_skill_document uses this same resolver and reports incomplete dependencies.

For capable CLIs, the default workflow starts with focused discovery and activation, including capability questions, unless organization instructions require another workflow. Already active tools are reused directly; no preliminary skill search is needed. Reserve catalogOnly: true for explicit catalog-only overviews without activation. Activation never authorizes writes. Older CLIs retain the search-skills-first workflow.

Repeat a selection to refresh its catalog. { remove: ["resource:expenses", "connector:work"] } removes live handlers without forgetting the session’s account choice; removal cannot enable a silent account switch. A detected identity/origin change clears old routes and requires fresh discovery. Identical concurrent discovery coalesces; cancelling one waiter does not cancel others.

Discovered tools use readable names such as native_list_expenses_<12-hex-suffix> and mcp_search_<12-hex-suffix>. The suffix distinguishes the source, identity, route and original tool name; readable parts are sanitized and shortened to keep the full weldall__-prefixed Goose name within 64 characters. Always use the advertised name rather than constructing one.

Bindings contain only routing metadata. Calls use the exact resource identity, catalog revision, Weldall origin and principal; unknown names/URIs cannot establish routes. A new activation instance starts empty, and a discovered identity/origin change invalidates the previous maps. Native permission checks still happen at the resource; this is not a credential store.

Use the CLI and extension built from this branch for the preview. Older CLIs keep the existing skill workflow and do not receive an unsupported discovery command. Existing connector skills retain their exact selected tools unless an explicit whole-source selection broadens them. New-form skills require a capable CLI/server and are rejected by older parsers, not silently reported as fully activated.

The in-memory MCP tests verify notification ordering and immediate tool-list refresh. Stock Goose, the white-label adapter, Code Mode and packaged-host behavior still need manual acceptance; do not infer host/model refresh guarantees from the protocol tests alone.

Native resource MCP Apps (development branch)

Native tools may reference an HTML/CSS view in _meta.ui.resourceUri. The extension checks that the view exists in that source's catalog, preserves a source/session-local ui:// URI, and routes resource reads through the existing direct CLI path. Connector/connection UI metadata is still stripped. Hosts without MCP Apps support continue to receive normal text tool results.

Before returning native UI HTML to Goose, the extension applies the SDK's HTML sanitizer and restrictive document CSP. This covers text and base64 content, even when the provider changes the MIME type. Assets remain bound to the registered resource origin; validated provider CSP connection domains are forwarded into the second sanitizer pass. Objects stay blocked: use PDF.js/fetch/canvas, not PDF plugins. CLI 0.22.1 or newer is required for connectDomains; 0.22.0 strips that metadata. Provider inline code is removed and replaced with the SDK's CSP-hashed display bootstrap. Public ES modules load only after a compatible host advertises weldall/app-bridge, weldall/display-only or weldall/resource-tool-calls (version 1). A catalog-level _meta.ui.allowedTools opts a view into calls to named tools of that same registered resource. Every registered native HTML view receives an opaque handle for its own resource access, even when its tool allowlist is empty. The extension generates the handle; provider metadata/HTML cannot supply it.

The host keeps the handle out of the iframe and injects it into call_resource_ui_tool, an app-only dispatcher hidden from the model. Every tool dispatch checks the current resource binding and allowlist, then uses the existing CLI issuer/subject/revision/resource guards and live scope authorization. The app-only read_resource_ui_resource dispatcher lists the bound catalog (no URI) or reads a known upstream URI of that exact binding. Foreign/local-routed URIs and caller-supplied routing are rejected. UI-initiated reads never mint or expose new host handles. At most 128 view handles are retained; evicted or replaced bindings require a fresh view read. Native MCP calls are never retried. Goose's existing Auto-mode requirement remains in force; no Rust changes or general-purpose App permission changes are needed.

Ordinary UI-linked tools remain model-only. The desktop enables chat, future-turn context, resource reads, links, user-confirmed downloads, logs and lifecycle actions through the SDK. Direct discovery/connector/ foreign-resource calls and arbitrary HTTP fetching remain unavailable. Chat messages can trigger model actions using any of the chat's tools: the UI allowlist does not constrain subsequent model actions. Older extensions/clients have no usable resource binding and fail closed. Other Goose extensions retain their existing bridge. See the SDK README for capability negotiation and host-specific limitations.

See the Expenses demo for the first UI. Restart the branch extension after rebuilding. The MCP integration tests cover metadata and HTML transport; actual iframe rendering in an installed Goose remains a separate acceptance check.

Textual response content types

The get and send tools normally parse text and JSON responses automatically. For an endpoint documented to return textual bytes with another content type, such as Gmail's multipart/mixed batch response, set responseMode to text. The response is returned inline under the extension's existing output limits. Binary downloads and saving responses to local files remain unsupported.

Request retries and managed connections

The get tool may retry a read after HTTP 429, 502, 503 or 504 with bounded backoff. The send tool is never retried, including when a skill documents POST as a repeatable read-only transport or when the outcome is ambiguous. Before a managed-connection send, pass the exact provider permissions documented by the loaded skill as requiredScopes; the selected connection must be enabled, READY, and grant every required permission. A missing or unavailable connection stops the request before it is sent.