{"id":83755,"name":"Agent Product Normalizer","description":"Pay-per-call capabilities for agents, led by external-data tasks that are costly to reproduce locally: YouTube transcript/context extraction and live commerce parsing, plus low-cost workflow gates when they can avoid a more expensive call.","card_url":"https://agent-product-normalizer.vercel.app/.well-known/agent-card.json","endpoint":"https://agent-product-normalizer.vercel.app/catalog","protocol_version":"1.0","first_seen":"2026-10-13T17:54:57.845815+00:00","last_verified":"2026-10-13T17:54:57.845815+00:00","card":{"url":"https://agent-product-normalizer.vercel.app","name":"Agent Product Normalizer","note":"This is an x402 HTTP API, not a conversational JSON-RPC agent. Paid routes return HTTP 402 first; x402 payment is the authentication and settlement mechanism.","skills":[{"id":"video-transcript","url":"https://agent-product-normalizer.vercel.app/api/v1/video-transcript","name":"YouTube Transcript Fetch","tags":["youtube","video","transcript","captions","timestamped","external-data","agent-context"],"price":"$0.015","pricing":{"amount":"0.015","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/video-transcript","examples":["Fetch the transcript and timestamps for this YouTube URL so I can answer questions without watching the video."],"inputModes":["application/json"],"description":"Fetch timestamped YouTube transcript text for an agent that otherwise would need a separate transcript provider, browser workflow or manual video review. Best when the downstream agent needs the source text once and will do its own reasoning.","outputModes":["application/json"]},{"id":"video-analyze","url":"https://agent-product-normalizer.vercel.app/api/v1/video-analyze","name":"YouTube-to-Agent Context Pack","tags":["youtube","video","transcript","context-compression","key-points","chapters","claims","qa","external-data"],"price":"$0.025","pricing":{"amount":"0.025","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/video-analyze","examples":["Turn this 60-minute YouTube video into the compact evidence pack my agent needs to answer one question and continue the task."],"inputModes":["application/json"],"description":"Fetch a YouTube transcript once and return a compact agent-ready pack with brief, timestamped key points, chapters, candidate claims, action items and optional evidence Q&A. Use it when avoiding repeated transcript fetches and long-context processing is worth more than the call price.","outputModes":["application/json"]},{"id":"extract-offer","url":"https://agent-product-normalizer.vercel.app/api/v1/extract-offer","name":"Live Product Offer Extractor","tags":["commerce","shopping","product-data","price","availability","seller","live-web","external-data"],"price":"$0.01","pricing":{"amount":"0.01","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/extract-offer","examples":["Extract the current price, currency, availability and seller from this product URL."],"inputModes":["application/json"],"description":"Fetch a public product page and return compact price, currency, availability and seller facts so an agent does not need to spend a browser/model pass interpreting the page itself.","outputModes":["application/json"]},{"id":"normalize","url":"https://agent-product-normalizer.vercel.app/api/v1/normalize","name":"Live Product Page Normalizer","tags":["commerce","shopping","product-data","normalization","live-web","structured-data","external-data"],"price":"$0.01","pricing":{"amount":"0.01","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/normalize","examples":["Normalize this merchant product page into a stable schema for downstream comparison."],"inputModes":["application/json"],"description":"Fetch a public product page and normalize its commerce data into stable agent-ready JSON, reducing bespoke scraping and page-specific parsing work in shopping workflows.","outputModes":["application/json"]},{"id":"call-value-gate","url":"https://agent-product-normalizer.vercel.app/api/v1/call-value-gate","name":"Agent Call Value Gate","tags":["agents","expected-value","budget","tool-call","model-routing","cost-control","roi"],"price":"$0.003","pricing":{"amount":"0.003","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/call-value-gate","examples":["Should this agent spend $0.02 on another search call with a $0.05 remaining budget?"],"inputModes":["application/json"],"description":"Decide whether the next model, tool or human call is worth its expected value, latency, failure risk and remaining budget before spending more. Use only when this decision is cheaper than the call it can prevent.","outputModes":["application/json"]},{"id":"context-freshness","url":"https://agent-product-normalizer.vercel.app/api/v1/context-freshness","name":"Agent Context Freshness Gate","tags":["agents","context","freshness","ttl","cache","stale-context","tool-calls"],"price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/context-freshness","examples":["Which context items actually need refreshing before the next agent step?"],"inputModes":["application/json"],"description":"Classify context as fresh, near-expiry or stale and return the minimum refresh plan to avoid redundant fetches, calls and context tokens.","outputModes":["application/json"]},{"id":"task-gate","url":"https://agent-product-normalizer.vercel.app/api/v1/task-gate","name":"Agent Task Gate","tags":["agents","preflight","decision","autonomy","safety","workflow"],"price":"$0.004","pricing":{"amount":"0.004","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/task-gate","examples":["Can this autonomous action proceed safely with the information currently available?"],"freeSample":"https://agent-product-normalizer.vercel.app/api/v1/task-gate/sample","inputModes":["application/json"],"description":"Preflight an autonomous action and return PROCEED, CLARIFY, ASK_HUMAN or STOP with missing fields, risks, constraints and the next action.","outputModes":["application/json"]},{"id":"prompt-injection-scan","url":"https://agent-product-normalizer.vercel.app/api/v1/prompt-injection-scan","name":"Prompt Injection Scan","tags":["agents","security","prompt-injection","retrieval","safety"],"price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/prompt-injection-scan","examples":["Check this retrieved page text for prompt-injection indicators."],"inputModes":["application/json"],"description":"Scan untrusted retrieved text for common prompt-injection signals before an agent places it into working context.","outputModes":["application/json"]},{"id":"redact-secrets","url":"https://agent-product-normalizer.vercel.app/api/v1/redact-secrets","name":"Secret Redactor","tags":["agents","security","redaction","secrets","logging"],"price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/redact-secrets","examples":["Remove credential-like values from these logs before handing them to another agent."],"inputModes":["application/json"],"description":"Redact common credentials and secret-like strings before agent handoff, storage or logging.","outputModes":["application/json"]},{"id":"compress-context","url":"https://agent-product-normalizer.vercel.app/api/v1/compress-context","name":"Agent Context Compressor","tags":["agents","context","compression","handoff","tokens"],"price":"$0.005","pricing":{"amount":"0.005","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/compress-context","examples":["Compress these project notes into only the state needed for the next agent."],"inputModes":["application/json"],"description":"Compress long operational notes into compact state for downstream agents and handoffs. Use when the saved downstream context/model cost is larger than this network call.","outputModes":["application/json"]},{"id":"dedupe-facts","url":"https://agent-product-normalizer.vercel.app/api/v1/dedupe-facts","name":"Agent Fact Deduplicator","tags":["agents","dedupe","facts","context","tokens"],"price":"$0.0015","pricing":{"amount":"0.0015","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/dedupe-facts","examples":["Deduplicate these collected facts before synthesis."],"inputModes":["application/json"],"description":"Remove duplicate and near-duplicate facts before downstream model or agent consumption.","outputModes":["application/json"]},{"id":"retry-decision","url":"https://agent-product-normalizer.vercel.app/api/v1/retry-decision","name":"Agent Retry Decision","tags":["agents","retry","failure","loop-breaker","cost-control"],"price":"$0.001","pricing":{"amount":"0.001","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/retry-decision","examples":["Should the agent retry this 429 response on attempt 2?"],"inputModes":["application/json"],"description":"Make a deterministic retry decision from status, error and attempt count so agents avoid wasteful retry loops.","outputModes":["application/json"]},{"id":"no-progress-gate","url":"https://agent-product-normalizer.vercel.app/api/v1/no-progress-gate","name":"Agent No-Progress Gate","tags":["agents","loop-breaker","tool-calls","progress","budget","cost-control","deterministic"],"price":"$0.003","pricing":{"amount":"0.003","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/no-progress-gate","examples":["Should the agent make another tool call after three identical calls returned the same result?"],"freeSample":"https://agent-product-normalizer.vercel.app/api/v1/no-progress-gate/sample","inputModes":["application/json"],"description":"Fingerprint a rolling tool trace and return CONTINUE, REFRAME, STOP_RETRYING or ASK_HUMAN when repeated calls, unchanged results, failures or budgets show no progress. Use when one avoided tool/model call is worth more than this gate.","outputModes":["application/json"]},{"id":"missing-fields","url":"https://agent-product-normalizer.vercel.app/api/v1/missing-fields","name":"Required Field Check","tags":["agents","tool-call","validation","preflight","schema"],"price":"$0.001","pricing":{"amount":"0.001","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/missing-fields","examples":["Check this payload for missing required tool parameters before execution."],"inputModes":["application/json"],"description":"Check whether a tool-call payload contains the required fields before spending a remote call.","outputModes":["application/json"]},{"id":"hash","url":"https://agent-product-normalizer.vercel.app/api/v1/hash","name":"Deterministic Text Hash","tags":["hash","sha256","sha512","checksum","cache","deduplication","deterministic"],"price":"$0.0008","pricing":{"amount":"0.0008","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/hash","examples":["Create a SHA-256 fingerprint for this payload when the agent runtime has no local crypto primitive."],"freeSample":"https://agent-product-normalizer.vercel.app/api/v1/hash/sample","inputModes":["application/json"],"description":"Generate deterministic SHA-256 or SHA-512 digests for cache keys, checksums, deduplication and content fingerprints. Agents with local crypto should hash locally; this paid route is mainly for runtimes without that capability or those needing one stable remote interface.","outputModes":["application/json"]}],"payment":{"flow":["request resource","receive HTTP 402 with PAYMENT-REQUIRED","authorize the exact requirement","retry identical request with PAYMENT-SIGNATURE","server verifies and settles through facilitator","receive result and PAYMENT-RESPONSE"],"asset":"USDC","payTo":"0x74eCCC9bEC502d9Eb390bF15198A234447Dc59F8","scheme":"exact","network":"eip155:8453","version":2,"protocol":"x402","resources":[{"id":"video-transcript","name":"YouTube Transcript Fetch","price":"$0.015","pricing":{"amount":"0.015","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/video-transcript"},{"id":"video-analyze","name":"YouTube-to-Agent Context Pack","price":"$0.025","pricing":{"amount":"0.025","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/video-analyze"},{"id":"extract-offer","name":"Live Product Offer Extractor","price":"$0.01","pricing":{"amount":"0.01","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/extract-offer"},{"id":"normalize","name":"Live Product Page Normalizer","price":"$0.01","pricing":{"amount":"0.01","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/normalize"},{"id":"call-value-gate","name":"Agent Call Value Gate","price":"$0.003","pricing":{"amount":"0.003","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/call-value-gate"},{"id":"context-freshness","name":"Agent Context Freshness Gate","price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/context-freshness"},{"id":"task-gate","name":"Agent Task Gate","price":"$0.004","pricing":{"amount":"0.004","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/task-gate","freeSample":"https://agent-product-normalizer.vercel.app/api/v1/task-gate/sample"},{"id":"prompt-injection-scan","name":"Prompt Injection Scan","price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/prompt-injection-scan"},{"id":"redact-secrets","name":"Secret Redactor","price":"$0.002","pricing":{"amount":"0.002","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/redact-secrets"},{"id":"compress-context","name":"Agent Context Compressor","price":"$0.005","pricing":{"amount":"0.005","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/compress-context"},{"id":"dedupe-facts","name":"Agent Fact Deduplicator","price":"$0.0015","pricing":{"amount":"0.0015","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/dedupe-facts"},{"id":"retry-decision","name":"Agent Retry Decision","price":"$0.001","pricing":{"amount":"0.001","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/retry-decision"},{"id":"no-progress-gate","name":"Agent No-Progress Gate","price":"$0.003","pricing":{"amount":"0.003","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/no-progress-gate","freeSample":"https://agent-product-normalizer.vercel.app/api/v1/no-progress-gate/sample"},{"id":"missing-fields","name":"Required Field Check","price":"$0.001","pricing":{"amount":"0.001","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/missing-fields"},{"id":"hash","name":"Deterministic Text Hash","price":"$0.0008","pricing":{"amount":"0.0008","scheme":"exact","network":"eip155:8453","currency":"USDC"},"endpoint":"https://agent-product-normalizer.vercel.app/api/v1/hash","freeSample":"https://agent-product-normalizer.vercel.app/api/v1/hash/sample"}],"facilitator":"https://facilitator.payai.network","requestHeader":"PAYMENT-SIGNATURE","responseHeader":"PAYMENT-RESPONSE","challengeHeader":"PAYMENT-REQUIRED"},"version":"0.9.7","provider":{"url":"https://agent-product-normalizer.vercel.app","organization":"Agent Product Normalizer"},"buyerRule":"Prefer skills that provide external data or avoid a downstream call costing materially more than this skill. Do not buy a remote deterministic utility when the same operation is already cheap and available locally.","discovery":{"llms":"https://agent-product-normalizer.vercel.app/llms.txt","x402":"https://agent-product-normalizer.vercel.app/.well-known/x402","catalog":"https://agent-product-normalizer.vercel.app/catalog","openapi":"https://agent-product-normalizer.vercel.app/openapi.json"},"description":"Pay-per-call capabilities for agents, led by external-data tasks that are costly to reproduce locally: YouTube transcript/context extraction and live commerce parsing, plus low-cost workflow gates when they can avoid a more expensive call.","capabilities":{"x402":true,"streaming":false,"extendedAgentCard":true,"pushNotifications":false},"protocolVersion":"1.0","securitySchemes":{"x402":{"type":"x402","description":"HTTP 402 payment challenge. Pay exact USDC on Base and retry the identical request with the PAYMENT-SIGNATURE header. No signup or API key."}},"documentationUrl":"https://agent-product-normalizer.vercel.app/skill.md","defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"supportedProtocols":["x402","http"],"supportedInterfaces":[{"url":"https://agent-product-normalizer.vercel.app/catalog","protocolBinding":"HTTP+JSON","protocolVersion":"1.0"}],"securityRequirements":[{"x402":[]}]},"signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-13T17:54:57.845815+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Agent Tools Catalog","source_url":"https://agent-tools.cloud","last_check":{"checked_at":"2026-10-13T17:54:57.845815+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://agent-product-normalizer.vercel.app/.well-known/agent-card.json"],"also_observed_in":[{"source_name":"Agent Tools Catalog","source_url":"https://agent-tools.cloud","last_seen":"2026-10-13T17:51:17.910196+00:00"}],"skills":[{"skill_id":"call-value-gate","name":"Agent Call Value Gate","description":"Decide whether the next model, tool or human call is worth its expected value, latency, failure risk and remaining budget before spending more. Use only when this decision is cheaper than the call it can prevent.","tags":["agents","expected-value","budget","tool-call","model-routing","cost-control","roi"],"quality_warning":false},{"skill_id":"compress-context","name":"Agent Context Compressor","description":"Compress long operational notes into compact state for downstream agents and handoffs. Use when the saved downstream context/model cost is larger than this network call.","tags":["agents","context","compression","handoff","tokens"],"quality_warning":false},{"skill_id":"context-freshness","name":"Agent Context Freshness Gate","description":"Classify context as fresh, near-expiry or stale and return the minimum refresh plan to avoid redundant fetches, calls and context tokens.","tags":["agents","context","freshness","ttl","cache","stale-context","tool-calls"],"quality_warning":false},{"skill_id":"dedupe-facts","name":"Agent Fact Deduplicator","description":"Remove duplicate and near-duplicate facts before downstream model or agent consumption.","tags":["agents","dedupe","facts","context","tokens"],"quality_warning":false},{"skill_id":"no-progress-gate","name":"Agent No-Progress Gate","description":"Fingerprint a rolling tool trace and return CONTINUE, REFRAME, STOP_RETRYING or ASK_HUMAN when repeated calls, unchanged results, failures or budgets show no progress. Use when one avoided tool/model call is worth more than this gate.","tags":["agents","loop-breaker","tool-calls","progress","budget","cost-control","deterministic"],"quality_warning":false},{"skill_id":"retry-decision","name":"Agent Retry Decision","description":"Make a deterministic retry decision from status, error and attempt count so agents avoid wasteful retry loops.","tags":["agents","retry","failure","loop-breaker","cost-control"],"quality_warning":false},{"skill_id":"task-gate","name":"Agent Task Gate","description":"Preflight an autonomous action and return PROCEED, CLARIFY, ASK_HUMAN or STOP with missing fields, risks, constraints and the next action.","tags":["agents","preflight","decision","autonomy","safety","workflow"],"quality_warning":false},{"skill_id":"hash","name":"Deterministic Text Hash","description":"Generate deterministic SHA-256 or SHA-512 digests for cache keys, checksums, deduplication and content fingerprints. Agents with local crypto should hash locally; this paid route is mainly for runtimes without that capability or those needing one stable remote interface.","tags":["hash","sha256","sha512","checksum","cache","deduplication","deterministic"],"quality_warning":false},{"skill_id":"extract-offer","name":"Live Product Offer Extractor","description":"Fetch a public product page and return compact price, currency, availability and seller facts so an agent does not need to spend a browser/model pass interpreting the page itself.","tags":["commerce","shopping","product-data","price","availability","seller","live-web","external-data"],"quality_warning":false},{"skill_id":"normalize","name":"Live Product Page Normalizer","description":"Fetch a public product page and normalize its commerce data into stable agent-ready JSON, reducing bespoke scraping and page-specific parsing work in shopping workflows.","tags":["commerce","shopping","product-data","normalization","live-web","structured-data","external-data"],"quality_warning":false},{"skill_id":"prompt-injection-scan","name":"Prompt Injection Scan","description":"Scan untrusted retrieved text for common prompt-injection signals before an agent places it into working context.","tags":["agents","security","prompt-injection","retrieval","safety"],"quality_warning":false},{"skill_id":"missing-fields","name":"Required Field Check","description":"Check whether a tool-call payload contains the required fields before spending a remote call.","tags":["agents","tool-call","validation","preflight","schema"],"quality_warning":false},{"skill_id":"redact-secrets","name":"Secret Redactor","description":"Redact common credentials and secret-like strings before agent handoff, storage or logging.","tags":["agents","security","redaction","secrets","logging"],"quality_warning":false},{"skill_id":"video-transcript","name":"YouTube Transcript Fetch","description":"Fetch timestamped YouTube transcript text for an agent that otherwise would need a separate transcript provider, browser workflow or manual video review. Best when the downstream agent needs the source text once and will do its own reasoning.","tags":["youtube","video","transcript","captions","timestamped","external-data","agent-context"],"quality_warning":false},{"skill_id":"video-analyze","name":"YouTube-to-Agent Context Pack","description":"Fetch a YouTube transcript once and return a compact agent-ready pack with brief, timestamped key points, chapters, candidate claims, action items and optional evidence Q&A. Use it when avoiding repeated transcript fetches and long-context processing is worth more than the call price.","tags":["youtube","video","transcript","context-compression","key-points","chapters","claims","qa","external-data"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":1,"passed":1},"recent_checks":[{"card_url":"https://agent-product-normalizer.vercel.app/.well-known/agent-card.json","checked_at":"2026-10-13T17:54:57.845815+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":null,"protocol_check":{"checked_at":"2026-10-13T17:54:57.845815+00:00","state":"unconfirmed","http_status":404,"detail":"Endpoint returned a generic not-found response"},"x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://agent-product-normalizer.vercel.app/.well-known/agent-card.json","last_successful_card_check":"2026-10-13T17:54:57.845815+00:00","latest_card_check":{"checked_at":"2026-10-13T17:54:57.845815+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-13T17:54:57.845815+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":null,"endpoint_tls_reachable":null,"protocol_check_state":"unconfirmed","protocol_checked_at":"2026-10-13T17:54:57.845815+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null}}