Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for printr

Pod holds 20 of 31 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to printr.

Most discussed

feat(mcp): remote MCP server hosted on Cloudflare Workers

Motivation

@printr/mcp today is stdio-only — every user installs it locally via the CLI (bunx @printr/cli setup). That terminal-first flow is the biggest drop-off between "interested" and "agent connected" (see #113). A remote MCP server hosted on Cloudflare Workers gives clients a plain URL to connect to — no local install, no runtime, no keystore on the user's box.

This is now unblocked: Epic A (#103) made @printr/sdk Workers-ready, so the core runs on a V8 isolate without v

Read the thread · 2026-06-19 · open · 5 comments

Epic A: SDK Workers-ready

Goal

@printr/sdk evaluates and runs cleanly on Cloudflare Workers / edge runtimes without vendoring.

Why bundle

All four sub-issues share one acceptance gate: "a Worker importing the SDK barrel evaluates without throwing." Same package.json exports surgery, same Worker eval smoke test, same release. Landing them piecemeal leaves Workers consumers half-broken between releases.

Sub-issues

  • #96 — lazy-load sharp + node:fs in image.ts
  • #97 — drop createRequire s

Read the thread · 2026-05-25 · closed · 2 comments

feat(mcp): publish Printr skill manifest for agent composition

Motivation

Bankr publishes a skills repo so any agent runtime can pull in their capabilities as a plug-and-play skill. We already have packages/cli/skills/printr/SKILL.md — this issue is about formalizing and publishing it so other agents (and our own users) can install Printr capabilities the same way.

The README already advertises npx skills add PrintrFi/printr-mcp, but the skill itself isn't surfaced as a first-class artifact alongside the MCP se

Read the thread · 2026-05-14 · closed · outside contributor · 2 comments

docs: update gitbook for current MCP/SDK + cross-link with the dev docs

Context

While aligning the gh-pages dev docs voice to the gitbook (https://printr.gitbook.io/printr-docs/), a few gitbook pages were found out of date vs the current printr-mcp repo. Queueing a pass to fix them and to cross-link the gitbook (product/conceptual) with the gh-pages dev docs (https://printrfi.github.io/printr-mcp/, MCP tool + SDK reference).

Stale items found (verify + fix)

  • CLI command is wrong. for-agents/printr-mcp.md + for-agents/README.md show `bunx

Read the thread · 2026-06-20 · closed · 1 comment

setupBareExtension: generic factory for proto/openapi wrappers

Idea

Generic factory that takes a class/ctor and returns a mapped-type object with uncapitalized method names. Collapses N near-identical wrapper modules (each generated proto/openapi service file) into one helper invocation.

export function setupBareExtension<T extends new (...a: any[]) => any>(Ctor: T): UncapitalizeKeys<InstanceType<T>> { ... }

Why

  • Pairs with #83 (template-literal renaming) for ergonomic proto APIs
  • Smaller surface in staking-api.ts / fees-api.ts once

Read the thread · 2026-05-17 · closed · 1 comment

Template-literal method renaming for proto wrappers

Idea

Strip Request/Msg/Response suffixes at the type level for generated proto wrappers in fees-api.ts and staking-api.ts:

type SimplifyRequestMethod<T extends string> =
  T extends `${infer Base}Request` ? Uncapitalize<Base> : T;

type KeepOnlySimplifiedRequestMethods<T> = {
  [K in keyof T as K extends `${string}Request` ? SimplifyRequestMethod<K & string> : never]: T[K];
};

Lets the public surface expose .claimRewards() / .createStakePosition() etc. even when the

Read the thread · 2026-05-17 · closed · 1 comment

feat(sdk,mcp): use CAIP-10 token IDs for printr_transfer_token / executeTokenTransfer

Context

Surfaced in Copilot review on #56. The printr_transfer_token MCP tool and the SDK executeTokenTransfer dispatcher both accept an unqualified token_address and infer the execution chain from the recipient's CAIP-10 address. A caller who pastes a token contract from another chain (very common — many tokens deploy to multiple EVM chains under different addresses) will silently execute against whatever code or EOA happens to live at that address on the destination chain.

`printr_g

Read the thread · 2026-05-05 · closed · 1 comment

Published tarball 0.16.1 ships certs/key.pem (private key) via the "files" allowlist

Hello,

A heads-up from outside the project rather than a bug in the code.

The published tarball for @printr/mcp@0.16.1 contains certs/key.pem (227 bytes) alongside certs/fullchain.pem (4108 bytes). A 227-byte PEM next to a full chain is the shape of a TLS private key, not a public one. It is in the current latest version, so it is in every copy installed since release; npm pack @printr/mcp@0.16.1 reproduces it in seconds.

This is not the usual packaging accident — `package.jso

Read the thread · 2026-08-27 · open · external user · 0 comments

Most recent

feat(docs): generate SDK API reference (TSDoc → MDX, like onrails)

Motivation

#57 backfilled TSDoc across every public @printr/sdk export and MCP register*Tool. Now that the source carries structured doc comments, we can surface a proper API reference section in the docs site — the sdk.mdx page is currently a hand-written high-level map, not per-function reference.

Target shape: a dedicated API section like ~/dev/onrails (apps/docs/content/docs/api/{result,maybe,pattern}.mdx) — rich per-primitive pages with twoslash examples.

Approach

Read the thread · 2026-06-19 · open · 0 comments

feat(sdk,cli): extract MCP client table to @printr/sdk for web reuse

Motivation

The only way to install the Printr MCP server today is the CLI (bunx @printr/cli setup --client cursor). This is a terminal-first flow that most app users never complete — it's the single biggest drop-off between "user is in the app" and "user has an agent connected".

We want a "Connect your agent" button in the main app (printr/web) that renders the per-client MCP config (copy-to-clipboard + deep links) directly in the UI, so install moves into the product surface where

Read the thread · 2026-06-02 · open · 0 comments

Epic C: Agent trading UX

Goal

Agents using @printr/mcp can swap, buy, sell, and bridge — not just launch.

Why bundle

Both sub-issues:

  • Need the signer primitive from Epic B / #100
  • Ship MCP tools + SDK adapter pair
  • Require provider choice + e2e fork tests
  • Share fee-routing / quote-flow architecture decisions

Landing them as one epic forces consistent UX (quote-then-confirm vs one-shot, fee model, status polling).

Sub-issues

  • #62 — trading tools: swap, buy, sell by ticker
  • #63 — cross-cha

Read the thread · 2026-05-25 · open · 0 comments

Epic B: Shared SDK primitives

Goal

Lift two pieces of MCP-internal logic into shared SDK subpaths so every Printr client reuses them.

Why bundle

Both extract logic currently duplicated/inlined in MCP into @printr/sdk subpaths. Same review pattern (subpath export, interface, two reference impls, MCP swap). #100 unblocks Epic C signing flows.

Sub-issues

  • #99 — normalizeTokenId + token-id regex exports in @printr/sdk/caip
  • #100 — extract signer primitive to @printr/sdk/signer

Order

#99 first

Read the thread · 2026-05-25 · open · 0 comments

feat(sdk): processImageBytes(bytes, opts) helper

What to build

packages/sdk/src/image.ts exposes processImagePath (reads from disk via node:fs/promises). Add a parallel processImageBytes(bytes: Uint8Array, opts): ResultAsync<Uint8Array, ImageError> that takes raw bytes and returns processed bytes.

Use cases:

  • Browsers / edge runtimes / Workers — no filesystem access
  • HTTP servers that receive uploads in-memory (multipart, JSON-base64, etc.)
  • Any consumer that has already fetched the image and shouldn't have to round-trip throu

Read the thread · 2026-05-25 · open · 0 comments

feat(sdk): lighter balance via direct JSON-RPC

What to build

packages/sdk/src/balance.ts currently pulls @solana/web3.js (~600KB minified) and viem for balance queries. For consumers that only need to read native or SPL balances, this is a heavy tax — especially on edge/Workers runtimes with bundle size limits.

Add a lighter variant that hits Solana / EVM JSON-RPC endpoints directly with fetch and parses responses with Zod. Same ResultAsync<Balance, BalanceError> shape so the substitution is mechanical.

Strategy:

  • Keep the

Read the thread · 2026-05-25 · closed · 0 comments

feat(sdk): extract signer primitive to @printr/sdk/signer

What to build

Lift the browser-sign-by-URL session machinery out of packages/mcp/src/server/{sessions,app}.ts into a new @printr/sdk/signer subpath. Every Printr client that needs non-custodial signing — MCP today, future apps tomorrow — wants the same primitive: mint a signing session, hand the user a URL, let them sign in their wallet, poll/await completion.

This is a high-leverage upstream change: it lets a client orchestrate signing flows without ever holding a private key.

Shape (

Read the thread · 2026-05-25 · open · 0 comments

feat(sdk): normalizeTokenId + token-id regex exports

What to build

Every Printr client (MCP server, future apps) needs to accept user-typed token identifiers in any of these forms:

  • Telecoin ID hex (e.g. 0xda97f29a4c137298ed138194b39b8b81eb7889018cd9ae4ab4a053fe0bfb7ed5)
  • EVM CAIP-10 (e.g. eip155:8453:0x...)
  • Solana CAIP-10 (e.g. solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:G6mNZ...)
  • Bare Solana mint base58 (e.g. G6mNZN8o16QBcTqfuEx6FzjiWa94B1XWhfyDxjDibrrr)

…then normalize to a canonical form the API accepts. The MCP and any fut

Read the thread · 2026-05-25 · open · 0 comments

feat(sdk): types-only @printr/sdk/openapi entry

What to build

Add a ./openapi subpath export to @printr/sdk that re-exports only the generated OpenAPI types — paths, components, operations — from api.gen.d.ts. No runtime code.

Today, consumers wanting strict response types have to:

  1. Either import from @printr/sdk/client, which now pulls runtime JS (broken on Workers; see #97), or
  2. Define their own loose types and lose strict generated shapes, then cast at every API call site.

A types-only entry lets clients pull s

Read the thread · 2026-05-25 · closed · 0 comments

fix(sdk): emit Workers-friendly bundle, drop createRequire shim

What to build

Every module in @printr/sdk/dist/* currently starts with:

import { createRequire } from "node:module";
var __require = createRequire(import.meta.url);

This is Bun's bundler default for CJS interop with deps that ship CommonJS (e.g. neverthrow's .cjs.js). Cloudflare Workers throws on evaluation because createRequire(import.meta.url) receives undefined for import.meta.url in some configurations and because node:module isn't a Workers primitive even with

Read the thread · 2026-05-25 · closed · 0 comments

fix(sdk): lazy-load sharp + node:fs in image.ts

What to build

packages/sdk/src/image.ts statically imports sharp and node:fs/promises at module top level. The @printr/sdk barrel re-exports buildToken from token.ts, which re-exports image.ts transitively — so importing anything from the SDK barrel pulls those Node-only deps into the consumer bundle.

This kills the SDK in any non-Node runtime (Cloudflare Workers, browser, Deno-without-node-compat, edge functions).

Move the sharp and node:fs/promises imports inside th

Read the thread · 2026-05-25 · closed · 0 comments

Migrate signAndSubmit{Evm,Svm} to ResultAsync

Context

The public signers in `packages/sdk/src/evm.ts` and `packages/sdk/src/svm.ts` still return `Promise` and throw on every failure mode (no RPC, broadcast failure, on-chain revert, confirmation timeout). This violates the project rule "use neverthrow Result types for all failable operations" ([feedback_neverthrow_match](../blob/main/AGENTS.md)). Discovered during PR #92 audit.

Scope

SDK (signers + helpers):

  • `signAndSubmitEvm` → `ResultAsync<EvmSubmitResult, Ev

Read the thread · 2026-05-18 · closed · 0 comments

The remaining reports are on the project's issue tracker.