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

@manifest-network/manifest-mcp-agent

v0.14.0

Published

MCP server wrapping @manifest-network/manifest-agent-core orchestration (deploy / manage-domain / troubleshoot / close-lease) via MCP elicitation

Readme

@manifest-network/manifest-mcp-agent

MCP server wrapping @manifest-network/manifest-agent-core orchestration (deploy / manage-domain / lookup-domain / troubleshoot / close-lease) via MCP elicitation. The three broadcasting tools translate agent-core's typed confirmation callbacks (onConfirm, plus onPlan for deploy_app_orchestrated) into standard MCP elicitation/create requests so any elicitation-capable host (Claude Code ≥ 2.1.76; the MCP elicitation spec was finalized in 2026) can drive the confirm flow over wire — no AskUserQuestion, no interactive stdin, no out-of-band channel. The read-only tools (lookup / troubleshoot) perform no elicitation — they emit only progress and failure/log notifications (notifications/progress + notifications/message) and run on any host.

Installation

npm install @manifest-network/manifest-mcp-agent

Tools

| Tool | agent-core function | Description | | ---- | ------------------- | ----------- | | deploy_app_orchestrated | deployApp | Plan → confirm → broadcast (fred atomic deploy: create-lease + manifest upload + optional set-domain) → persist manifest. Bidirectional recovery on partial-success via onFailure(env, options) → enum-of-RecoveryOptionId elicitation. | | manage_domain_orchestrated | manageDomain | set / clear a lease item's custom domain. Confirm → broadcast → verify on-chain. | | lookup_custom_domain_orchestrated | manageDomain (lookup) | Reverse-resolve an FQDN to its owning lease. Pure chain query — no broadcast, zero elicitations. Returns the lease or null when unclaimed. | | troubleshoot_deployment_orchestrated | troubleshootDeployment | Markdown-formatted chain-side diagnostic report. No broadcast. | | close_lease_orchestrated | closeLease | Confirm → broadcast close-lease → verify terminal state on-chain. Permanent. |

Each tool returns the corresponding agent-core result type (DeployResult / ManageDomainResult / TroubleshootReport / CloseLeaseResult) as structured content. Errors surface as the standard MCP error envelope; ManifestMCPError subtypes pass through unchanged via withErrorHandling.

Host requirements

MCP elicitation support is required only for the tools/actions that prompt the user: deploy_app_orchestrated, close_lease_orchestrated, and manage_domain_orchestrated with action='set' or 'clear'. Hosts that don't advertise capabilities.elicitation at initialize receive ManifestMCPError(INVALID_CONFIG) with a clear diagnostic when invoking those paths — the wrapper does not fall back to stdin prompts or auto-confirm.

The two read-only paths run without an elicitation-capable host:

  • troubleshoot_deployment_orchestrated — pure chain-side diagnostic report
  • lookup_custom_domain_orchestrated — pure chain query reverse-resolving an FQDN to its owning lease

Verified hosts:

  • Claude Code ≥ 2.1.76 (full surface; elicitation-capable)
  • Any MCP host (read-only surface: troubleshoot + lookup_custom_domain)

Environment variables

The agent server reads the standard chain / wallet env vars (same matrix as manifest-mcp-chain / manifest-mcp-lease / manifest-mcp-fred) plus three agent-only additions.

| Variable | Required | Default | Notes | | -------- | -------- | ------- | ----- | | COSMOS_CHAIN_ID | Yes | — | Active-chain detection (testnet / mainnet) inside deployApp reads this. | | COSMOS_RPC_URL + COSMOS_GAS_PRICE | One of RPC/REST | — | RPC required for broadcast operations (deploy / manage / close). | | COSMOS_REST_URL | One of RPC/REST | — | When both are set, REST is preferred for queries. | | COSMOS_GAS_MULTIPLIER | No | 1.5 | Must be ≥ 1. | | COSMOS_ADDRESS_PREFIX | No | manifest | | | MANIFEST_KEY_FILE | No | ~/.manifest/key.json | Encrypted keyfile path. | | MANIFEST_KEY_PASSWORD | No | — | Keyfile decrypt password. | | COSMOS_MNEMONIC | No | — | Fallback wallet (no keyfile). | | MANIFEST_AGENT_DATA_DIR | No | — | Passes to DeployAppOptions.dataDir (operator-set; the deploy_app_orchestrated tool no longer accepts a per-call data_dir override — finding #4). When unset, manifest persistence is skipped and success still emits. Pass a dedicated subdirectory (NOT $HOME or any shared dir) — saveManifest() chmods this path to 0o700. | | MANIFEST_CHAIN_DATA_FILE | No | — | Path to a chain-registry JSON ({ feeTokens: [...] }) for denom humanization (e.g. umfxMFX). Loaded once at startup. | | MANIFEST_AGENT_FETCH_GUARDED | No | 1 (default ON) | Swaps in agent-core's SSRF-guarded createGuardedFetch (Node-only — dynamic import keeps the platform-neutral build legal). Set to 0 / false / no / off to disable (e.g. for local-loopback testing). Accepted truthy: 1 / true / yes / on; case-insensitive. Unrecognized values throw INVALID_CONFIG rather than silently no-op. | | MANIFEST_AGENT_ELICIT_TIMEOUT_MS | No | 600000 (10 min) | Per-elicitInput timeout in milliseconds. The MCP SDK default of 60s is far too short for a human reading a deployment-plan recap — Phase 2 default is 10 minutes. Positive integer; malformed values fall back to the default. | | LOG_LEVEL | No | warn | debug / info / warn / error / silent. |

CLI usage

Distributed as a single binary manifest-mcp-agent via the @manifest-network/manifest-mcp-node package:

COSMOS_CHAIN_ID=manifest-2 \
COSMOS_RPC_URL=https://nodes.liftedinit.tech:443 \
COSMOS_GAS_PRICE=0.025umfx \
MANIFEST_KEY_FILE=~/.manifest/key.json \
MANIFEST_KEY_PASSWORD=... \
manifest-mcp-agent

MCP-client config

Minimal claude_desktop_config.json (equivalent for any elicitation-capable MCP host):

{
  "mcpServers": {
    "manifest-agent": {
      "command": "manifest-mcp-agent",
      "env": {
        "COSMOS_CHAIN_ID": "manifest-2",
        "COSMOS_RPC_URL": "https://nodes.liftedinit.tech:443",
        "COSMOS_GAS_PRICE": "0.025umfx",
        "MANIFEST_KEY_FILE": "~/.manifest/key.json",
        "MANIFEST_KEY_PASSWORD": "...",
        "MANIFEST_AGENT_DATA_DIR": "~/.manifest/manifests",
        "MANIFEST_CHAIN_DATA_FILE": "~/.manifest/chain.json"
      }
    }
  }
}

Library usage

import { AgentMCPServer } from '@manifest-network/manifest-mcp-agent';

const server = new AgentMCPServer({
  config,          // ManifestMCPConfig from @manifest-network/manifest-mcp-core
  walletProvider,  // WalletProvider from @manifest-network/manifest-mcp-core
});
const mcpServer = server.getServer();
// Connect mcpServer to your preferred MCP transport.

Dependency injection (testing)

Tests can override any of the four agent-core orchestration functions via the constructor's orchestrators option:

const server = new AgentMCPServer({
  config,
  walletProvider,
  orchestrators: {
    deployApp: async (spec, callbacks, opts) => {
      callbacks.onProgress?.({ kind: 'user_confirmed' });
      return { /* fake DeployResult */ };
    },
  },
});

Missing keys fall back to the real implementations. Production callers leave orchestrators undefined.

Build

npm run build    # tsdown (platform: neutral)
npm run lint     # tsc --noEmit
npm run test     # vitest

Architecture notes

The wrapper is pure adapter — no orchestration logic, no re-rendering of the human-prose blocks that agent-core's internals/render-*.ts modules produce. All elicitation message bodies are passed through verbatim. See PLAN.md §2 for the full callback → elicitation translation contract and the downstream _meta.manifest matrix consumed by the manifest-agent plugin's PreToolUse hook.

License

MIT