{"protocolVersion":"0.3.0","name":"agentic-endpoints","description":"Pay-per-call utilities for autonomous agents: exactly-once action keys, a secret vault, meeting memory, token compression, scraping, PDF parsing and x402 endpoint verification. Every skill here is also a plain HTTP route. Unlike most paid A2A agents, the paid skills ARE callable over A2A: send an X-Credit-Token header, and get one free with no account at POST /credits/trial.","url":"https://ai.oliverkiss.com/a2a","preferredTransport":"JSONRPC","additionalInterfaces":[{"url":"https://ai.oliverkiss.com/a2a","transport":"JSONRPC"}],"provider":{"organization":"agentic-endpoints","url":"https://ai.oliverkiss.com"},"version":"1.0.0","documentationUrl":"https://ai.oliverkiss.com/llms.txt","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"securitySchemes":{"creditToken":{"type":"apiKey","in":"header","name":"X-Credit-Token","description":"A prepaid or free-trial credit token. Get one instantly with no account at POST /credits/trial, or buy one at POST /credits/buy."},"x402Payment":{"type":"apiKey","in":"header","name":"X-PAYMENT","description":"A signed x402 payment authorization (USDC on Base, eip155:8453), as returned for the plain HTTP route of the same skill."}},"security":[{"creditToken":[]},{"x402Payment":[]}],"skills":[{"id":"once-key","name":"/once-key","description":"Atomic idempotency witness — claim an action exactly once, record its result, and replay that result to every later caller Costs $0.001.","tags":["paid","x402","once-key"],"examples":["{\"skill\":\"once-key\",\"input\":{\"namespace\":\"invoices\",\"action_key\":\"charge-order-1042\",\"ttl\":86400,\"lease_ttl\":300}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"scrape","name":"/scrape","description":"Web scraping and text extraction Costs $0.005.","tags":["paid","x402","scrape"],"examples":["{\"skill\":\"scrape\",\"input\":{\"url\":\"https://example.com\",\"format\":\"text\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"pdf-parse","name":"/pdf-parse","description":"PDF text extraction Costs $0.01.","tags":["paid","x402","pdf-parse"],"examples":["{\"skill\":\"pdf-parse\",\"input\":{\"url\":\"https://example.com/report.pdf\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"compress","name":"/compress","description":"Token compression for LLMs Costs $0.005.","tags":["paid","x402","compress"],"examples":["{\"skill\":\"compress\",\"input\":{\"text\":\"Long input text to be compressed before it is sent to a model.\",\"target_tokens\":100,\"strategy\":\"extractive\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.store","name":"/vault/store","description":"Store an encrypted item in the vault. The first store claims the namespace and returns a one-time namespace_token. Costs $0.02.","tags":["paid","x402","vault","store"],"examples":["{\"skill\":\"vault.store\",\"input\":{\"namespace\":\"agent-secrets\",\"key\":\"openai-api-key\",\"ciphertext\":\"base64-of-your-client-side-encrypted-bytes\",\"alg\":\"AES-GCM\",\"ttl\":604800}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.delete","name":"/vault/delete","description":"Delete an item from the vault (requires the namespace_token) Costs $0.005.","tags":["paid","x402","vault","delete"],"examples":["{\"skill\":\"vault.delete\",\"input\":{\"namespace\":\"agent-secrets\",\"key\":\"openai-api-key\",\"namespace_token\":\"the token returned by your first store\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.import","name":"/meetings/import","description":"Import a meeting transcript. Accepts a raw WebVTT or SRT export straight from Zoom, Teams, Meet or a notetaker -- timestamps and cue numbering are stripped so search matches phrases the export split across cues. visibility \"private\" stores ciphertext this service cannot read; \"queryable\" stores plaintext and indexes it for search. The first import claims the namespace and returns a one-time namespace_token. Costs $0.004.","tags":["paid","x402","meetings","import"],"examples":["{\"skill\":\"meetings.import\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"title\":\"Pricing review\",\"occurred_at\":\"2026-01-04T15:00:00.000Z\",\"source\":\"webvtt\",\"visibility\":\"queryable\",\"transcript\":\"Alice: we agreed to ship the redesign before the audit...\",\"participants\":[\"Alice\",\"Bob\"]}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.search","name":"/meetings/search","description":"Full-text search across your queryable meetings. Returns ranked excerpts, and reports how many meetings were private and therefore not searched. Costs $0.006.","tags":["paid","x402","meetings","search"],"examples":["{\"skill\":\"meetings.search\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"namespace_token\":\"the token returned by your first import\",\"query\":\"pricing\",\"limit\":10}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"x402.verify","name":"/x402/verify","description":"Before paying a stranger's x402 endpoint, read its live payment challenge and compare it against every previous observation. Flags a changed receiving address, network or asset as critical drift. Reports what the endpoint declares; it does not certify the operator. Costs $0.003.","tags":["paid","x402","x402","verify"],"examples":["{\"skill\":\"x402.verify\",\"input\":{\"url\":\"https://example.com/api/thing\",\"expect\":{\"pay_to\":\"0x...\",\"max_price_usd\":0.01}}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.summarize","name":"/meetings/summarize","description":"Ask a question in plain language and get an answer grounded in your own meetings, with a citation to the meeting each claim came from. Retrieves the relevant transcripts and reasons over them. When nothing matches, no answer is generated rather than one being invented. Costs $0.030.","tags":["paid","x402","meetings","summarize"],"examples":["{\"skill\":\"meetings.summarize\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"namespace_token\":\"the token returned by your first import\",\"question\":\"what did we decide about pricing?\",\"limit\":5}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.get","name":"/meetings/get","description":"Fetch one meeting in full, by meeting_id (requires the namespace_token) Costs $0.002.","tags":["paid","x402","meetings","get"],"examples":["{\"skill\":\"meetings.get\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"namespace_token\":\"the token returned by your first import\",\"meeting_id\":\"6f1c3b90-0f6a-4c2e-9a1e-2b7d5c8e4a11\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.list","name":"/meetings/list","description":"List the meetings in a namespace with their metadata, newest first. Never returns transcripts (requires the namespace_token) Costs $0.001.","tags":["paid","x402","meetings","list"],"examples":["{\"skill\":\"meetings.list\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"namespace_token\":\"the token returned by your first import\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"meetings.delete","name":"/meetings/delete","description":"Delete a meeting and remove it from the search index (requires the namespace_token) Costs $0.001.","tags":["paid","x402","meetings","delete"],"examples":["{\"skill\":\"meetings.delete\",\"input\":{\"namespace\":\"my-meetings-4f9c2b1e8d7a\",\"namespace_token\":\"the token returned by your first import\",\"meeting_id\":\"6f1c3b90-0f6a-4c2e-9a1e-2b7d5c8e4a11\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.list","name":"/vault/list","description":"List the keys held in a vault namespace with their metadata, without returning any ciphertext (requires the namespace_token) Costs $0.001.","tags":["paid","x402","vault","list"],"examples":["{\"skill\":\"vault.list\",\"input\":{\"namespace\":\"agent-secrets\",\"namespace_token\":\"the token returned by your first store\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.exists","name":"/vault/exists","description":"Check whether a key exists in the vault without returning its ciphertext (requires the namespace_token) Costs $0.001.","tags":["paid","x402","vault","exists"],"examples":["{\"skill\":\"vault.exists\",\"input\":{\"namespace\":\"agent-secrets\",\"key\":\"openai-api-key\",\"namespace_token\":\"the token returned by your first store\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.retrieve","name":"/vault/retrieve","description":"Retrieve an encrypted item from the vault (requires the namespace_token issued at claim time) Costs $0.02.","tags":["paid","x402","vault","retrieve"],"examples":["{\"skill\":\"vault.retrieve\",\"input\":{\"namespace\":\"agent-secrets\",\"key\":\"openai-api-key\",\"namespace_token\":\"the token returned by your first store\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"once-key.complete","name":"/once-key/complete","description":"Stores the result of work performed under a claim. Later claims of the same action_key return status \"duplicate\" together with this result, so the caller that lost the race can continue instead of repeating the side effect. Free: the claim price covers the whole lifecycle. Completion is final and cannot be overwritten. Free.","tags":["free","once-key","complete"],"examples":["{\"skill\":\"once-key.complete\",\"input\":{\"namespace\":\"invoices\",\"action_key\":\"charge-order-1042\",\"namespace_token\":\"the token issued on your first claim\",\"result\":{\"charge_id\":\"ch_abc123\",\"amount\":4200}}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.rotate-token","name":"/vault/rotate-token","description":"Mints a new namespace_token and invalidates the current one, which must be presented to authorize the rotation. Free on purpose: charging for the correct response to a suspected leak is how you end up with callers who never rotate. There is no recovery if the token is lost — any such path would be a second way into the namespace and would serve an attacker just as well as the owner. Free.","tags":["free","vault","rotate-token"],"examples":["{\"skill\":\"vault.rotate-token\",\"input\":{\"namespace\":\"agent-secrets\",\"namespace_token\":\"your current token\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"once-key.release","name":"/once-key/release","description":"Frees a claimed action_key so a retry can proceed immediately rather than waiting out the lease. Free. Refuses with 409 if the key was already completed, since releasing it would discard the recorded result and permit a second side effect. Free.","tags":["free","once-key","release"],"examples":["{\"skill\":\"once-key.release\",\"input\":{\"namespace\":\"invoices\",\"action_key\":\"charge-order-1042\",\"namespace_token\":\"the token issued on your first claim\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"credits.trial","name":"/credits/trial","description":"Returns a credit token carrying a $0.10 balance — about 20 calls — immediately, with no account, no email, no wallet and no approval step. Send it as X-Credit-Token on any paid endpoint exactly like a purchased one. Takes no request body. One allowance per client address: calling again returns the same token and whatever balance remains, so retrying is safe but does not top the balance up. It exists because paying per call requires a funded wallet first, which asks a caller to commit money before it can tell whether the answer is worth buying. Free.","tags":["free","credits","trial"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"credits.balance","name":"/credits/balance","description":"Returns the remaining balance for a credit token, and what it has been spent on. Free, and takes no request body: the token goes in the X-Credit-Token header. Charging a buyer to find out how much they have left would be a good way to never sell them a second one. Free.","tags":["free","credits","balance"],"inputModes":["application/json"],"outputModes":["application/json"]}]}