https://bani.africa/_next/static/chunks/pages/developers/mcp/features/SectionTwo-84f74e3ac9e143fa.js
1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4186],{3677:function(e,t,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/developers/mcp/features/SectionTwo",function(){return a(5067)}])},5067:function(e,t,a){"use strict";a.r(t);var n=a(5893),s=a(7294),o=a(7219),r=a(240);let i=()=>{let[e,t]=(0,s.useState)(0),{prompt:a,tools:i,reply:l}=r.kz[e];return(0,n.jsxs)("div",{className:"flex flex-col justify-start items-center w-full h-fit py-14 md:py-[110px] bg-black relative overflow-hidden",children:[(0,n.jsx)("div",{className:"blue-black-fade-gradient absolute top-[-280px] left-[-280px] min-h-[450px] min-w-[500px] rounded-full"}),(0,n.jsx)("div",{className:"blue-black-fade-gradient absolute bottom-[-280px] right-[-280px] min-h-[450px] min-w-[500px] rounded-full"}),(0,n.jsxs)("div",{className:"relative grid grid-cols-1 lg:grid-cols-[1fr_1.35fr] gap-12 lg:gap-16 items-center w-full px-5 md:px-[5%] lg:px-[8%]",children:[(0,n.jsxs)("div",{className:"flex flex-col gap-y-6",children:[(0,n.jsx)("p",{className:"text-blue-textHover basier-medium bani-base",children:"SEE IT IN ACTION"}),(0,n.jsx)("h2",{className:"text-white bani-heading-alt-2",children:"Describe the task. Your assistant makes the calls."}),(0,n.jsx)("p",{className:"text-grey-white font-light bani-lg",children:"The assistant picks the right Bani tools, chains them together and reports back. You don't have to look up endpoints or build request bodies."}),(0,n.jsx)("div",{className:"flex flex-col gap-3 w-full",children:r.kz.map((a,s)=>{let{label:o}=a;return(0,n.jsxs)("button",{type:"button",onClick:()=>t(s),className:"flex justify-between items-center w-full px-5 py-4 rounded-[14px] border text-left text-base md:text-lg transition-all duration-300 ".concat(e===s?"bg-white text-black border-white":"bg-white/[.03] text-grey-white border-white/[.15] hover:border-white/[.4]"),children:[(0,n.jsx)("span",{children:o}),(0,n.jsx)("span",{className:"w-2.5 h-2.5 rounded-full ".concat(e===s?"bg-blue-gradient":"bg-white/[.15]")})]},o)})})]}),(0,n.jsxs)("div",{className:"flex flex-col w-full min-w-0 rounded-[30px] bg-grey-black border border-white/[.08] p-5 md:p-8 gap-y-6 shadow-card-2",children:[(0,n.jsxs)("div",{className:"flex items-start gap-3",children:[(0,n.jsx)("span",{className:"flex shrink-0 justify-center items-center w-9 h-9 rounded-full bg-grey-15 text-white",children:(0,n.jsx)(o.fzv,{})}),(0,n.jsx)("p",{className:"text-white text-base md:text-lg leading-relaxed pt-1",children:a})]}),(0,n.jsx)("div",{className:"flex flex-col gap-2 pl-0 md:pl-12",children:i.map(e=>{let{name:t,destructive:a}=e;return(0,n.jsxs)("div",{className:"flex flex-wrap justify-between items-center gap-2 px-4 py-3 rounded-[12px] border ".concat(a?"border-yellow/[.4] bg-yellow/[.08]":"border-white/[.08] bg-white/[.03]"),children:[(0,n.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,n.jsx)(o.V7f,{className:"shrink-0 text-blue-textHover"}),(0,n.jsx)("span",{className:"bani-code text-sm md:text-base text-white/[.9] truncate",children:t})]}),a?(0,n.jsxs)("span",{className:"flex items-center gap-1.5 text-yellow text-sm",children:[(0,n.jsx)(o.bfl,{})," Approval required"]}):(0,n.jsx)(o.UgA,{className:"text-green-light"})]},t)})}),(0,n.jsxs)("div",{className:"flex items-start gap-3",children:[(0,n.jsx)("span",{className:"flex shrink-0 justify-center items-center w-9 h-9 rounded-full bg-blue-gradient text-white basier-medium text-sm",children:"AI"}),(0,n.jsx)("div",{className:"flex flex-col gap-y-3 pt-1",children:l.map(e=>(0,n.jsx)("p",{className:"text-grey-white font-light text-base md:text-lg leading-relaxed",children:e},e))})]})]})]})]})};t.default=i},240:function(e,t,a){"use strict";a.d(t,{Os:function(){return s},Q1:function(){return c},Qq:function(){return i},TD:function(){return n},ax:function(){return d},kz:function(){return l}});let n="https://www.npmjs.com/package/bani-mcp",s="https://docs.getbani.com/bani-pop",o='"env": {\n "BANI_ENV": "sandbox",\n "BANI_ACCESS_TOKEN": "your-access-token",\n "BANI_PUBLIC_KEY": "your-public-key",\n "BANI_PRIVATE_KEY": "your-merchant-private-key",\n "BANI_ACCOUNT_TRIBE_REF": "y
1our-account-tribe-ref"\n }',r='{\n "mcpServers": {\n "bani": {\n "command": "npx",\n "args": ["-y", "bani-mcp"],\n '.concat(o,"\n }\n }\n}"),i=[{name:"Claude Code",filename:"Terminal",language:"shell",note:"Run this once from your terminal. It registers the Bani server with Claude Code.",code:"claude mcp add bani \\\n -e BANI_ENV=sandbox \\\n -e BANI_ACCESS_TOKEN=your-access-token \\\n -e BANI_PUBLIC_KEY=your-public-key \\\n -e BANI_PRIVATE_KEY=your-merchant-private-key \\\n -e BANI_ACCOUNT_TRIBE_REF=your-account-tribe-ref \\\n -- npx -y bani-mcp"},{name:"Claude Desktop",filename:"claude_desktop_config.json",language:"json",note:"Open Settings > Developer > Edit Config, paste this under mcpServers, then restart Claude.",code:r},{name:"Cursor",filename:"~/.cursor/mcp.json",language:"json",note:"Go to Settings > MCP > Add new MCP server. The config has the same shape.",code:r},{name:"VS Code",filename:".vscode/mcp.json",language:"json",note:'Add this to .vscode/mcp.json in your project. VS Code uses "servers" instead of "mcpServers".',code:'{\n "servers": {\n "bani": {\n "type": "stdio",\n "command": "npx",\n "args": ["-y", "bani-mcp"],\n '.concat(o,"\n }\n }\n}")}],l=[{label:"Collect a payment",prompt:"Create a customer for Ada Obi ([email protected], +2348023123200) and give her a â¦25,000 bank transfer account that expires in 2 days.",tools:[{name:"bani_create_customer"},{name:"bani_list_collection_banks"},{name:"bani_create_virtual_account"}],reply:["Done. Ada Obi has been added as a customer, and she has a temporary account ready for payment:","Amount: â¦25,000 \xb7 Expires in 2 days","I'll check the payment status for you whenever you ask."]},{label:"Send a payout",prompt:"Check my NGN wallet balance, then send â¦50,000 to account 0123456789 at GTBank.",tools:[{name:"bani_get_account_details"},{name:"bani_get_wallet_details"},{name:"bani_verify_ng_bank_account"},{name:"bani_initiate_bank_payout",destructive:!0}],reply:["Your NGN wallet has enough to cover this payout. The account name on 0123456789 matches, so I've prepared the â¦50,000 transfer.","Payouts move real money, so your client asked you to approve it before it ran."]},{label:"Build with the docs",prompt:"I need to handle Bani webhooks in my Express app. Can you wire it up?",tools:[{name:"bani_list_doc_pages"},{name:"bani_get_doc_page"}],reply:["I read the webhooks page in the Bani docs and added a /webhooks/bani route to your app. It verifies each event before processing it.","Webhooks aren't an API call, so the server pulls in the live documentation to get the details right."]}],c=[{key:"customers",title:"Customers",count:8,body:"Create and update customers, and manage their metadata and delivery addresses."},{key:"collections",title:"Collections",count:15,body:"Bank transfer virtual accounts, mobile money, crypto deposits, Bani Shopper e-wallet payments, and their status checks."},{key:"payouts",title:"Payouts",count:11,body:"Bank transfers in Nigeria, across Africa and internationally, plus mobile money and crypto payouts and account verification."},{key:"shopper",title:"Bani Shopper",count:5,body:"Payment requests, refunds, and the recurring auto-debit consent flow."},{key:"verification",title:"Verification",count:3,body:"Nigerian BVN and phone (USSD) verification."},{key:"bills",title:"Bills",count:9,body:"Airtime, mobile data, and bill payments such as electricity and cable TV."},{key:"conversion",title:"Conversion",count:4,body:"Currency and coin conversion rates, and swaps between your balances."},{key:"account",title:"Account",count:3,body:"Account and wallet balance lookups, and phone network lookup."},{key:"docs",title:"Docs",count:2,body:"Fetch live Bani documentation, for work like the Bani Pop widget or webhooks that isn't an API call."},{key:"agent",title:"Super Agent",count:12,optIn:!0,body:"Onboard and manage merchant sub-accounts. Only enabled when BANI_SUPER_AGENT_KEY is set."}],d=[{name:"BANI_ACCESS_TOKEN",required:!0,body:"Bearer token from your dashboard."},{name:"BANI_PUBLIC_KEY",required:!0,body:"Public key from your dashboard."},{name:"BANI_PRIVATE_KEY",required:!0,body:"Merchant private key, used to sign every request. Never share this."},{name:"BANI_ACCOUNT_TRIBE_REF",required:!0,body:"Your account's tribe reference."},{name:"BANI_ENV",defaultValue:"sandbox",body:"sandbox or live."},{name:"BANI_READ_ONLY",defaultValue:"false",body:"Set to true to register only read-only tools (lookups and status checks). Nothing can create, pay, or move money."},{name:"BANI_TOOLSETS",defaultValue:"all except agent",body:"Comma-separated list that limits which tool groups are registered."},{name:"BANI_SUPER_AGENT_KEY",defaultValue:"â",body:"Only needed for the agent toolset, which manages merchant sub-accounts."},{name:"BANI_BASE_URL",defaultValue:"from BANI_ENV",body:"Override the API base URL."}]}},function(e){e.O(0,[7219,9774,2888,179],function(){return e(e.s=3677)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.