{"openapi":"3.1.0","info":{"title":"Still","version":"0.1.0","description":"No-liquidation fixed-term USDC loans against Solana bags. Every read comes from Solana mainnet through shared caches; no key. POST /api/tx returns an unsigned transaction for the owner’s wallet to sign; the server holds no key. MCP server at https://stillcash.app/mcp, SDK at https://stillcash.app/sdk/still.js, IDL at https://stillcash.app/idl/still.json."},"servers":[{"url":"https://stillcash.app"}],"security":[],"paths":{"/api/quote":{"get":{"operationId":"quote","summary":"Price a loan","description":"Price one loan like the borrow card. Give exactly one of borrow, usd or amount.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","enum":["BONK","WIF","FARTCOIN","POPCAT","PENGU","USELESS","MEW","PNUT","MOODENG","SPX","GIGA","CHILLGUY","SOL","JUP","JTO","RAY","PYTH","SPYx","NVDAx","TSLAx","SPCXx","CRCLx","QQQx","MSTRx","MSFTx","AAPLx","GLDx","GOOGLx","METAx","COINx","HOODx","AMZNx","PLTRx","GMEx"]}},{"name":"borrow","in":"query","schema":{"type":"number"},"description":"USDC to borrow"},{"name":"usd","in":"query","schema":{"type":"number"},"description":"the bag’s value in dollars"},{"name":"amount","in":"query","schema":{"type":"number"},"description":"the bag in token units"},{"name":"days","in":"query","schema":{"type":"integer","enum":[7,21],"default":7}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"mint":{"type":"string"},"lane":{"type":"string","enum":["meme","sol","stock"]},"price":{"type":"number"},"priceAt":{"type":["integer","null"]},"days":{"type":"integer","enum":[7,21]},"bag":{"type":"object","properties":{"units":{"type":"number"},"value":{"type":"number"}}},"loan":{"type":"object","properties":{"ltv":{"type":"number"},"maxLtv":{"type":"number"},"borrow":{"type":"number"},"cost":{"type":"number"},"repay":{"type":"number"},"apr":{"type":"number"},"fee":{"type":"number"},"receive":{"type":"number"},"holderFee":{"type":"number"},"holderReceive":{"type":"number"},"holderMin":{"type":"number"},"walkAwayBelow":{"type":"number","description":"the price change at the date below which keeping the USDC beats repaying (negative)"}}},"liquidation":{"type":"object","properties":{"onStill":{"type":"string"},"priceReadingLoan":{"type":"object","properties":{"liquidatesAtFall":{"type":"number"},"note":{"type":"string"}}}}},"house":{"anyOf":[{"type":"object","properties":{"fundsInstantly":{"type":"boolean"},"roomNow":{"type":"number"},"limitedBy":{"type":"string"},"minApr":{"type":"number"},"maxDays":{"type":"number"}}},{"type":"null"}]},"otherwise":{"type":["string","null"]},"raw":{"type":"object","properties":{"mint":{"type":"string"},"amount":{"type":"string"},"ask":{"type":"string"},"cap":{"type":"string"},"termSecs":{"type":"integer"}},"required":["mint","amount","ask","cap","termSecs"]},"borrowAt":{"type":"string"},"share":{"type":"string"},"at":{"type":"string"}}}}}},"400":{"description":"bad input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/market":{"get":{"operationId":"collateral","summary":"Collateral","description":"The 34 bags: price, 24-hour change, this week’s deepest fall.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"at":{"type":"integer"},"rows":{"type":"array","items":{"type":"object"}}}}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/vault":{"get":{"operationId":"house","summary":"Still House","description":"The first vault: assets, cash, loans running, its on-chain rules, every token line. Raw USDC amounts, 6 decimals.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/listings":{"get":{"operationId":"listings","summary":"Open listings","description":"Listings waiting for a wallet lender, priced at today’s market.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"live":{"type":"boolean"},"listings":{"type":"array","items":{"type":"object"}}}}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/activity":{"get":{"operationId":"activity","summary":"Activity","description":"Every listing, funding, repayment and claim, newest first.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"live":{"type":"boolean"},"events":{"type":"array","items":{"type":"object"}}}}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/trenches":{"get":{"operationId":"trenches","summary":"Trench board","description":"Every meme Still lends against: this week’s worst fall, where a 55% loan that reads the price would have sold it, where it is now, and a 7-day quote on a $100 bag.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"at":{"type":["string","null"]},"summary":{"type":"object","properties":{"memes":{"type":"integer"},"wouldHaveSold":{"type":"integer"},"backAboveThatPrice":{"type":"integer"}}},"memes":{"type":"array","items":{"type":"object"}}}}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/backtest":{"get":{"operationId":"backtest","summary":"Backtest","description":"A month of 7- and 21-day loans started every 4 hours against the memes and the Solana majors: how many a 55% loan that reads the price would have sold, how many came back above the sale, and the lender side on Still.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/replay":{"get":{"operationId":"replay","summary":"Replay candles","description":"One meme’s 4-hour Jupiter candles, [time, open, high, low, close], for the replay page.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string"},"candles":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}}}}},"400":{"description":"not a meme Still lends against"}}}},"/api/stats":{"get":{"operationId":"stats","summary":"Program counters","description":"Loans funded, volume, fees, fee settings and $STILL burned since launch.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/holders":{"get":{"operationId":"holders","summary":"$STILL holders","description":"Wallets holding $STILL and how many hold the 1,000,000 for the 0.5% fee.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"live":{"type":"boolean"},"wallets":{"type":"integer"},"club":{"type":"integer"},"at":{"type":"integer"}}}}}},"503":{"description":"the chain did not answer; try again"}}}},"/api/tx":{"post":{"operationId":"buildTransaction","summary":"Build a transaction","description":"An unsigned base64 versioned transaction for one action, fee payer = owner. With simulate: true it is also run against mainnet first. Amounts are raw units as strings (USDC has 6 decimals); for list, use the raw values a quote returns.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["list","repay","fund","cancel","claim","collect","reclaim","deposit","withdraw","claim_recovery"]},"owner":{"type":"string"},"mint":{"type":"string"},"amount":{"type":"string"},"ask":{"type":"string"},"cap":{"type":"string"},"days":{"type":"integer","enum":[7,21]},"id":{"type":"string"},"shares":{"type":"string"},"index":{"type":"integer"},"simulate":{"type":"boolean"}},"required":["action","owner"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tx":{"type":"string"},"id":{"type":"string"},"loan":{"type":"string"},"simulation":{"type":"object","properties":{"ok":{"type":["boolean","null"]},"error":{"type":"string"},"logs":{"type":"array","items":{"type":"string"}},"computeUnits":{"type":["integer","null"]}}}}}}}},"400":{"description":"bad input or a rule the program would refuse"}}}}}}