1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1566],{4346:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/developers/mcp/features/Banner",function(){return n(6695)}])},2446:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var a,o,r,s=n(5893),i=n(7294),c=n(5697),l=n.n(c);function d(){return(d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}var u=function(e){return i.createElement("svg",d({width:17,height:17,fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"Loader_svg__animate-spin"},e),a||(a=i.createElement("circle",{cx:8.5,cy:8.5,r:7.5,stroke:"#5444F2",strokeOpacity:.2,strokeWidth:2})),o||(o=i.createElement("mask",{id:"Loader_svg__a",fill:"#fff"},i.createElement("path",{d:"M8.76 16.996a8.5 8.5 0 0 1-7.672-4.335l1.729-.97a6.517 6.517 0 0 0 5.882 3.323l.06 1.982Z"}))),r||(r=i.createElement("path",{d:"M8.76 16.996a8.5 8.5 0 0 1-7.672-4.335l1.729-.97a6.517 6.517 0 0 0 5.882 3.323l.06 1.982Z",stroke:"#fff",strokeWidth:4,mask:"url(#Loader_svg__a)"})))};let p=e=>{let{type:t,isOutline:n,text:a,isDisabled:o,onClick:r,icon:i,iconRight:c,isLoading:l,whiteBg:d,redBg:p,blackBg:b,fullWidth:m,borderColor:h,textColor:y,textClass:g="",height:f,className:x,buttonClass:_,noBg:v,href:k}=e,N="\n flex justify-center items-center\n ".concat(f||"h-[40px] md:h-[44px]"," outline-none bani-base\n rounded-[12px] px-6 py-2 basier-medium\n transition-all duration-[700ms] ease-in-out cursor-pointer\n ").concat(m?"w-full":"","\n whitespace-nowrap ").concat(n?"bg-transparent ".concat(o?"bg-white/[.2]":" hover:bg-blue-clear hover:border-blue-border text-".concat(y||"black")," text-black ").concat(h||"border border-[rgba(0, 0, 0, 0.12)"," ] "):d?"bg-white ".concat(o?"bg-white/[.2]":""," text-").concat(y||"grey-text"," border border-").concat(h||"grey-border"," hover:bg-blue-clear hover:border-blue-border"):p?"bg-red ".concat(o?"bg-red/[.2]":""," text-white"):b?"bg-black ".concat(o?"bg-black/[.2]":""," text-white hover:bg-blue"):" ".concat(o?"bg-blue/[.2]":v?"bg-transparent hover:bg-[#110d30]":"bg-black hover:bg-blue"," text-white"));return(0,s.jsx)("button",{type:null!=t?t:"button",onClick:r,disabled:o||l,className:"z-10 button-container ".concat(m?"w-full":""," ").concat(x||""),href:k,children:l?(0,s.jsx)("div",{className:N,children:(0,s.jsx)(u,{})}):(0,s.jsxs)("div",{className:"".concat(N," space-x-2 ").concat(_),children:[i&&(0,s.jsx)("div",{children:i}),(0,s.jsx)("span",{className:"".concat(g),children:a}),c&&(0,s.jsx)("div",{className:"".concat(g),children:c})]})})};p.propTypes={type:l().any,isOutline:l().bool,text:l().string,isDisabled:l().bool,onClick:l().func,isLoading:l().bool,whiteBg:l().bool,redBg:l().bool,blackBg:l().bool,fullWidth:l().bool,icon:l().element,iconRight:l().element,borderColor:l().string,textColor:l().string,textClass:l().string,height:l().string,href:l().string,className:l().string,buttonClass:l().string};var b=p},6695:function(e,t,n){"use strict";n.r(t);var a=n(5893),o=n(7294),r=n(7219),s=n(2446),i=n(240);let c="npx -y bani-mcp",l=()=>{let[e,t]=(0,o.useState)(!1),n=async()=>{try{await navigator.clipboard.writeText(c),t(!0),setTimeout(()=>t(!1),2e3)}catch(e){t(!1)}};return(0,a.jsxs)("div",{className:"relative flex flex-col justify-center items-start sm:items-center text-center md:text-left w-full md:w-[85%] lg:w-[80%] h-fit z-[5] min-h-[400px] max-h-[700px] website-banner-alt px-5 md:px-[5%] lg:px-[8%]",children:[(0,a.jsx)("div",{className:"blue-fade-gradient absolute top-[20%] left-1/2 -translate-x-1/2 w-[60%] h-[40%] rounded-full -z-10"}),(0,a.jsx)("p",{className:"text-grey-text basier-medium leading-none bani-base mb-6 md:mb-8",children:"BANI MCP SERVER"}),(0,a.jsxs)("h1",{className:"text-black bani-heading mb-5 md:mb-6 text-left sm:text-center",children:["Bani, inside your ",(0,a.jsx)("br",{className:"sm:hidden"}),(0,a.jsx)("span",{className:"text-blue-gradient",children:"AI assistant"})]}),(0,a.jsx)("p",{className:"text-grey-text font-light bani-title mb-8 md:mb-10 text-left sm:text-center",children:"Connect Claude, Cursor, VS Code or any MCP client to your Bani account. Create customers, collect payments, send payouts, verify identities and pay bills, just by asking."}),(0,a.jsxs)("button",{type:"button",onClick:n,className:"flex items-center gap-4 roun
1ded-xl bg-grey-black text-white px-5 h-[50px] md:h-[56px] mb-6 md:mb-8 hover:bg-blue-deep transition-colors duration-500","aria-label":"Copy install command",children:[(0,a.jsx)("span",{className:"text-grey-144 bani-code",children:"$"}),(0,a.jsx)("span",{className:"bani-code text-base md:text-lg",children:c}),e?(0,a.jsx)(r.UgA,{className:"text-green-light"}):(0,a.jsx)(r.C3L,{className:"text-grey-144"})]}),(0,a.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-center w-fit space-y-4 md:space-y-0 md:space-x-2",children:[(0,a.jsx)("a",{href:"#setup",children:(0,a.jsx)(s.Z,{text:"Set it up in 2 minutes",onClick:()=>{var e;return null==window?void 0:null===(e=window.dataLayer)||void 0===e?void 0:e.push({event:"event",eventProps:{category:"MCP Setup",action:"MCP Setup",label:"MCP Setup - mcp banner",value:3}})},height:"h-[50px] md:h-[56px]",textClass:"text-lg",buttonClass:"!px-4 sm:px-8 !rounded-xl bg-blue-gradient"})}),(0,a.jsx)("a",{href:i.TD,target:"_blank",rel:"noreferrer",children:(0,a.jsx)(s.Z,{text:"View on npm",isOutline:!0,whiteBg:!0,textColor:"black",height:"h-[50px] md:h-[56px]",textClass:"text-lg",buttonClass:"!px-4 sm:px-8 !rounded-xl"})})]})]})};t.default=l},240:function(e,t,n){"use strict";n.d(t,{Os:function(){return o},Q1:function(){return l},Qq:function(){return i},TD:function(){return a},ax:function(){return d},kz:function(){return c}});let a="https://www.npmjs.com/package/bani-mcp",o="https://docs.getbani.com/bani-pop",r='"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": "your-account-tribe-ref"\n }',s='{\n "mcpServers": {\n "bani": {\n "command": "npx",\n "args": ["-y", "bani-mcp"],\n '.concat(r,"\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:s},{name:"Cursor",filename:"~/.cursor/mcp.json",language:"json",note:"Go to Settings > MCP > Add new MCP server. The config has the same shape.",code:s},{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(r,"\n }\n }\n}")}],c=[{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."]}],l=[{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."}
1,{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."}]},2703:function(e,t,n){"use strict";var a=n(414);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,s){if(s!==a){var i=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},function(e){e.O(0,[7219,9774,2888,179],function(){return e(e.s=4346)}),_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.