{"name":"io.github.tstockham96/rail-mcp","slug":"tstockham96-rail-mcp","title":"Rail","description":"Budgets, propose-then-approve, and receipts for agents that buy for a human. Dry-run by default.","url":"https://mcp.market/server/tstockham96-rail-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":0,"forks":0,"downloads_week":331,"last_push_at":"2026-09-29T00:40:32.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/tstockham96/rail-mcp","website":"https://github.com/tstockham96/rail-mcp#readme","version":"0.1.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"rail-mcp","version":"0.1.1","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Directory for the local ledger (budget, proposals, receipts). Defaults to ~/.rail in the user home directory. Set to override.","format":"filepath","name":"RAIL_DATA_DIR"}]}],"tools":[{"name":"decide_proposal","description":"Approve or reject one pending proposal. This is the step a human should confirm. decision=approve settles the purchase: in the default dry-run mode it writes a settled_dry_run receipt, stamps a fake settlement ref (lsrq_dry_…), and decrements the remaining budget, without calling the network. decision=reject spends nothing and writes no receipt. The proposal can be decided only once; repeating the","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_budget","description":"Read the active budget, amount spent, amount remaining, and the count of pending proposals. Does not change the ledger, spend money, or contact Stripe or Link.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_receipts","description":"Read receipts, newest first, including dry-run settlements and refunds. Does not refund, spend money, or contact Stripe or Link.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_proposals","description":"Read purchase proposals filtered by status: pending (default), approved, rejected, or all. Does not approve, reject, spend money, or contact Stripe or Link.","write_action":false,"price_micros":0,"input_schema":null},{"name":"propose_purchase","description":"Record a pending purchase intent only. Moves no money, creates no receipt, approves no card, and does not contact Stripe or Link. Needs a later human approval via decide_proposal before anything settles. When a budget exists and the amount is above what remains, the proposal is stored with over_budget set and still spends nothing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"refund_receipt","description":"Reverse a settled dry-run receipt and restore that amount to the remaining budget. This is the step a human should confirm. Does not contact Stripe or Link. A receipt can be refunded only once; repeating the call does not refund again. Refuses receipts that are not settled_dry_run.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_budget","description":"Overwrite the local spend budget. Changes the ledger limit only. Does not spend money, approve a card, settle a purchase, or contact Stripe or Link. Passing the same amount again does not add to the budget.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-01T13:49:52.497Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-01T13:49:52.438Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"rail-mcp","version":"0.1.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-29T00:44:45.523Z","repositoryUrl":"git+https://github.com/tstockham96/rail-mcp.git","weeklyDownloads":331}],"repo":{"found":true,"owner":"tstockham96","repo":"rail-mcp","archived":false,"pushedAt":"2026-09-29T00:40:32Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/35585164?v=4","ownerCreatedAt":"2018-01-19T01:53:33Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":331,"license":"MIT","lastPushAt":"2026-09-29T00:40:32.000Z","score":31}}}},"grade_history":[],"reviews":[]}