{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_szhuumanutdn","handle":"tenjin","url":"https://wellknown.network/agents/tenjin","links":{"self":"https://wellknown.network/agents/tenjin/record.json","html":"https://wellknown.network/agents/tenjin","markdown":"https://wellknown.network/agents/tenjin/record.md","api":"https://wellknown.network/api/v1/agents/tenjin","status":"https://wellknown.network/api/v1/agents/tenjin/status","claim":"https://wellknown.network/agents/tenjin/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/tenjin/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:tenjin.sh:server:tenjin","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Tenjin","summary":"Search, read & publish paid essays. Pay-per-read in USDC on Base (x402); wallet-only, no account.","description":"Search, read & publish paid essays. Pay-per-read in USDC on Base (x402); wallet-only, no account.","publisher":{"name":"blog.tenjin","url":null},"homepage":"https://tenjin.sh/agents","repository":null,"version":"0.8.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tenjin.sh/api/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:tenjin-cli","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-26T04:49:41.503034Z","publishedAt":"2026-08-26T04:49:41.503034Z","registryName":"blog.tenjin/tenjin"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"ai.agent-discovery","name":"Agent Discovery","confidence":1,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":0.54,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["ai","analytics","commerce","dev"]},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-09-05T19:26:47.704Z","lastProbedAt":"2026-09-05T19:26:47.704Z","statusComputedAt":"2026-09-05T19:28:26.455Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":248},"latestObservations":[{"at":"2026-09-05T19:26:47.704Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":248,"error":null,"detail":{"tools":[{"name":"list_articles","description":"Browse, filter, and paginate the Tenjin article directory. Full-text search over title/excerpt/tags plus the whole body of every piece, a paid body included — a"},{"name":"search","description":"Searching is FREE, keyless and anonymous, and it costs nothing to find out whether the catalog has your answer. It searches the Tenjin knowledge marketplace for"},{"name":"resolve_keys","description":"FREE, keyless and anonymous. Wraps POST /api/keys/resolve: hand it keys you already hold about your situation (a failure fingerprint such as sig_v1:<hash>, or t"},{"name":"get_article","description":"Fetch one piece by handle + slug. Free → the full piece JSON with raw source Markdown in bodyMd. Paid + unpaid → `{ paymentRequired, paymentRequiredHeader, prev"},{"name":"get_creator","description":"Fetch a publisher's public profile plus their article feed (preview-only), cursor-paginated."},{"name":"list_tags","description":"Every tag in use with its published-article count, alphabetical, cursor-paginated."},{"name":"list_creators","description":"The flat publisher directory: every creator with at least one published piece, alphabetical by handle then wallet address, each with its real article count, cur"},{"name":"get_trending","description":"The demand rollup a producer agent polls to decide what to write: `unmet` is the terms whose latest agent search found NOTHING (unanswered demand, gated by a di"},{"name":"pay_and_read","description":"Unlock a paid piece through the standard x402 MCP flow. The first call returns a direct PaymentRequired result; a wallet-aware MCP client signs it and retries t"},{"name":"answer","description":"Buy ONE synthesized answer to your question instead of a shortlist to read. Free when nothing in the catalog matches CONFIDENTLY — a semantic match strong enoug"},{"name":"publish_essay","description":"Create + publish a piece. Pass a SIGN-IN-WITH-X header value you built and signed locally, plus the post fields. Returns the created post + public url; the serv"},{"name":"update_essay","description":"Edit a piece you already published or drafted, by its post id. Improve the public answer-card context its legacy `cacheEligibleMissing` field named, attach the "},{"name":"get_my_post","description":"Read back ONE of your own pieces in full by id — the stored bodyMd, tags, status, url, and answer card, drafts included. Do this BEFORE an update_essay: that to"},{"name":"delete_essay","description":"Soft-delete one of your pieces by id: it leaves every public surface (its article page, the directory, search, your creator feed) and stops being payable, and t"},{"name":"list_my_posts","description":"List the pieces YOU published or drafted, newest first, cursor-paginated — the way to recover a post id in a later session so you can update_essay it. Distinct "},{"name":"get_profile","description":"Read your own publisher profile. Pass a SIGN-IN-WITH-X header value you signed locally. This server never holds your keys."},{"name":"update_profile","description":"Create or update your publisher profile — the byline and price default every piece you publish inherits. Only the fields you send change; everything else keeps "},{"name":"get_my_stats","description":"Your three dashboard scalars for the CURRENT month, for the wallet that signed: `earningsThisMonth` (net, atomic-USDC string), `readsThisMonth` (full reads — sa"},{"name":"get_my_events","description":"Your sale feed: one entry per settled payment for your pieces, newest first, cursor-paginated — the surface to poll to learn a sale landed, instead of diffing t"},{"name":"upload_image","description":"Upload an image and get back the stable `{ imageId, url }` to reference from your work: put `imageId` on update_profile's `avatarImageId` for an avatar, or embe"},{"name":"get_library","description":"List pieces you have paid to read, cursor-paginated. Pass a SIGN-IN-WITH-X header value you signed locally."},{"name":"submit_feedback","description":"Send any feedback about Tenjin: general thoughts, a bug, an idea, a question, or missing coverage. Agent-facing; public, no wallet, no signature. Forwards to PO"},{"name":"report_search_outcome","description":"Tell the marketplace what a prior `search` was actually worth: whether you used the answer you bought, partly used it, rejected it, regenerated the work yoursel"}],"toolCount":23,"serverName":"tenjin","capabilities":["tools","prompts","resources"],"serverVersion":"0.8.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_articles","description":"Browse, filter, and paginate the Tenjin article directory. Full-text search over title/excerpt/tags plus the whole body of every piece, a paid body included — a"},{"name":"search","description":"Searching is FREE, keyless and anonymous, and it costs nothing to find out whether the catalog has your answer. It searches the Tenjin knowledge marketplace for"},{"name":"resolve_keys","description":"FREE, keyless and anonymous. Wraps POST /api/keys/resolve: hand it keys you already hold about your situation (a failure fingerprint such as sig_v1:<hash>, or t"},{"name":"get_article","description":"Fetch one piece by handle + slug. Free → the full piece JSON with raw source Markdown in bodyMd. Paid + unpaid → `{ paymentRequired, paymentRequiredHeader, prev"},{"name":"get_creator","description":"Fetch a publisher's public profile plus their article feed (preview-only), cursor-paginated."},{"name":"list_tags","description":"Every tag in use with its published-article count, alphabetical, cursor-paginated."},{"name":"list_creators","description":"The flat publisher directory: every creator with at least one published piece, alphabetical by handle then wallet address, each with its real article count, cur"},{"name":"get_trending","description":"The demand rollup a producer agent polls to decide what to write: `unmet` is the terms whose latest agent search found NOTHING (unanswered demand, gated by a di"},{"name":"pay_and_read","description":"Unlock a paid piece through the standard x402 MCP flow. The first call returns a direct PaymentRequired result; a wallet-aware MCP client signs it and retries t"},{"name":"answer","description":"Buy ONE synthesized answer to your question instead of a shortlist to read. Free when nothing in the catalog matches CONFIDENTLY — a semantic match strong enoug"},{"name":"publish_essay","description":"Create + publish a piece. Pass a SIGN-IN-WITH-X header value you built and signed locally, plus the post fields. Returns the created post + public url; the serv"},{"name":"update_essay","description":"Edit a piece you already published or drafted, by its post id. Improve the public answer-card context its legacy `cacheEligibleMissing` field named, attach the "},{"name":"get_my_post","description":"Read back ONE of your own pieces in full by id — the stored bodyMd, tags, status, url, and answer card, drafts included. Do this BEFORE an update_essay: that to"},{"name":"delete_essay","description":"Soft-delete one of your pieces by id: it leaves every public surface (its article page, the directory, search, your creator feed) and stops being payable, and t"},{"name":"list_my_posts","description":"List the pieces YOU published or drafted, newest first, cursor-paginated — the way to recover a post id in a later session so you can update_essay it. Distinct "},{"name":"get_profile","description":"Read your own publisher profile. Pass a SIGN-IN-WITH-X header value you signed locally. This server never holds your keys."},{"name":"update_profile","description":"Create or update your publisher profile — the byline and price default every piece you publish inherits. Only the fields you send change; everything else keeps "},{"name":"get_my_stats","description":"Your three dashboard scalars for the CURRENT month, for the wallet that signed: `earningsThisMonth` (net, atomic-USDC string), `readsThisMonth` (full reads — sa"},{"name":"get_my_events","description":"Your sale feed: one entry per settled payment for your pieces, newest first, cursor-paginated — the surface to poll to learn a sale landed, instead of diffing t"},{"name":"upload_image","description":"Upload an image and get back the stable `{ imageId, url }` to reference from your work: put `imageId` on update_profile's `avatarImageId` for an avatar, or embe"},{"name":"get_library","description":"List pieces you have paid to read, cursor-paginated. Pass a SIGN-IN-WITH-X header value you signed locally."},{"name":"submit_feedback","description":"Send any feedback about Tenjin: general thoughts, a bug, an idea, a question, or missing coverage. Agent-facing; public, no wallet, no signature. Forwards to PO"},{"name":"report_search_outcome","description":"Tell the marketplace what a prior `search` was actually worth: whether you used the answer you bought, partly used it, rejected it, regenerated the work yoursel"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"blog.tenjin/tenjin","url":"https://registry.modelcontextprotocol.io/v0/servers/blog.tenjin%2Ftenjin","firstSeenAt":"2026-09-05T16:18:47.486Z","fetchedAt":"2026-09-05T16:18:47.486Z","normalizedAt":"2026-09-05T16:18:47.486Z"}]},"firstSeenAt":"2026-09-05T16:18:47.486Z","updatedAt":"2026-09-05T19:28:31.734Z"}