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

@sinjoh/agent

v3.0.0

Published

MCP server for Sinjoh public data, contract planning, prepared calls, and optional host-wallet transaction execution.

Readme

@sinjoh/agent

An MCP server exposing Sinjoh public data plus the SDK's verify, read, plan, preflight, validate, prepare, and optional transaction-execution surface to agents. The standalone server holds no keys. Embedded hosts may inject a wallet executor; when they do, the server exposes a simulate-first signing tool. Discovery tools are explicitly read-only; creator-signed image publication is a separate idempotent write.

Run

# defaults to the public Robinhood mainnet RPC and the packaged manifest
SINJOH_RPC_URL=https://rpc.mainnet.chain.robinhood.com \
  npx --yes --package @sinjoh/agent sinjoh-mcp

Register in an MCP client (e.g. Claude Code):

{
  "mcpServers": {
    "sinjoh": {
      "command": "npx",
      "args": ["--yes", "--package", "@sinjoh/agent", "sinjoh-mcp"],
      "env": { "SINJOH_RPC_URL": "https://rpc.mainnet.chain.robinhood.com" }
    }
  }
}

Node.js 22 or newer is required. SINJOH_CHAIN_ID defaults to mainnet (4663). Testnet (46630) requires a caller-supplied deployment manifest and is therefore available through the library API, not the standalone CLI's packaged defaults.

SINJOH_API_URL defaults to https://api.sinjoh.com. Normal API reads are keyless. Set SINJOH_API_KEY only when an approved integration needs a higher minute limit; keep it in the MCP host's secret environment, not its committed configuration.

Before acting on any manifest address, call sinjoh_verify_manifest and require allVerified: true. A failed or missing runtime hash is a hard stop.

Tools

| Tool | What it does | |---|---| | sinjoh_api_capabilities | Production API version, capacity, documentation, and route catalog | | sinjoh_registry_health | Reconcile and report indexed-versus-public launch coverage, including per-launchpad failures | | sinjoh_image_health | Read canonical image coverage, deliberate no-artwork launches, recovery failures, and per-launchpad counts without writing state | | sinjoh_discover | Paginated contracts, launches, raffles, airdrops, liquidity, Funding Bands, revenue, or randomness | | sinjoh_get | One contract, launch, market, raffle, or protocol account | | sinjoh_history | Bounded market, raffle, airdrop, Funding Bands, or normalized event history | | sinjoh_wallet_activity | Wallet-attributed events and raffle prizes; never presented as claimability | | sinjoh_manifest | Deployed addresses from the packaged manifest | | sinjoh_verify_manifest | Live runtime code-hash verification | | sinjoh_router_snapshot | A router's full immutable structure and binding state | | sinjoh_plan_router_work | Every eligible permissionless action, with contract-capped amounts, prepared calls, and exact guard-preflight inputs | | sinjoh_preflight_guard | Immutable swap floor with explicit oracle/interval/price states and a distinct provider-unavailable result; accepts route hash and signed guard bytes | | sinjoh_check_activation | Launch wiring checklist incl. EIP-1167 clone verification | | sinjoh_validate_config | Offline validation + canonical encoding + configHash for router/raffle/sink configs | | sinjoh_plan_ponsv2_launch | The full predict/deploy/bind launch ordering as prepared calls with readbacks | | sinjoh_plan_flap_launch | The Flap launch ordering, with the vanity token salt verified against the deployed implementation | | sinjoh_plan_letscash_integration | The Sinjoh side of a letscash integration, with post-launch activate, bind, and registry-publication follow-ups | | sinjoh_prepare_launch_image | Validate and hash PNG/JPEG/WebP bytes and return creator-bound EIP-712 typed data | | sinjoh_publish_launch_image | Publish the exact signed bytes to immutable Sinjoh-controlled storage after indexing | | sinjoh_decode_error | Revert data to named error plus operator guidance | | sinjoh_execute_transaction | Simulate, then sign and submit through a host-injected wallet; available only when a wallet is configured |

llms.txt in this package is the protocol digest an agent should load alongside the tools. The server uses the stable MCP 2026 protocol SDK and emits both JSON text and structuredContent for object results.

Wallet execution

The standalone sinjoh-mcp command deliberately has no private-key option. An agent that already has a separate wallet tool can submit the to, data, and value returned by Sinjoh planning tools through that wallet. An application embedding this package can instead inject a SinjohWalletExecutor into createSinjohAgentServer. The executor owns account policy and approval UX and transaction policy; Sinjoh checks the chain ID and simulates each transaction before asking it to sign. The execution tool is marked destructive and non-idempotent so MCP clients can require explicit confirmation. Treat the injected wallet's sendTransaction implementation as the final authorization boundary: enforce destination, value, session, and spending limits there, and honor the supplied request.account and request.chainId when submitting. Wallet execution requires a public client with an explicit chain matching the manifest; do not re-read mutable provider account or chain state inside the executor. Raw private keys never cross the Sinjoh interface. If receipt polling times out after submission, the tool returns status: "submitted" with the transaction hash so the agent can reconcile that hash instead of signing a duplicate transaction.

Token artwork

After a launch is confirmed and appears in sinjoh_get { resource: "launch" }, pass the exact PNG, JPEG, or WebP bytes (base64, at most 2 MB) to sinjoh_prepare_launch_image. Have the indexed creator sign the returned EIP-712 typedData, then pass the unchanged bytes, authorization, and signature to sinjoh_publish_launch_image. The API independently checks the signature, creator, subject, byte hash, MIME signature, dimensions, and authorization lifetime before copying the image to a content-addressed token-logos path. A newer creator signature can replace an older image; replays and launchpad recovery cannot overwrite newer signed artwork, and each launch is capped at ten distinct creator-authorized image revisions.

Launchpad recovery is a safety net, not the primary publication flow. Sinjoh's authenticated operations pass decodes the original Pons v1, Pons v2, Flap, letscash.fun, or pools.trade launch transaction and copies allowlisted upstream artwork into storage. sinjoh_image_health only reads the resulting coverage. Missing or invalid upstream metadata stays visible as a health failure until the creator completes the signed flow.

Conventions

Amounts cross the wire as decimal strings. Configuration objects carry bigint fields as decimal strings. In sinjoh_plan_ponsv2_launch, the router config may use "$ADAPTER" and "$RAFFLE" placeholders for addresses that only exist after prediction, and the raffle config omits exclusions — the canonical list is computed from the predicted curve.

For any planned action carrying guardPreflight, forward that object unchanged to sinjoh_preflight_guard. The planned transaction is a template until the returned floor is inserted and the call is simulated. Never submit its placeholder floor.

Use the API tools for discovery, aggregates, and history. Use the chain tools for live verification, reads, planning, and prepared calls. See the public Sinjoh API reference for field-level semantics.