[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-meta-api-integration":3,"mdc--x8nzid-key":33,"related-org-meta-api-integration":843,"related-repo-meta-api-integration":1037},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":23,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"api-integration","set up Meta API integrations","Guide a developer through setting up a Meta API integration from scratch — discovers the right APIs, fetches setup guides, authentication requirements, permissions, and code examples. Use when the user wants to build with a specific Meta product (WhatsApp, Instagram, Messenger, Pages, Ads, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"meta","Meta Open Source","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmeta.png","facebook",[13,17,20],{"name":14,"slug":15,"type":16},"Integrations","integrations","tag",{"name":18,"slug":19,"type":16},"Documentation","documentation",{"name":21,"slug":22,"type":16},"API Development","api-development",0,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fagentic-tools","2026-07-14T05:52:01.492409","MIT",[],{"repoUrl":24,"stars":23,"forks":23,"topics":29,"description":30},[],"Agentic tools plugin and skills","https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fagentic-tools\u002Ftree\u002FHEAD\u002Fplugins\u002Fdevtools\u002Fskills\u002Fapi-integration","---\nname: api-integration\ndescription: \"Guide a developer through setting up a Meta API integration from scratch — discovers the right APIs, fetches setup guides, authentication requirements, permissions, and code examples. Use when the user wants to build with a specific Meta product (WhatsApp, Instagram, Messenger, Pages, Ads, etc.).\"\nallowed-tools: mcp__devtools__devtools_discovery, mcp__devtools__devtools_app, mcp__devtools__devtools_app_review, mcp__devtools__devtools_app_list\nlicense: MIT\n---\n\n# API Integration\n\nHelp a developer go from \"I want to integrate with X\" to having everything they need to start writing code.\n\n## Workflow\n\n1. **Identify the integration.** Ask the user what they want to build if not clear. Common integrations:\n   - WhatsApp Business API (send\u002Freceive messages, templates, media)\n   - Instagram Graph API (publish content, read insights, manage comments)\n   - Messenger Platform (chatbots, send API, webhooks)\n   - Pages API (post content, read insights, manage pages)\n   - Marketing API (create campaigns, manage ads, read analytics)\n   - Login with Facebook \u002F Login with Instagram\n   - Facebook Login for Business\n\n2. **Research the integration.** Run multiple searches to build a complete picture. Do NOT stop at one search — layer queries to cover all aspects:\n\n   **Search 1 — Overview and getting started:**\n   - `devtools_discovery` → `search_docs` with the product name + \"getting started\" or \"overview\"\n   - e.g., \"WhatsApp Business API getting started\"\n\n   **Search 2 — Authentication and access tokens:**\n   - `devtools_discovery` → `search_docs` for authentication requirements\n   - e.g., \"WhatsApp Business API access token authentication\"\n\n   **Search 3 — Required permissions and app review:**\n   - `devtools_discovery` → `search_docs` for permissions\n   - e.g., \"WhatsApp Business API permissions\"\n   - Also check the app if an app_id is provided: `devtools_app_review` → `requirements` and `privileges`\n\n   **Search 4 — Core API endpoints:**\n   - `devtools_discovery` → `search_docs` for the specific operations the user needs\n   - e.g., \"WhatsApp send message API\" or \"Instagram publish media API\"\n\n   **Search 5 — Webhooks (if applicable):**\n   - `devtools_discovery` → `search_docs` for webhook setup\n   - e.g., \"WhatsApp webhooks setup\"\n\n   **Search 6 — Rate limits and quotas:**\n   - `devtools_discovery` → `search_docs` for product-specific rate limits and throughput tiers\n   - e.g., \"WhatsApp Business API rate limits messaging tiers\" or \"Instagram API rate limits\"\n\n   **Search 7 — Code examples and SDKs:**\n   - `devtools_discovery` → `search_docs` for SDK, client library, or code samples\n   - Try product-specific queries first: \"WhatsApp Business Platform Node.js\" or \"Instagram Graph API Python\"\n   - If no SDK results, search for \"Graph API client library\" or the product's quickstart guide\n   - Fall back to constructing examples from the endpoint documentation in Search 4\n\n   Run searches 1-5 in parallel for speed. Run 6-7 after if needed. Use `max_results` of 10 and pagination via `offset` to get comprehensive results. Refine queries if initial results are too broad or miss key topics.\n\n3. **Check app readiness** (if the user has an app):\n   - If they referred to the app by **name** (or aren't sure of the ID), resolve it to an `app_id` first via `devtools_app_list` (action `list`); if ambiguous, show the candidates (name, ID, viewer role) and ask them to pick\n   - `devtools_app` → `basic_settings` to confirm app type and status\n   - `devtools_app_review` → `privileges` to see what's already approved\n   - `devtools_app_review` → `requirements` to see what's needed\n\n4. **Synthesize an integration guide.** Extract the key information from search results — do NOT dump raw results. Organize findings into an actionable document:\n\n   ### Guide Format\n\n   **Overview**\n   - What the API does and what the user can build with it\n   - Link to the official product documentation\n\n   **Prerequisites**\n   - Meta Developer account\n   - App type required (Business, Consumer, etc.)\n   - Any product-specific prerequisites (e.g., WhatsApp Business Account, Facebook Page)\n\n   **Authentication**\n   - Token type needed (User, Page, System User, etc.)\n   - How to generate tokens\n   - Token permissions\u002Fscopes required\n   - Token expiration and refresh flow\n\n   **Required Permissions**\n   - List each permission needed and what it grants\n   - Which permissions need App Review vs. are auto-approved\n   - If app_id provided: which are already granted vs. still needed\n\n   **Setup Steps**\n   - Step-by-step from zero to first API call\n   - Include webhook setup if the integration requires it\n\n   **Key API Endpoints**\n   - Each endpoint with: method, URL pattern, key parameters, example response\n   - Focused on what the user asked for, not an exhaustive list\n\n   **Code Example**\n   - A working starter example in the user's preferred language\n   - Include authentication, a basic API call, and error handling\n   - Use the official SDK if one exists, raw HTTP (curl\u002Ffetch) if not\n   - Include webhook handler code if the integration is webhook-based\n\n   **Rate Limits and Quotas**\n   - Product-specific rate limits and throughput tiers (e.g., WhatsApp messaging tiers: 1K\u002F10K\u002F100K\u002Funlimited)\n   - Per-endpoint rate limits if applicable\n   - Suggest `\u002Fapi-health` for ongoing monitoring\n\n   **Common Pitfalls**\n   - Product-specific gotchas the docs call out\n   - Permission mistakes, token type confusion, webhook verification issues\n\n5. **Offer next steps:**\n   - `\u002Fapp-review-prep` if permissions need App Review\n   - `\u002Fwebhook-setup` if the integration uses webhooks\n   - `\u002Fapi-health` to monitor usage once live\n\n## Tips\n\n- Always search multiple times with different queries. A single search rarely covers authentication + permissions + endpoints + examples.\n- Prefer the user's stated language\u002Fframework for code examples. Default to Node.js\u002FJavaScript if not specified.\n- If the user has an app_id, cross-reference their current permissions against what the integration requires — this saves them time.\n- Some integrations (WhatsApp, Instagram) require a Business-type app. Call this out early if the user's app is the wrong type.\n- Webhook-based integrations (Messenger, WhatsApp) won't work without a callback URL. Suggest `\u002Fwebhook-setup` proactively.\n",{"data":34,"body":36},{"name":4,"description":6,"allowed-tools":35,"license":26},"mcp__devtools__devtools_discovery, mcp__devtools__devtools_app, mcp__devtools__devtools_app_review, mcp__devtools__devtools_app_list",{"type":37,"children":38},"root",[39,47,53,60,802,808],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","API Integration",{"type":40,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"Help a developer go from \"I want to integrate with X\" to having everything they need to start writing code.",{"type":40,"tag":54,"props":55,"children":57},"h2",{"id":56},"workflow",[58],{"type":45,"value":59},"Workflow",{"type":40,"tag":61,"props":62,"children":63},"ol",{},[64,115,411,510,759],{"type":40,"tag":65,"props":66,"children":67},"li",{},[68,74,76],{"type":40,"tag":69,"props":70,"children":71},"strong",{},[72],{"type":45,"value":73},"Identify the integration.",{"type":45,"value":75}," Ask the user what they want to build if not clear. Common integrations:",{"type":40,"tag":77,"props":78,"children":79},"ul",{},[80,85,90,95,100,105,110],{"type":40,"tag":65,"props":81,"children":82},{},[83],{"type":45,"value":84},"WhatsApp Business API (send\u002Freceive messages, templates, media)",{"type":40,"tag":65,"props":86,"children":87},{},[88],{"type":45,"value":89},"Instagram Graph API (publish content, read insights, manage comments)",{"type":40,"tag":65,"props":91,"children":92},{},[93],{"type":45,"value":94},"Messenger Platform (chatbots, send API, webhooks)",{"type":40,"tag":65,"props":96,"children":97},{},[98],{"type":45,"value":99},"Pages API (post content, read insights, manage pages)",{"type":40,"tag":65,"props":101,"children":102},{},[103],{"type":45,"value":104},"Marketing API (create campaigns, manage ads, read analytics)",{"type":40,"tag":65,"props":106,"children":107},{},[108],{"type":45,"value":109},"Login with Facebook \u002F Login with Instagram",{"type":40,"tag":65,"props":111,"children":112},{},[113],{"type":45,"value":114},"Facebook Login for Business",{"type":40,"tag":65,"props":116,"children":117},{},[118,123,125,129,134,162,165,170,194,197,202,252,255,260,284,287,292,316,319,324,348,351,356,390,393,395,401,403,409],{"type":40,"tag":69,"props":119,"children":120},{},[121],{"type":45,"value":122},"Research the integration.",{"type":45,"value":124}," Run multiple searches to build a complete picture. Do NOT stop at one search — layer queries to cover all aspects:",{"type":40,"tag":126,"props":127,"children":128},"br",{},[],{"type":40,"tag":69,"props":130,"children":131},{},[132],{"type":45,"value":133},"Search 1 — Overview and getting started:",{"type":40,"tag":77,"props":135,"children":136},{},[137,157],{"type":40,"tag":65,"props":138,"children":139},{},[140,147,149,155],{"type":40,"tag":141,"props":142,"children":144},"code",{"className":143},[],[145],{"type":45,"value":146},"devtools_discovery",{"type":45,"value":148}," → ",{"type":40,"tag":141,"props":150,"children":152},{"className":151},[],[153],{"type":45,"value":154},"search_docs",{"type":45,"value":156}," with the product name + \"getting started\" or \"overview\"",{"type":40,"tag":65,"props":158,"children":159},{},[160],{"type":45,"value":161},"e.g., \"WhatsApp Business API getting started\"",{"type":40,"tag":126,"props":163,"children":164},{},[],{"type":40,"tag":69,"props":166,"children":167},{},[168],{"type":45,"value":169},"Search 2 — Authentication and access tokens:",{"type":40,"tag":77,"props":171,"children":172},{},[173,189],{"type":40,"tag":65,"props":174,"children":175},{},[176,181,182,187],{"type":40,"tag":141,"props":177,"children":179},{"className":178},[],[180],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":183,"children":185},{"className":184},[],[186],{"type":45,"value":154},{"type":45,"value":188}," for authentication requirements",{"type":40,"tag":65,"props":190,"children":191},{},[192],{"type":45,"value":193},"e.g., \"WhatsApp Business API access token authentication\"",{"type":40,"tag":126,"props":195,"children":196},{},[],{"type":40,"tag":69,"props":198,"children":199},{},[200],{"type":45,"value":201},"Search 3 — Required permissions and app review:",{"type":40,"tag":77,"props":203,"children":204},{},[205,221,226],{"type":40,"tag":65,"props":206,"children":207},{},[208,213,214,219],{"type":40,"tag":141,"props":209,"children":211},{"className":210},[],[212],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":215,"children":217},{"className":216},[],[218],{"type":45,"value":154},{"type":45,"value":220}," for permissions",{"type":40,"tag":65,"props":222,"children":223},{},[224],{"type":45,"value":225},"e.g., \"WhatsApp Business API permissions\"",{"type":40,"tag":65,"props":227,"children":228},{},[229,231,237,238,244,246],{"type":45,"value":230},"Also check the app if an app_id is provided: ",{"type":40,"tag":141,"props":232,"children":234},{"className":233},[],[235],{"type":45,"value":236},"devtools_app_review",{"type":45,"value":148},{"type":40,"tag":141,"props":239,"children":241},{"className":240},[],[242],{"type":45,"value":243},"requirements",{"type":45,"value":245}," and ",{"type":40,"tag":141,"props":247,"children":249},{"className":248},[],[250],{"type":45,"value":251},"privileges",{"type":40,"tag":126,"props":253,"children":254},{},[],{"type":40,"tag":69,"props":256,"children":257},{},[258],{"type":45,"value":259},"Search 4 — Core API endpoints:",{"type":40,"tag":77,"props":261,"children":262},{},[263,279],{"type":40,"tag":65,"props":264,"children":265},{},[266,271,272,277],{"type":40,"tag":141,"props":267,"children":269},{"className":268},[],[270],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":273,"children":275},{"className":274},[],[276],{"type":45,"value":154},{"type":45,"value":278}," for the specific operations the user needs",{"type":40,"tag":65,"props":280,"children":281},{},[282],{"type":45,"value":283},"e.g., \"WhatsApp send message API\" or \"Instagram publish media API\"",{"type":40,"tag":126,"props":285,"children":286},{},[],{"type":40,"tag":69,"props":288,"children":289},{},[290],{"type":45,"value":291},"Search 5 — Webhooks (if applicable):",{"type":40,"tag":77,"props":293,"children":294},{},[295,311],{"type":40,"tag":65,"props":296,"children":297},{},[298,303,304,309],{"type":40,"tag":141,"props":299,"children":301},{"className":300},[],[302],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":305,"children":307},{"className":306},[],[308],{"type":45,"value":154},{"type":45,"value":310}," for webhook setup",{"type":40,"tag":65,"props":312,"children":313},{},[314],{"type":45,"value":315},"e.g., \"WhatsApp webhooks setup\"",{"type":40,"tag":126,"props":317,"children":318},{},[],{"type":40,"tag":69,"props":320,"children":321},{},[322],{"type":45,"value":323},"Search 6 — Rate limits and quotas:",{"type":40,"tag":77,"props":325,"children":326},{},[327,343],{"type":40,"tag":65,"props":328,"children":329},{},[330,335,336,341],{"type":40,"tag":141,"props":331,"children":333},{"className":332},[],[334],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":337,"children":339},{"className":338},[],[340],{"type":45,"value":154},{"type":45,"value":342}," for product-specific rate limits and throughput tiers",{"type":40,"tag":65,"props":344,"children":345},{},[346],{"type":45,"value":347},"e.g., \"WhatsApp Business API rate limits messaging tiers\" or \"Instagram API rate limits\"",{"type":40,"tag":126,"props":349,"children":350},{},[],{"type":40,"tag":69,"props":352,"children":353},{},[354],{"type":45,"value":355},"Search 7 — Code examples and SDKs:",{"type":40,"tag":77,"props":357,"children":358},{},[359,375,380,385],{"type":40,"tag":65,"props":360,"children":361},{},[362,367,368,373],{"type":40,"tag":141,"props":363,"children":365},{"className":364},[],[366],{"type":45,"value":146},{"type":45,"value":148},{"type":40,"tag":141,"props":369,"children":371},{"className":370},[],[372],{"type":45,"value":154},{"type":45,"value":374}," for SDK, client library, or code samples",{"type":40,"tag":65,"props":376,"children":377},{},[378],{"type":45,"value":379},"Try product-specific queries first: \"WhatsApp Business Platform Node.js\" or \"Instagram Graph API Python\"",{"type":40,"tag":65,"props":381,"children":382},{},[383],{"type":45,"value":384},"If no SDK results, search for \"Graph API client library\" or the product's quickstart guide",{"type":40,"tag":65,"props":386,"children":387},{},[388],{"type":45,"value":389},"Fall back to constructing examples from the endpoint documentation in Search 4",{"type":40,"tag":126,"props":391,"children":392},{},[],{"type":45,"value":394},"Run searches 1-5 in parallel for speed. Run 6-7 after if needed. Use ",{"type":40,"tag":141,"props":396,"children":398},{"className":397},[],[399],{"type":45,"value":400},"max_results",{"type":45,"value":402}," of 10 and pagination via ",{"type":40,"tag":141,"props":404,"children":406},{"className":405},[],[407],{"type":45,"value":408},"offset",{"type":45,"value":410}," to get comprehensive results. Refine queries if initial results are too broad or miss key topics.",{"type":40,"tag":65,"props":412,"children":413},{},[414,419,421],{"type":40,"tag":69,"props":415,"children":416},{},[417],{"type":45,"value":418},"Check app readiness",{"type":45,"value":420}," (if the user has an app):",{"type":40,"tag":77,"props":422,"children":423},{},[424,460,478,494],{"type":40,"tag":65,"props":425,"children":426},{},[427,429,434,436,442,444,450,452,458],{"type":45,"value":428},"If they referred to the app by ",{"type":40,"tag":69,"props":430,"children":431},{},[432],{"type":45,"value":433},"name",{"type":45,"value":435}," (or aren't sure of the ID), resolve it to an ",{"type":40,"tag":141,"props":437,"children":439},{"className":438},[],[440],{"type":45,"value":441},"app_id",{"type":45,"value":443}," first via ",{"type":40,"tag":141,"props":445,"children":447},{"className":446},[],[448],{"type":45,"value":449},"devtools_app_list",{"type":45,"value":451}," (action ",{"type":40,"tag":141,"props":453,"children":455},{"className":454},[],[456],{"type":45,"value":457},"list",{"type":45,"value":459},"); if ambiguous, show the candidates (name, ID, viewer role) and ask them to pick",{"type":40,"tag":65,"props":461,"children":462},{},[463,469,470,476],{"type":40,"tag":141,"props":464,"children":466},{"className":465},[],[467],{"type":45,"value":468},"devtools_app",{"type":45,"value":148},{"type":40,"tag":141,"props":471,"children":473},{"className":472},[],[474],{"type":45,"value":475},"basic_settings",{"type":45,"value":477}," to confirm app type and status",{"type":40,"tag":65,"props":479,"children":480},{},[481,486,487,492],{"type":40,"tag":141,"props":482,"children":484},{"className":483},[],[485],{"type":45,"value":236},{"type":45,"value":148},{"type":40,"tag":141,"props":488,"children":490},{"className":489},[],[491],{"type":45,"value":251},{"type":45,"value":493}," to see what's already approved",{"type":40,"tag":65,"props":495,"children":496},{},[497,502,503,508],{"type":40,"tag":141,"props":498,"children":500},{"className":499},[],[501],{"type":45,"value":236},{"type":45,"value":148},{"type":40,"tag":141,"props":504,"children":506},{"className":505},[],[507],{"type":45,"value":243},{"type":45,"value":509}," to see what's needed",{"type":40,"tag":65,"props":511,"children":512},{},[513,518,520,527,530,535,548,551,556,574,577,582,605,608,613,631,634,639,652,655,660,673,676,681,704,707,712,738,741,746],{"type":40,"tag":69,"props":514,"children":515},{},[516],{"type":45,"value":517},"Synthesize an integration guide.",{"type":45,"value":519}," Extract the key information from search results — do NOT dump raw results. Organize findings into an actionable document:",{"type":40,"tag":521,"props":522,"children":524},"h3",{"id":523},"guide-format",[525],{"type":45,"value":526},"Guide Format",{"type":40,"tag":126,"props":528,"children":529},{},[],{"type":40,"tag":69,"props":531,"children":532},{},[533],{"type":45,"value":534},"Overview",{"type":40,"tag":77,"props":536,"children":537},{},[538,543],{"type":40,"tag":65,"props":539,"children":540},{},[541],{"type":45,"value":542},"What the API does and what the user can build with it",{"type":40,"tag":65,"props":544,"children":545},{},[546],{"type":45,"value":547},"Link to the official product documentation",{"type":40,"tag":126,"props":549,"children":550},{},[],{"type":40,"tag":69,"props":552,"children":553},{},[554],{"type":45,"value":555},"Prerequisites",{"type":40,"tag":77,"props":557,"children":558},{},[559,564,569],{"type":40,"tag":65,"props":560,"children":561},{},[562],{"type":45,"value":563},"Meta Developer account",{"type":40,"tag":65,"props":565,"children":566},{},[567],{"type":45,"value":568},"App type required (Business, Consumer, etc.)",{"type":40,"tag":65,"props":570,"children":571},{},[572],{"type":45,"value":573},"Any product-specific prerequisites (e.g., WhatsApp Business Account, Facebook Page)",{"type":40,"tag":126,"props":575,"children":576},{},[],{"type":40,"tag":69,"props":578,"children":579},{},[580],{"type":45,"value":581},"Authentication",{"type":40,"tag":77,"props":583,"children":584},{},[585,590,595,600],{"type":40,"tag":65,"props":586,"children":587},{},[588],{"type":45,"value":589},"Token type needed (User, Page, System User, etc.)",{"type":40,"tag":65,"props":591,"children":592},{},[593],{"type":45,"value":594},"How to generate tokens",{"type":40,"tag":65,"props":596,"children":597},{},[598],{"type":45,"value":599},"Token permissions\u002Fscopes required",{"type":40,"tag":65,"props":601,"children":602},{},[603],{"type":45,"value":604},"Token expiration and refresh flow",{"type":40,"tag":126,"props":606,"children":607},{},[],{"type":40,"tag":69,"props":609,"children":610},{},[611],{"type":45,"value":612},"Required Permissions",{"type":40,"tag":77,"props":614,"children":615},{},[616,621,626],{"type":40,"tag":65,"props":617,"children":618},{},[619],{"type":45,"value":620},"List each permission needed and what it grants",{"type":40,"tag":65,"props":622,"children":623},{},[624],{"type":45,"value":625},"Which permissions need App Review vs. are auto-approved",{"type":40,"tag":65,"props":627,"children":628},{},[629],{"type":45,"value":630},"If app_id provided: which are already granted vs. still needed",{"type":40,"tag":126,"props":632,"children":633},{},[],{"type":40,"tag":69,"props":635,"children":636},{},[637],{"type":45,"value":638},"Setup Steps",{"type":40,"tag":77,"props":640,"children":641},{},[642,647],{"type":40,"tag":65,"props":643,"children":644},{},[645],{"type":45,"value":646},"Step-by-step from zero to first API call",{"type":40,"tag":65,"props":648,"children":649},{},[650],{"type":45,"value":651},"Include webhook setup if the integration requires it",{"type":40,"tag":126,"props":653,"children":654},{},[],{"type":40,"tag":69,"props":656,"children":657},{},[658],{"type":45,"value":659},"Key API Endpoints",{"type":40,"tag":77,"props":661,"children":662},{},[663,668],{"type":40,"tag":65,"props":664,"children":665},{},[666],{"type":45,"value":667},"Each endpoint with: method, URL pattern, key parameters, example response",{"type":40,"tag":65,"props":669,"children":670},{},[671],{"type":45,"value":672},"Focused on what the user asked for, not an exhaustive list",{"type":40,"tag":126,"props":674,"children":675},{},[],{"type":40,"tag":69,"props":677,"children":678},{},[679],{"type":45,"value":680},"Code Example",{"type":40,"tag":77,"props":682,"children":683},{},[684,689,694,699],{"type":40,"tag":65,"props":685,"children":686},{},[687],{"type":45,"value":688},"A working starter example in the user's preferred language",{"type":40,"tag":65,"props":690,"children":691},{},[692],{"type":45,"value":693},"Include authentication, a basic API call, and error handling",{"type":40,"tag":65,"props":695,"children":696},{},[697],{"type":45,"value":698},"Use the official SDK if one exists, raw HTTP (curl\u002Ffetch) if not",{"type":40,"tag":65,"props":700,"children":701},{},[702],{"type":45,"value":703},"Include webhook handler code if the integration is webhook-based",{"type":40,"tag":126,"props":705,"children":706},{},[],{"type":40,"tag":69,"props":708,"children":709},{},[710],{"type":45,"value":711},"Rate Limits and Quotas",{"type":40,"tag":77,"props":713,"children":714},{},[715,720,725],{"type":40,"tag":65,"props":716,"children":717},{},[718],{"type":45,"value":719},"Product-specific rate limits and throughput tiers (e.g., WhatsApp messaging tiers: 1K\u002F10K\u002F100K\u002Funlimited)",{"type":40,"tag":65,"props":721,"children":722},{},[723],{"type":45,"value":724},"Per-endpoint rate limits if applicable",{"type":40,"tag":65,"props":726,"children":727},{},[728,730,736],{"type":45,"value":729},"Suggest ",{"type":40,"tag":141,"props":731,"children":733},{"className":732},[],[734],{"type":45,"value":735},"\u002Fapi-health",{"type":45,"value":737}," for ongoing monitoring",{"type":40,"tag":126,"props":739,"children":740},{},[],{"type":40,"tag":69,"props":742,"children":743},{},[744],{"type":45,"value":745},"Common Pitfalls",{"type":40,"tag":77,"props":747,"children":748},{},[749,754],{"type":40,"tag":65,"props":750,"children":751},{},[752],{"type":45,"value":753},"Product-specific gotchas the docs call out",{"type":40,"tag":65,"props":755,"children":756},{},[757],{"type":45,"value":758},"Permission mistakes, token type confusion, webhook verification issues",{"type":40,"tag":65,"props":760,"children":761},{},[762,767],{"type":40,"tag":69,"props":763,"children":764},{},[765],{"type":45,"value":766},"Offer next steps:",{"type":40,"tag":77,"props":768,"children":769},{},[770,781,792],{"type":40,"tag":65,"props":771,"children":772},{},[773,779],{"type":40,"tag":141,"props":774,"children":776},{"className":775},[],[777],{"type":45,"value":778},"\u002Fapp-review-prep",{"type":45,"value":780}," if permissions need App Review",{"type":40,"tag":65,"props":782,"children":783},{},[784,790],{"type":40,"tag":141,"props":785,"children":787},{"className":786},[],[788],{"type":45,"value":789},"\u002Fwebhook-setup",{"type":45,"value":791}," if the integration uses webhooks",{"type":40,"tag":65,"props":793,"children":794},{},[795,800],{"type":40,"tag":141,"props":796,"children":798},{"className":797},[],[799],{"type":45,"value":735},{"type":45,"value":801}," to monitor usage once live",{"type":40,"tag":54,"props":803,"children":805},{"id":804},"tips",[806],{"type":45,"value":807},"Tips",{"type":40,"tag":77,"props":809,"children":810},{},[811,816,821,826,831],{"type":40,"tag":65,"props":812,"children":813},{},[814],{"type":45,"value":815},"Always search multiple times with different queries. A single search rarely covers authentication + permissions + endpoints + examples.",{"type":40,"tag":65,"props":817,"children":818},{},[819],{"type":45,"value":820},"Prefer the user's stated language\u002Fframework for code examples. Default to Node.js\u002FJavaScript if not specified.",{"type":40,"tag":65,"props":822,"children":823},{},[824],{"type":45,"value":825},"If the user has an app_id, cross-reference their current permissions against what the integration requires — this saves them time.",{"type":40,"tag":65,"props":827,"children":828},{},[829],{"type":45,"value":830},"Some integrations (WhatsApp, Instagram) require a Business-type app. Call this out early if the user's app is the wrong type.",{"type":40,"tag":65,"props":832,"children":833},{},[834,836,841],{"type":45,"value":835},"Webhook-based integrations (Messenger, WhatsApp) won't work without a callback URL. Suggest ",{"type":40,"tag":141,"props":837,"children":839},{"className":838},[],[840],{"type":45,"value":789},{"type":45,"value":842}," proactively.",{"items":844,"total":1036},[845,869,883,904,925,942,953,973,986,1001,1013,1023],{"slug":846,"name":846,"fn":847,"description":848,"org":849,"tags":850,"stars":866,"repoUrl":867,"updatedAt":868},"relay-best-practices","write idiomatic Relay code","Best practices for writing idiomatic Relay code. ALWAYS use this skill when writing or modifying React components that use Relay for data fetching. Covers fragments, queries, mutations, pagination, and common anti-patterns. Use when you see `useFragment`, `useLazyLoadQuery`, `usePreloadedQuery`, `useMutation`, `usePaginationFragment`, `graphql` template literals, `react-relay` imports, or `__generated__\u002F*.graphql` files. Also use when asked to explain Relay concepts, debug Relay issues, or review Relay code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[851,854,857,860,863],{"name":852,"slug":853,"type":16},"Engineering","engineering",{"name":855,"slug":856,"type":16},"Frontend","frontend",{"name":858,"slug":859,"type":16},"GraphQL","graphql",{"name":861,"slug":862,"type":16},"React","react",{"name":864,"slug":865,"type":16},"Relay","relay",18950,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Frelay","2026-04-22T04:58:15.370563",{"slug":870,"name":870,"fn":871,"description":872,"org":873,"tags":874,"stars":866,"repoUrl":867,"updatedAt":882},"relay-performance","optimize Relay application performance","Performance best practices for Relay applications. Use when optimizing data fetching, reducing re-renders, configuring caching, or improving time to first meaningful paint. Covers query placement, @defer, pagination, fetch policies, garbage collection, fragment granularity, and server-side filtering. Companion to the relay-best-practices skill which covers correctness and architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[875,876,877,880,881],{"name":855,"slug":856,"type":16},{"name":858,"slug":859,"type":16},{"name":878,"slug":879,"type":16},"Performance","performance",{"name":861,"slug":862,"type":16},{"name":864,"slug":865,"type":16},"2026-06-10T07:30:28.726513",{"slug":884,"name":884,"fn":885,"description":886,"org":887,"tags":888,"stars":901,"repoUrl":902,"updatedAt":903},"add-shape-types-to-torch-model","annotate PyTorch models with tensor shapes","Port a PyTorch model to use pyrefly's tensor shape type system (Tensor[[B, C, H, W]], Int[T]). Use this skill whenever the user wants to add shape annotations to a PyTorch model, type a model with tensor dimensions, port a model to use shape tracking, or annotate model forward methods with tensor shapes. Also use when the user mentions tensor shape ports, Int types for PyTorch, or pyrefly shape checking on a model file. Invoke BEFORE starting any model port — the skill's gated workflow prevents common failure modes.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[889,892,895,898],{"name":890,"slug":891,"type":16},"Data Modeling","data-modeling",{"name":893,"slug":894,"type":16},"Deep Learning","deep-learning",{"name":896,"slug":897,"type":16},"Python","python",{"name":899,"slug":900,"type":16},"PyTorch","pytorch",6833,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpyrefly","2026-07-18T05:12:08.515952",{"slug":905,"name":905,"fn":906,"description":907,"org":908,"tags":909,"stars":922,"repoUrl":923,"updatedAt":924},"camera-streaming","configure camera streaming and photo capture","Stream, video frames, photo capture, resolution\u002Fframe rate configuration",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[910,913,916,919],{"name":911,"slug":912,"type":16},"Camera","camera",{"name":914,"slug":915,"type":16},"Hardware","hardware",{"name":917,"slug":918,"type":16},"iOS","ios",{"name":920,"slug":921,"type":16},"Video","video",488,"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios","2026-05-15T06:14:43.555881",{"slug":926,"name":926,"fn":927,"description":928,"org":929,"tags":930,"stars":922,"repoUrl":923,"updatedAt":941},"dat-conventions","develop iOS applications with DAT SDK","Swift patterns, async\u002Fawait, naming conventions, key types for DAT SDK iOS development",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[931,932,935,938],{"name":917,"slug":918,"type":16},{"name":933,"slug":934,"type":16},"Mobile","mobile",{"name":936,"slug":937,"type":16},"SDK","sdk",{"name":939,"slug":940,"type":16},"Swift","swift","2026-05-15T06:14:42.334435",{"slug":943,"name":943,"fn":944,"description":945,"org":946,"tags":947,"stars":922,"repoUrl":923,"updatedAt":952},"debugging","debug wearable device software","Common issues, Developer Mode, version compatibility, state machine diagnosis",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[948,950,951],{"name":949,"slug":943,"type":16},"Debugging",{"name":852,"slug":853,"type":16},{"name":917,"slug":918,"type":16},"2026-05-15T06:14:38.626606",{"slug":954,"name":954,"fn":955,"description":956,"org":957,"tags":958,"stars":922,"repoUrl":923,"updatedAt":972},"display-access","manage display capabilities on wearable devices","Display capability setup, display-capable device selection, UI DSL, icons, buttons, images, and video playback",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[959,962,965,968,971],{"name":960,"slug":961,"type":16},"Design","design",{"name":963,"slug":964,"type":16},"Images","images",{"name":966,"slug":967,"type":16},"Interaction","interaction",{"name":969,"slug":970,"type":16},"UI Components","ui-components",{"name":920,"slug":921,"type":16},"2026-05-15T06:14:39.844502",{"slug":974,"name":974,"fn":975,"description":976,"org":977,"tags":978,"stars":922,"repoUrl":923,"updatedAt":985},"getting-started","set up Meta wearable SDK integration","SDK setup, Swift Package Manager integration, Info.plist configuration, and first connection to Meta glasses",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[979,982,983,984],{"name":980,"slug":981,"type":16},"Configuration","configuration",{"name":917,"slug":918,"type":16},{"name":936,"slug":937,"type":16},{"name":939,"slug":940,"type":16},"2026-05-15T06:14:41.086639",{"slug":987,"name":987,"fn":988,"description":989,"org":990,"tags":991,"stars":922,"repoUrl":923,"updatedAt":1000},"mockdevice-testing","test wearable apps with mock devices","MockDeviceKit for testing without physical glasses hardware",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[992,993,994,997],{"name":917,"slug":918,"type":16},{"name":933,"slug":934,"type":16},{"name":995,"slug":996,"type":16},"QA","qa",{"name":998,"slug":999,"type":16},"Testing","testing","2026-05-15T06:14:37.406692",{"slug":1002,"name":1002,"fn":1003,"description":1004,"org":1005,"tags":1006,"stars":922,"repoUrl":923,"updatedAt":1012},"permissions-registration","register apps with Meta AI","App registration with Meta AI, camera permission flows",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1007,1008,1009],{"name":911,"slug":912,"type":16},{"name":917,"slug":918,"type":16},{"name":1010,"slug":1011,"type":16},"Permissions","permissions","2026-05-15T06:14:46.030253",{"slug":1014,"name":1014,"fn":1015,"description":1016,"org":1017,"tags":1018,"stars":922,"repoUrl":923,"updatedAt":1022},"sample-app-guide","build wearable apps with camera streaming","Building a complete DAT app with camera streaming and photo capture",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1019,1020,1021],{"name":911,"slug":912,"type":16},{"name":917,"slug":918,"type":16},{"name":933,"slug":934,"type":16},"2026-05-15T06:14:36.185947",{"slug":1024,"name":1024,"fn":1025,"description":1026,"org":1027,"tags":1028,"stars":922,"repoUrl":923,"updatedAt":1035},"session-lifecycle","monitor device session lifecycle states","Device session states, pause\u002Fresume, availability monitoring",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1029,1030,1031,1034],{"name":917,"slug":918,"type":16},{"name":933,"slug":934,"type":16},{"name":1032,"slug":1033,"type":16},"Monitoring","monitoring",{"name":878,"slug":879,"type":16},"2026-05-15T06:14:44.790925",27,{"items":1038,"total":1127},[1039,1051,1057,1074,1088,1101,1113],{"slug":1040,"name":1040,"fn":1041,"description":1042,"org":1043,"tags":1044,"stars":23,"repoUrl":24,"updatedAt":1050},"api-health","monitor API health for Meta apps","Monitor API health for a Meta app — check rate limits, call volume, and API deprecations. Use whenever a user asks whether their app is being throttled, is near its rate limits, how much of its call volume or quota is being used, or about deprecated Graph API versions. Prefer this skill over calling devtools_api_usage directly — it resolves the app, pulls rate limits, call volume, and deprecations together, and applies the warning\u002Fthrottle thresholds and standard report format that ad-hoc tool calls miss.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1045,1046,1047],{"name":21,"slug":22,"type":16},{"name":1032,"slug":1033,"type":16},{"name":1048,"slug":1049,"type":16},"Observability","observability","2026-07-31T05:52:25.572894",{"slug":4,"name":4,"fn":5,"description":6,"org":1052,"tags":1053,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1054,1055,1056],{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":1058,"name":1058,"fn":1059,"description":1060,"org":1061,"tags":1062,"stars":23,"repoUrl":24,"updatedAt":1073},"app-health-check","audit Meta app health and compliance","Run a comprehensive health check on a Meta app — audits settings, security, compliance, app review status, rate limits, and API deprecations in one pass. Use when you want a full picture of an app's current state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1063,1066,1069,1070],{"name":1064,"slug":1065,"type":16},"Audit","audit",{"name":1067,"slug":1068,"type":16},"Compliance","compliance",{"name":1048,"slug":1049,"type":16},{"name":1071,"slug":1072,"type":16},"Security","security","2026-07-14T05:52:02.758097",{"slug":1075,"name":1075,"fn":1076,"description":1077,"org":1078,"tags":1079,"stars":23,"repoUrl":24,"updatedAt":1087},"app-review-prep","prepare Meta apps for App Review","Prepare a Meta app for App Review — checks current status, outstanding requirements, granted privileges, and submission history. Use before submitting an app for review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1080,1081,1084],{"name":1067,"slug":1068,"type":16},{"name":1082,"slug":1083,"type":16},"Deployment","deployment",{"name":1085,"slug":1086,"type":16},"Operations","operations","2026-07-14T05:52:00.233172",{"slug":1089,"name":1089,"fn":1090,"description":1091,"org":1092,"tags":1093,"stars":23,"repoUrl":24,"updatedAt":1100},"compliance-check","check compliance status for Meta apps","Check compliance status for a Meta app — surfaces open required actions, active violations, and recommendations with remediation guidance. Use to audit compliance posture or resolve compliance blockers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1094,1095,1096,1099],{"name":1064,"slug":1065,"type":16},{"name":1067,"slug":1068,"type":16},{"name":1097,"slug":1098,"type":16},"Regulatory Compliance","regulatory-compliance",{"name":1071,"slug":1072,"type":16},"2026-07-14T05:52:04.015719",{"slug":1102,"name":1102,"fn":1103,"description":1104,"org":1105,"tags":1106,"stars":23,"repoUrl":24,"updatedAt":1112},"debug-webhooks","troubleshoot Meta app webhooks","Troubleshoot webhook issues for a Meta app — inspect active subscriptions, identify misconfiguration, and send test payloads to verify delivery. Use when webhooks aren't working as expected.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1107,1108,1109],{"name":21,"slug":22,"type":16},{"name":949,"slug":943,"type":16},{"name":1110,"slug":1111,"type":16},"Webhooks","webhooks","2026-07-21T05:38:38.458938",{"slug":1114,"name":1114,"fn":1115,"description":1116,"org":1117,"tags":1118,"stars":23,"repoUrl":24,"updatedAt":1126},"search-docs","search Meta developer documentation","Search Meta developer documentation for API guides, references, and tutorials. Use when looking up how a Meta API works, finding integration guides, or exploring platform capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1119,1120,1123],{"name":18,"slug":19,"type":16},{"name":1121,"slug":1122,"type":16},"Reference","reference",{"name":1124,"slug":1125,"type":16},"Search","search","2026-07-14T05:51:56.473063",8]