[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"\u002Fapi-reference\u002Fprotocol\u002Foverview":264,"\u002Fapi-reference\u002Fprotocol\u002Foverview-surround":538},[4,22,110,153,182,191,247],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Agents","\u002Fagents","agents",[9,13,17],{"title":10,"path":11,"stem":12},"LLMs.txt","\u002Fagents\u002Fllms-txt","agents\u002Fllms-txt",{"title":14,"path":15,"stem":16},"MCP Server","\u002Fagents\u002Fmcp-server","agents\u002Fmcp-server",{"title":18,"path":19,"stem":20},"Skills","\u002Fagents\u002Fskills","agents\u002Fskills",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Api Reference","\u002Fapi-reference","api-reference",[27,31,64],{"title":28,"path":29,"stem":30},"API Reference","\u002Fapi-reference\u002Fintroduction","api-reference\u002Fintroduction",{"title":32,"path":33,"stem":34,"children":35,"page":21},"Orchestration","\u002Fapi-reference\u002Forchestration","api-reference\u002Forchestration",[36,40,44,48,52,56,60],{"title":37,"path":38,"stem":39},"POST \u002Forders\u002F{originChain}\u002F{orderId}\u002Fcancel","\u002Fapi-reference\u002Forchestration\u002Fcancel-order","api-reference\u002Forchestration\u002Fcancel-order",{"title":41,"path":42,"stem":43},"GET \u002Forders\u002F{originChain}\u002F{orderId}","\u002Fapi-reference\u002Forchestration\u002Forder-status","api-reference\u002Forchestration\u002Forder-status",{"title":45,"path":46,"stem":47},"GET \u002Forders","\u002Fapi-reference\u002Forchestration\u002Forders","api-reference\u002Forchestration\u002Forders",{"title":49,"path":50,"stem":51},"Orchestration API","\u002Fapi-reference\u002Forchestration\u002Foverview","api-reference\u002Forchestration\u002Foverview",{"title":53,"path":54,"stem":55},"POST \u002Fquote","\u002Fapi-reference\u002Forchestration\u002Fquote","api-reference\u002Forchestration\u002Fquote",{"title":57,"path":58,"stem":59},"GET \u002Fsupported-assets","\u002Fapi-reference\u002Forchestration\u002Fsupported-assets","api-reference\u002Forchestration\u002Fsupported-assets",{"title":61,"path":62,"stem":63},"TypeScript Type Generation","\u002Fapi-reference\u002Forchestration\u002Ftype-generation","api-reference\u002Forchestration\u002Ftype-generation",{"title":65,"path":66,"stem":67,"children":68,"page":21},"Protocol","\u002Fapi-reference\u002Fprotocol","api-reference\u002Fprotocol",[69,73],{"title":70,"path":71,"stem":72},"Protocol API","\u002Fapi-reference\u002Fprotocol\u002Foverview","api-reference\u002Fprotocol\u002Foverview",{"title":74,"path":75,"stem":76,"children":77,"page":21},"Recipes","\u002Fapi-reference\u002Fprotocol\u002Frecipes","api-reference\u002Fprotocol\u002Frecipes",[78,82,86,90,94,98,102,106],{"title":79,"path":80,"stem":81},"Collateral Composition","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fcollateral-composition","api-reference\u002Fprotocol\u002Frecipes\u002Fcollateral-composition",{"title":83,"path":84,"stem":85},"Daily Yields","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fdaily-yields","api-reference\u002Fprotocol\u002Frecipes\u002Fdaily-yields",{"title":87,"path":88,"stem":89},"Earner Rate History","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fearner-rate-history","api-reference\u002Fprotocol\u002Frecipes\u002Fearner-rate-history",{"title":91,"path":92,"stem":93},"Minter Daily Expenses","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fminter-daily-expenses","api-reference\u002Fprotocol\u002Frecipes\u002Fminter-daily-expenses",{"title":95,"path":96,"stem":97},"Network Supply","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fnetwork-supply","api-reference\u002Fprotocol\u002Frecipes\u002Fnetwork-supply",{"title":99,"path":100,"stem":101},"Protocol Configuration","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Fprotocol-config","api-reference\u002Fprotocol\u002Frecipes\u002Fprotocol-config",{"title":103,"path":104,"stem":105},"Token Holders","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Ftoken-holders","api-reference\u002Fprotocol\u002Frecipes\u002Ftoken-holders",{"title":107,"path":108,"stem":109},"Token Overview","\u002Fapi-reference\u002Fprotocol\u002Frecipes\u002Ftoken-overview","api-reference\u002Fprotocol\u002Frecipes\u002Ftoken-overview",{"title":111,"path":112,"stem":113,"children":114,"page":21},"Build","\u002Fbuild","build",[115,119,123,127,131,135,139,143,147,150],{"title":116,"path":117,"stem":118},"Integrating with the M0 Portals","\u002Fbuild\u002Fbridging-developer","build\u002Fbridging-developer",{"title":120,"path":121,"stem":122},"Bridging M And wM Tokens","\u002Fbuild\u002Fbridging-user","build\u002Fbridging-user",{"title":124,"path":125,"stem":126},"Stablecoin Extension Templates","\u002Fbuild\u002Fchoosing-your-model","build\u002Fchoosing-your-model",{"title":128,"path":129,"stem":130},"How to Design Your Stablecoin","\u002Fbuild\u002Foverview","build\u002Foverview",{"title":132,"path":133,"stem":134},"Implementation Guide: NoYield","\u002Fbuild\u002Fsvm-noyield-guide","build\u002Fsvm-noyield-guide",{"title":136,"path":137,"stem":138},"Getting started","\u002Fbuild\u002Fsvm-noyield-guide-overview","build\u002Fsvm-noyield-guide-overview",{"title":140,"path":141,"stem":142},"Implementation Guide: MYieldToOne (Onshore)","\u002Fbuild\u002Ftreasury-guide","build\u002Ftreasury-guide",{"title":144,"path":145,"stem":146},"Implementation Guide: JMI (Offshore)","\u002Fbuild\u002Ftreasury-jmi-guide","build\u002Ftreasury-jmi-guide",{"title":136,"path":148,"stem":149},"\u002Fbuild\u002Ftreasury-jmi-overview","build\u002Ftreasury-jmi-overview",{"title":136,"path":151,"stem":152},"\u002Fbuild\u002Ftreasury-model","build\u002Ftreasury-model",{"title":154,"path":155,"stem":156,"children":157,"page":21},"Get Started","\u002Fget-started","get-started",[158,162,166,170,174,178],{"title":159,"path":160,"stem":161},"Accessing Liquidity","\u002Fget-started\u002Faccessing-liquidity","get-started\u002Faccessing-liquidity",{"title":163,"path":164,"stem":165},"Cross Chain Interoperability","\u002Fget-started\u002Fcross-chain","get-started\u002Fcross-chain",{"title":167,"path":168,"stem":169},"Architecture Overview","\u002Fget-started\u002Fhow-it-works","get-started\u002Fhow-it-works",{"title":171,"path":172,"stem":173},"Overview","\u002Fget-started\u002Foverview","get-started\u002Foverview",{"title":175,"path":176,"stem":177},"Platform Mechanics & Reward Programmability","\u002Fget-started\u002Fprotocol-mechanics","get-started\u002Fprotocol-mechanics",{"title":179,"path":180,"stem":181},"Stablecoin Features","\u002Fget-started\u002Fstablecoin-features","get-started\u002Fstablecoin-features",{"title":183,"path":184,"stem":185,"children":186,"page":21},"Issuers","\u002Fissuers","issuers",[187],{"title":188,"path":189,"stem":190},"Issue Your Stablecoin","\u002Fissuers\u002Foverview","issuers\u002Foverview",{"title":65,"path":192,"stem":193,"children":194,"page":21},"\u002Fprotocol","protocol",[195,199,203,207,211,215,219,223,227,231,235,239,243],{"title":196,"path":197,"stem":198},"Distribution Vault","\u002Fprotocol\u002Fdistribution-vault","protocol\u002Fdistribution-vault",{"title":200,"path":201,"stem":202},"M0 Extensions","\u002Fprotocol\u002Fextensions","protocol\u002Fextensions",{"title":204,"path":205,"stem":206},"Limit Order Protocol","\u002Fprotocol\u002Flimit-order-protocol","protocol\u002Flimit-order-protocol",{"title":208,"path":209,"stem":210},"M0 Portals","\u002Fprotocol\u002Fm-portals","protocol\u002Fm-portals",{"title":212,"path":213,"stem":214},"M Token","\u002Fprotocol\u002Fm-token","protocol\u002Fm-token",{"title":216,"path":217,"stem":218},"M Token Specification","\u002Fprotocol\u002Fm-token-spec","protocol\u002Fm-token-spec",{"title":220,"path":221,"stem":222},"Minting & Burning (MinterGateway)","\u002Fprotocol\u002Fminting-burning","protocol\u002Fminting-burning",{"title":224,"path":225,"stem":226},"Portal V2","\u002Fprotocol\u002Fportal-v2","protocol\u002Fportal-v2",{"title":228,"path":229,"stem":230},"Rate Models & Yield","\u002Fprotocol\u002Frate-models","protocol\u002Frate-models",{"title":232,"path":233,"stem":234},"Roles","\u002Fprotocol\u002Froles","protocol\u002Froles",{"title":236,"path":237,"stem":238},"M0 On Solana","\u002Fprotocol\u002Fsolana","protocol\u002Fsolana",{"title":240,"path":241,"stem":242},"Wrapped M (wM)","\u002Fprotocol\u002Fwrapped-m","protocol\u002Fwrapped-m",{"title":244,"path":245,"stem":246},"Wrapped M Specification","\u002Fprotocol\u002Fwrapped-m-spec","protocol\u002Fwrapped-m-spec",{"title":248,"path":249,"stem":250,"children":251,"page":21},"Resources","\u002Fresources","resources",[252,256,260],{"title":253,"path":254,"stem":255},"Deployments","\u002Fresources\u002Faddresses","resources\u002Faddresses",{"title":257,"path":258,"stem":259},"Audits","\u002Fresources\u002Faudits","resources\u002Faudits",{"title":261,"path":262,"stem":263},"Glossary","\u002Fresources\u002Fglossary","resources\u002Fglossary",{"id":265,"title":70,"body":266,"description":529,"draft":21,"extension":530,"links":531,"meta":532,"navigation":533,"path":71,"seo":534,"stem":72,"__hash__":537},"docs\u002Fapi-reference\u002Fprotocol\u002Foverview.md",{"type":267,"value":268,"toc":521},"minimark",[269,273,278,289,300,304,307,315,320,327,417,420,424,427,432,435,452,455,459,462,473,476,480,483,517],[270,271,272],"p",{},"The Protocol API is a GraphQL API for querying on-chain data: token supplies, holder balances,\nrewards accrual, earner status, and protocol configuration parameters.",[274,275,277],"h2",{"id":276},"endpoint","Endpoint",[279,280,285],"pre",{"className":281,"code":283,"language":284},[282],"language-text","https:\u002F\u002Fprotocol-api.m0.org\u002Fgraphql\n","text",[286,287,283],"code",{"__ignoreMap":288},"",[270,290,291,292,299],{},"An ",[293,294,298],"a",{"href":295,"rel":296},"https:\u002F\u002Fprotocol-api.m0.org\u002Fgraphql",[297],"nofollow","interactive GraphQL playground"," is available at the same\nURL for exploring the schema and testing queries.",[274,301,303],{"id":302},"authentication","Authentication",[270,305,306],{},"The M0 Protocol API requires authentication via API keys to access its endpoint. This ensures that\nonly authorized users can interact with the API and access its data.",[270,308,309,314],{},[293,310,313],{"href":311,"rel":312},"https:\u002F\u002Fwww.m0.org\u002Fcontact-us",[297],"Contact us"," to obtain an API key.",[316,317,319],"h3",{"id":318},"using-api-keys","Using API Keys",[270,321,322,323,326],{},"To authenticate your requests, include the API key in the ",[286,324,325],{},"Authorization"," header of your HTTP\nrequests. For example post with curl:",[279,328,332],{"className":329,"code":330,"language":331,"meta":288,"style":288},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -i \\\n  --request POST \\\n  --header \"Content-Type: application\u002Fjson\" \\\n  --header \"Authorization: ApiKey \u003CYOUR_API_KEY>\" \\\n  --data '{\"query\":\"{ __typename }\"}' \\\n  https:\u002F\u002Fprotocol-api.m0.org\u002Fgraphql\n","sh",[286,333,334,351,362,380,394,411],{"__ignoreMap":288},[335,336,339,343,347],"span",{"class":337,"line":338},"line",1,[335,340,342],{"class":341},"sBMFI","curl",[335,344,346],{"class":345},"sfazB"," -i",[335,348,350],{"class":349},"sTEyZ"," \\\n",[335,352,354,357,360],{"class":337,"line":353},2,[335,355,356],{"class":345},"  --request",[335,358,359],{"class":345}," POST",[335,361,350],{"class":349},[335,363,365,368,372,375,378],{"class":337,"line":364},3,[335,366,367],{"class":345},"  --header",[335,369,371],{"class":370},"sMK4o"," \"",[335,373,374],{"class":345},"Content-Type: application\u002Fjson",[335,376,377],{"class":370},"\"",[335,379,350],{"class":349},[335,381,383,385,387,390,392],{"class":337,"line":382},4,[335,384,367],{"class":345},[335,386,371],{"class":370},[335,388,389],{"class":345},"Authorization: ApiKey \u003CYOUR_API_KEY>",[335,391,377],{"class":370},[335,393,350],{"class":349},[335,395,397,400,403,406,409],{"class":337,"line":396},5,[335,398,399],{"class":345},"  --data",[335,401,402],{"class":370}," '",[335,404,405],{"class":345},"{\"query\":\"{ __typename }\"}",[335,407,408],{"class":370},"'",[335,410,350],{"class":349},[335,412,414],{"class":337,"line":413},6,[335,415,416],{"class":345},"  https:\u002F\u002Fprotocol-api.m0.org\u002Fgraphql\n",[270,418,419],{},"API keys should be kept secret and not exposed in public repositories or client-side code. If you\nbelieve your API key has been compromised, please contact us immediately to revoke the key and\nissue a new one.",[316,421,423],{"id":422},"storing-api-keys-securely","Storing API Keys Securely",[270,425,426],{},"To protect your API key and prevent unauthorized access, follow these best practices:",[428,429,431],"h4",{"id":430},"restrict-access-by-origin-and-ip","Restrict Access by Origin and IP",[270,433,434],{},"Configure your API key to limit where it can be used from:",[436,437,438,446],"ul",{},[439,440,441,445],"li",{},[442,443,444],"strong",{},"IP Allowlisting",": Restrict the API key to specific IP addresses or CIDR ranges that correspond to your backend servers",[439,447,448,451],{},[442,449,450],{},"Origin Restrictions",": If applicable, limit the domains or origins that can make requests using your API key",[270,453,454],{},"Contact us to configure these restrictions for your API key. This adds an additional layer of security, ensuring that even if your key is compromised, it cannot be used from unauthorized locations.",[428,456,458],{"id":457},"use-a-backend-service","Use a Backend Service",[270,460,461],{},"Consider implementing a backend service that:",[436,463,464,467,470],{},[439,465,466],{},"Stores the API key securely in environment variables or a secrets manager",[439,468,469],{},"Acts as a proxy between your frontend and the M0 Protocol API",[439,471,472],{},"Handles authentication on behalf of your users",[270,474,475],{},"This approach ensures that your API key is never transmitted to or accessible from the client.",[274,477,479],{"id":478},"query-recipes","Query Recipes",[270,481,482],{},"Common GraphQL queries are documented as ready-to-use recipes:",[436,484,485,489,493,497,501,505,509,513],{},[439,486,487],{},[293,488,95],{"href":96},[439,490,491],{},[293,492,107],{"href":108},[439,494,495],{},[293,496,103],{"href":104},[439,498,499],{},[293,500,83],{"href":84},[439,502,503],{},[293,504,79],{"href":80},[439,506,507],{},[293,508,87],{"href":88},[439,510,511],{},[293,512,91],{"href":92},[439,514,515],{},[293,516,99],{"href":100},[518,519,520],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":288,"searchDepth":338,"depth":353,"links":522},[523,524,528],{"id":276,"depth":353,"text":277},{"id":302,"depth":353,"text":303,"children":525},[526,527],{"id":318,"depth":364,"text":319},{"id":422,"depth":364,"text":423},{"id":478,"depth":353,"text":479},"Query on-chain M0 protocol data — token supplies, holder balances, yields, and configuration — via GraphQL.","md",null,{},true,{"title":535,"description":536},"M0 Protocol API | On-Chain Data GraphQL","GraphQL API for querying on-chain M0 protocol data: token supplies, holder balances, rewards accrual, earner status, and configuration parameters.","_-MDWevfhk2aamtmwx8GBq4SChImBF91-1OkzVUnd7A",[539,541],{"title":61,"path":62,"stem":63,"description":540,"children":-1},"Generate TypeScript types for the M0 Orchestration API directly from the OpenAPI specification.",{"title":79,"path":80,"stem":81,"description":542,"children":-1},"Retrieve current collateral stats, daily averages, and time-series grouped by remaining term and on-chain tokens."]