{"openapi":"3.1.0","info":{"title":"Agentport application API","version":"2.0.0","description":"Free tools, inference, discovery and receipt APIs. Agentport charges no platform fees and does not operate a facilitator. Input conversations are limited to 1,800 characters and must end with a user message."},"servers":[{"url":"https://agentport.shop"}],"paths":{"/api/services":{"get":{"operationId":"listServices","summary":"Search Agentport and wallet-signed community listings","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"owner","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/status":{"get":{"operationId":"status","summary":"Current payment, RPC and storage readiness","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/v1/models":{"get":{"operationId":"models","summary":"Available inference models and limits","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/v1/chat/completions":{"post":{"operationId":"complete","summary":"Free compact-model text generation","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["messages"],"additionalProperties":false,"properties":{"model":{"type":"string","enum":["toll-small-135m"]},"messages":{"type":"array","minItems":1,"maxItems":6,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant","system"]},"content":{"type":"string","minLength":1,"maxLength":1200}}}},"max_tokens":{"type":"integer","minimum":1,"maximum":96,"default":64},"stream":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"JSON completion or SSE chunks when stream=true","content":{"application/json":{"schema":{"type":"object"}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/tools/text":{"post":{"operationId":"text","summary":"Text analysis","description":"Count words, sentences and reading time. Extract frequent terms from your text without sending it to an AI provider.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":10000}}},"example":{"text":"Agents use Agentport to discover services. Agentport connects tools and payments."}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/tools/json":{"post":{"operationId":"json","summary":"JSON inspector","description":"Validate and format JSON, inspect top-level fields and measure payload size. A deterministic tool for API workflows.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":10000}}},"example":{"text":"{\"network\":\"Solana\",\"asset\":\"USDC\"}"}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/tools/extract":{"post":{"operationId":"extract","summary":"Link & email extraction","description":"Extract and deduplicate URLs and email addresses from supplied text. No crawling, third-party requests or model key required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":10000}}},"example":{"text":"Visit https://example.com or contact hello@example.com"}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/tools/hash":{"post":{"operationId":"hash","summary":"Content fingerprint","description":"Calculate a SHA-256 fingerprint and UTF-8 byte count for text. Compare content integrity across your application workflow.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":10000}}},"example":{"text":"Pay. Pass. Execute."}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/solana/network":{"get":{"operationId":"solananetwork","summary":"Read Solana network","parameters":[],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/solana/balance":{"get":{"operationId":"solanabalance","summary":"Read Solana balance","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/solana/transaction":{"get":{"operationId":"solanatransaction","summary":"Read Solana transaction","parameters":[{"name":"signature","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/directory":{"get":{"summary":"Paginated public service directory","parameters":[{"name":"offset","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/model-catalog":{"get":{"summary":"Hosted and browser model catalog","parameters":[],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/assets":{"get":{"summary":"Read Solana token supply and optional balances","parameters":[{"name":"wallet","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/solana/history":{"get":{"operationId":"solanahistory","summary":"Read Solana history","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string"}},{"name":"before","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/mpp":{"get":{"operationId":"freeProtocolReport","summary":"Free Agentport protocol report; no payment required","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}},"/api/gateway":{"post":{"operationId":"forwardExternalService","summary":"Bounded public HTTPS transport for explicit service inspection/payment requests","description":"No signing or automatic payment. Public IPv4 HTTPS port 443 only; no redirects, URL credentials, private addresses, arbitrary bearer tokens or cookies. Maximum response 1 MiB. Merchant response bytes are base64 encoded; status, payment headers and original URL are preserved in the envelope.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url","method"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048},"method":{"type":"string","enum":["GET","POST"]},"body":{"type":"string","maxLength":8192,"description":"Exact JSON request body for POST"},"paymentSignature":{"type":"string","maxLength":12000},"authorization":{"type":"string","maxLength":12000,"description":"MPP Payment authentication only"}}}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"429":{"description":"Usage limit reached"},"503":{"description":"Service unavailable"}}}}}}