{"name":"Pitch402","description":"Agent-native paid playlist pitching. A curator opens a 100-spot playlist; an artist or agent buys a numbered spot with USDC and the track is added to the curator-owned Spotify playlist.","version":"0.1.0","url":"https://pitch402-hackathon.vercel.app","documentation":"https://pitch402-hackathon.vercel.app/llms.txt","integration_guide":"https://pitch402-hackathon.vercel.app/agents","skill":"https://pitch402-hackathon.vercel.app/skill.md","payment":{"protocol":"x402","default_network":"base-sepolia","currency":"USDC","decimals":6,"networks":[{"network":"base-sepolia","name":"Base Sepolia","chain":"eip155:84532","chain_id":84532,"rpc":"https://sepolia.base.org","explorer":"https://sepolia.basescan.org","native_currency":"ETH","asset":"USDC","asset_address":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","asset_decimals":6,"asset_address_verified":true,"facilitator":"https://x402.org/facilitator","settlement":"live","default":true},{"network":"hsk-testnet","name":"HashKey Chain Testnet","chain":"eip155:133","chain_id":133,"rpc":"https://testnet.hsk.xyz","explorer":"https://testnet-explorer.hsk.xyz","native_currency":"HSK","asset":"USDC","asset_address":null,"asset_decimals":6,"asset_address_verified":false,"facilitator":null,"settlement":"unavailable","default":false,"note":"Asset TBD. No verified testnet stablecoin address on chain 133 yet, so spots cannot be bought on this network."}],"note":"Settlement is live on base-sepolia only. Other networks are advertised for coverage; a buy selecting one returns 402 settlement_unavailable_on_network."},"pricing":{"currency":"USDC","spots_per_cycle":100,"tiers":[{"from":1,"to":1,"price":"10","currency":"USDC"},{"from":2,"to":3,"price":"5","currency":"USDC"},{"from":4,"to":10,"price":"3","currency":"USDC"},{"from":11,"to":100,"price":"1","currency":"USDC"}],"term_multipliers":{"cycle":1,"3m":3,"1y":10},"note":"Price is snapshotted at payment. A paid spot is never repriced."},"endpoints":[{"method":"GET","path":"/api/v1/playlists","description":"List open playlist cycles."},{"method":"GET","path":"/api/v1/playlists/{id}","description":"Playlist detail, tiers, sold spots."},{"method":"GET","path":"/api/v1/playlists/{id}/quote?spot=N","description":"Quote one spot. Returns the next free spot if that one is taken."},{"method":"GET","path":"/api/v1/playlists/{id}/quote?next=1","description":"Quote the next free spot."},{"method":"POST","path":"/api/v1/playlists/{id}/spots/{n}","description":"Buy a spot. x402 gated. On payment the track is added to the curator-owned Spotify playlist and the response reports where it landed."},{"method":"GET","path":"/api/v1/receipts/{id}","description":"Receipt for a paid spot, including its Spotify placement."},{"method":"POST","path":"/api/v1/receipts/{id}/place","description":"Retry the Spotify write for a spot that was paid for but not placed. Free — the spot is already bought."},{"method":"GET","path":"/api/v1/curator/spotify/connect?playlist={id}","description":"Curator only, once per cycle. Authorizes Pitch402 to write to their own Spotify playlist. Artists and agents never authorize Spotify."}],"getting_started":{"method":"GET","url":"https://pitch402-hackathon.vercel.app/api/v1/playlists/demo/quote?next=1","description":"Quote the next free spot on the demo cycle, then POST to the returned next_action.url."},"honesty":["Settlement is verified on Base Sepolia only. HashKey Chain Testnet is listed for network coverage; no facilitator is confirmed for it.","Curator-owned playlists only. Never Spotify editorial playlists.","A spot is only placed on Spotify once a curator has connected a playlist. Until then a sale is recorded and the receipt says the placement was skipped.","A placement is reported only when Spotify confirms the write. A failed write is reported as failed, never as placed.","No stream counts or royalty figures. The Spotify Web API does not expose playlist-attributed plays.","No guaranteed algorithmic streams.","Sales are stored in Postgres, and a unique constraint on (playlist, cycle, spot) makes selling one spot twice impossible."]}