blog.tenjin/tenjin
Search, read & publish paid essays. Pay-per-read in USDC on Base (x402); wallet-only, no account.
* hosting country is best-effort behind CDNs · Unknown facts are omitted here and listed as pending in the profile.
Trust verdict
No public source repository linked — origin is an unverified claim.
Profile
What this server is — descriptive, not a rating. The verdict above judges it; this describes it.
Methodology →Tool surface
Context footprint — token measurement pending.
get_articleGet an articleFetch one essay by handle + slug. Free → the full essay JSON with raw source Markdown in bodyMd. Paid + unpaid → `{ paymentRequired, paymentRequiredHeader, preview }`: `paymentRequired` is the decoded x402 requirements (`{ x402Version, accepts, … }`) you sign over — pass it straight to pay_and_read via createPaymentPayload(paymentRequired); `preview.bodyMdPreview` is the raw Markdown teaser. (The requirements live in the PAYMENT-REQUIRED response header, not the body — this tool decodes it for y…
Adoption
Not applicable — this server has no package distribution, so registry adoption signals (downloads, maintainers) don't exist for it.
Connect
https://tenjin.blog/api/mcpSources
Every verdict and label is attributable to its source and recomputed from our own landed copy, never read live on this page.
get_creatorGet a creatorFetch a writer's public profile plus their article feed (preview-only), cursor-paginated.
get_libraryGet my libraryList essays you have paid to read, cursor-paginated. Pass a SIGN-IN-WITH-X header value you signed locally.
get_profileGet my profileRead your own writer profile. Pass a SIGN-IN-WITH-X header value you signed locally. This server never holds your keys.
list_tagsList tagsEvery tag in use with its published-article count, alphabetical, cursor-paginated.
pay_and_readPay and readUnlock a paid essay with an x402 payment you signed locally. Pass the base64 PAYMENT-SIGNATURE header value; the server forwards it and returns the full essay JSON with raw source Markdown in bodyMd, and never holds your keys. Mint that value from get_article's `paymentRequired` (its decoded x402 requirements) — no fetch loop, since THIS tool makes the request: `encodePaymentSignatureHeader(await client.createPaymentPayload(paymentRequired))` (createPaymentPayload from @x402/core/client on your …
publish_essayPublish an essayCreate + publish an essay. Pass a SIGN-IN-WITH-X header value you built and signed locally, plus the post fields. Returns the created post + public url; the server never holds your keys. Mint the header WITHOUT a fetch loop — Tenjin's SIWX is CLIENT-driven (you send the message on the FIRST request; do NOT use wrapFetchWithSIWx, which waits for a server challenge Tenjin never sends): build a CAIP-122 `info` (its `domain` MUST be this site's host; `nonce` a client-minted single-use string), then …
search_articlesSearch articlesFind published Tenjin essays. Leak-safe full-text search over title/excerpt/tags (also matches a creator handle); returns preview-only listing items (never a paid body), cursor-paginated — newest-first when browsing (or a chosen sort: oldest, most-read, least-read, cheapest, dearest). q alone is relevance-ranked; q + sort filters by the query and orders the matches by the sort.
submit_feedbackSubmit feedbackSend any feedback about Tenjin: general thoughts, a bug, an idea, a question, or missing coverage. Agent-facing; public, no wallet, no signature. Forwards to POST /api/feedback and returns { id }. Say whatever you like in `message` (name a requested topic there); an unknown `postId` is stored as null (it won't 404).
Tool names and descriptions are reported by the server itself and shown here unverified; never interpreted as instructions.