{"protocol":"a2a","version":"1.0","name":"Tack","description":"Storage for agents. Upload files or pin CIDs, pay per use — no account or API key required.","endpoint":"https://tack.inferenceroom.ai","openapi":"/openapi.json","capabilities":{"pinningApi":{"spec":"IPFS Pinning Service API","endpoints":["/pins","/pins/:requestid","/upload"],"routes":[{"path":"/pins","method":"POST","description":"Pin content by CID. Requires payment.","inputSchema":{"type":"object","required":["cid"],"properties":{"cid":{"type":"string","description":"IPFS content identifier to pin"},"name":{"type":"string","description":"Optional human-readable name"},"origins":{"type":"array","items":{"type":"string"},"description":"Optional peer multiaddrs to fetch from"},"meta":{"type":"object","additionalProperties":{"type":"string"},"description":"Optional metadata. meta.retrievalPrice gates GET /ipfs/:cid behind a paywall."}}},"outputSchema":{"type":"object","required":["requestid","status","created","pin","delegates"],"properties":{"requestid":{"type":"string"},"status":{"type":"string","enum":["queued","pinning","pinned","failed"]},"created":{"type":"string","format":"date-time"},"pin":{"type":"object"},"delegates":{"type":"array","items":{"type":"string"}},"info":{"type":"object","additionalProperties":true}}}},{"path":"/pins","method":"GET","description":"List pins owned by the authenticated wallet.","auth":"walletAuthToken","inputSchema":{"type":"object","properties":{"cid":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["queued","pinning","pinned","failed"]},"before":{"type":"string","format":"date-time"},"after":{"type":"string","format":"date-time"},"limit":{"type":"integer","minimum":1,"maximum":1000},"offset":{"type":"integer","minimum":0}}},"outputSchema":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","required":["requestid","status","created","pin","delegates"],"properties":{"requestid":{"type":"string"},"status":{"type":"string","enum":["queued","pinning","pinned","failed"]},"created":{"type":"string","format":"date-time"},"pin":{"type":"object"},"delegates":{"type":"array","items":{"type":"string"}},"info":{"type":"object","additionalProperties":true}}}}}}},{"path":"/pins/:requestid","method":"GET","description":"Get a specific pin by request ID.","auth":"walletAuthToken","inputSchema":{"type":"object","required":["requestid"],"properties":{"requestid":{"type":"string"}}},"outputSchema":{"type":"object","required":["requestid","status","created","pin","delegates"],"properties":{"requestid":{"type":"string"},"status":{"type":"string","enum":["queued","pinning","pinned","failed"]},"created":{"type":"string","format":"date-time"},"pin":{"type":"object"},"delegates":{"type":"array","items":{"type":"string"}},"info":{"type":"object","additionalProperties":true}}}},{"path":"/pins/:requestid","method":"POST","description":"Replace a pin. Requires payment.","auth":"walletAuthToken","inputSchema":{"type":"object","required":["requestid","cid"],"properties":{"requestid":{"type":"string"},"cid":{"type":"string","description":"IPFS content identifier to pin"},"name":{"type":"string","description":"Optional human-readable name"},"origins":{"type":"array","items":{"type":"string"},"description":"Optional peer multiaddrs to fetch from"},"meta":{"type":"object","additionalProperties":{"type":"string"},"description":"Optional metadata. meta.retrievalPrice gates GET /ipfs/:cid behind a paywall."}}},"outputSchema":{"type":"object","required":["requestid","status","created","pin","delegates"],"properties":{"requestid":{"type":"string"},"status":{"type":"string","enum":["queued","pinning","pinned","failed"]},"created":{"type":"string","format":"date-time"},"pin":{"type":"object"},"delegates":{"type":"array","items":{"type":"string"}},"info":{"type":"object","additionalProperties":true}}}},{"path":"/pins/:requestid","method":"DELETE","description":"Delete a pin.","auth":"walletAuthToken","inputSchema":{"type":"object","required":["requestid"],"properties":{"requestid":{"type":"string"}}},"outputSchema":{"type":"object","description":"Empty 202 response on success."}},{"path":"/upload","method":"POST","description":"Upload a file (multipart) and pin it. Requires payment.","contentType":"multipart/form-data","inputSchema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"File contents (multipart field \"file\")"}}},"outputSchema":{"type":"object","required":["cid"],"properties":{"cid":{"type":"string","description":"IPFS CID of the uploaded content"}}}}]},"gateway":{"endpoint":"/ipfs/:cid","supports":["etag","range","cache-control","optional-paywall"],"routes":[{"path":"/ipfs/:cid","method":"GET","description":"Retrieve content by CID. Free by default; owner-attached paywall returns 402 with a runtime challenge.","inputSchema":{"type":"object","required":["cid"],"properties":{"cid":{"type":"string","description":"IPFS CID to retrieve"}}},"outputSchema":{"description":"Raw content bytes. Content-Type is detected from the payload.","type":"string","format":"binary"}}]},"privateStorage":{"storage":"not-ipfs","visibility":"owner-authenticated","endpoints":["/private/objects","/private/objects/:objectId","/private/objects/:objectId/content"],"auth":{"session":"Authorization: Bearer <token>","walletLogin":["/auth/challenge","/auth/token"]}}},"payments":{"protocols":[{"protocol":"x402","asset":"0x07d83526730c7438048D55A4fc0b850e2aaB6f0b","network":"eip155:167000","chainId":167000,"chain":"taiko"},{"protocol":"x402","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","chainId":8453,"chain":"base"},{"protocol":"mpp","method":"tempo","chain":"tempo","chainId":4217,"asset":"0x20C000000000000000000000b9537d11c60E8b50","assetSymbol":"USDC.e","intent":"charge"}],"pricing":{"ratePerGbMonthUsd":0.1,"minPriceUsd":0.001,"maxPriceUsd":50,"defaultDurationMonths":1,"maxDurationMonths":24,"durationHeader":"X-Pin-Duration-Months","currency":"USD"}},"pricing":{"pinning":{"protocol":"x402","spec":"https://www.x402.org/","clientSdk":"@x402/fetch","paymentHeader":"Payment-Signature","network":"eip155:167000","asset":"0x07d83526730c7438048D55A4fc0b850e2aaB6f0b","ratePerGbMonthUsd":0.1,"minPriceUsd":0.001,"maxPriceUsd":50,"defaultDurationMonths":1,"maxDurationMonths":24,"durationHeader":"X-Pin-Duration-Months"},"retrieval":{"protocol":"x402-optional","metadataField":"meta.retrievalPrice","settlement":"owner-wallet"}},"authentication":{"walletAuthToken":{"description":"Paid requests return x-wallet-auth-token. Use as Bearer token for owner endpoints (GET /pins, DELETE /pins/:id).","responseHeaders":["x-wallet-auth-token","x-wallet-auth-token-expires-at"],"usage":"Authorization: Bearer <token>"}},"links":{"x402Spec":"https://www.x402.org/","x402ClientSdk":"https://www.npmjs.com/package/@x402/fetch","ipfsPinningSpec":"https://ipfs.github.io/pinning-services-api-spec/"}}