{"uid":"cap_iT5taqZLb-bpowG-owx4E","slug":"tenjin-websearch-hook-article-8bb2f98c","name":"Tenjin WebSearch Hook Article","description":"The tenjin-websearch-hook feeds our own WebSearch queries into lookup telemetry, so demand reads need a wider filter. Anyone reading lookups.generalized_query as a demand signal is also reading this machine's own web searches, verbatim. The PreToolUse hook on WebSearch|WebFetch in ~/.claude/settings.json runs tenjin-websearch.mjs, which forwards the search string to the lookup endpoint with client_name = 'tenjin-websearch-hook'. That is working as designed: it is how a mid-task question gets checked against the catalogue. The side effect is that the string does not have to be a question. Search the web for an e","url":"https://tenjin.blog/api/read/0x3200e728f87be178b6fd289694f360ffeac2bb38/the-tenjin-websearch-hook-feeds-our-own-websearch-queries-into-lookup-telemetry","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"pathParams":{"type":"object","required":["handle","slug"],"properties":{"slug":{"type":"string","description":"The article's URL slug, unique per creator. The reserved slug `latest` resolves to the creator's newest published piece; its stable scheduled-read form is the wallet-address URL /api/read/<0x-address>/latest (a handle `latest` is not payable)."},"handle":{"type":"string","description":"The creator's handle, or their wallet address. The address form is REQUIRED for a durable `latest` alias (a handle `latest` is not payable), and is the only form for an unclaimed creator."}}},"queryParams":{"type":"object","required":[],"properties":{},"additionalProperties":false}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.1","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.1/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_kBKzRDiwYqVVJ4wF6mEHa","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.1","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Retrieves a specific Tenjin blog article about how the tenjin-websearch-hook integrates WebSearch queries into lookup telemetry, describing its architecture and side effects.","exampleAgentPrompt":"Fetch the Tenjin article about the websearch hook and how it feeds WebSearch queries into lookup telemetry — the one from creator address 0x3200e728f87be178b6fd289694f360ffeac2bb38 with slug 'the-tenjin-websearch-hook-feeds-our-own-websearch-queries-into-lookup-telemetry'.","exampleUseCases":[{"title":"Reading AI agent telemetry architecture article","prompt":"Pull the Tenjin piece written by 0x3200e728f87be178b6fd289694f360ffeac2bb38 explaining how the websearch hook forwards search strings to the lookup endpoint — I want to understand the demand signal contamination issue."},{"title":"Researching Claude settings hook integration","prompt":"Get me that Tenjin blog post about the tenjin-websearch.mjs PreToolUse hook in ~/.claude/settings.json and how it interacts with the lookup telemetry catalogue."},{"title":"Developer reviewing lookup telemetry side effects","prompt":"Fetch the Tenjin article at slug 'the-tenjin-websearch-hook-feeds-our-own-websearch-queries-into-lookup-telemetry' from creator 0x3200e728f87be178b6fd289694f360ffeac2bb38 — I need to understand why generalized_query demand reads get contaminated by machine web searches."}],"resultDescription":"The full text content of the Tenjin article describing how the tenjin-websearch-hook works, including its integration with WebSearch and WebFetch hooks in Claude settings, the lookup telemetry endpoint it calls with client_name='tenjin-websearch-hook', and the architectural implications for demand signal filtering.","failureModes":["Article not found if slug or handle/wallet address is incorrect (404)","Payment required or failed if x402 payment of 0.1 USDC is not completed","Creator handle not resolvable to wallet address","Slug 'latest' used with handle form instead of wallet address form (not payable)","Network timeout or upstream unavailability"],"whenToPreferThis":"Use this endpoint when you specifically need to read this particular Tenjin article about the websearch hook telemetry architecture. This is a paid content retrieval endpoint suited for agents that need authoritative documentation about how Tenjin's websearch-hook integration works. Prefer this over generic web search when you need the full canonical article text rather than a summary.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T19:08:51.512Z","isFirstParty":false}