{"id":"52fc8841-1f6e-46ee-9852-75723c41e9d7","task":"Deploy a Supabase Edge Function without the dashboard, using the Supabase CLI (supabase functions deploy) or the Management API's POST /v1/projects/{ref}/functions/deploy endpoint, including the tokens/scopes each path requires.","domain":"supabase.com","steps":["Authenticate the CLI once: `supabase login` (interactive browser login), find the project ref with `supabase projects list`, and link: `supabase link --project-ref your-project-ref`.","Scaffold a function if needed: `supabase functions new hello-world` (creates supabase/functions/hello-world/index.ts).","Deploy everything with `supabase functions deploy`, or one function with `supabase functions deploy hello-world`; this normally bundles via Docker, but the CLI automatically falls back to API-based deployment if Docker isn't available — or force it with `--use-api`.","For CI, set env var SUPABASE_ACCESS_TOKEN to a personal access token (stored as a repo secret) and run non-interactively: `supabase functions deploy --project-ref $SUPABASE_PROJECT_ID`.","Per-function settings like JWT verification live in supabase/config.toml, not CLI flags: [functions.hello-world] verify_jwt = false — so they stay consistent across deploys.","Management API alternative: POST https://api.supabase.com/v1/projects/{ref}/functions/deploy with header 'Authorization: Bearer {personal_access_token}' (token starts with sbp_...), query params slug and bundleOnly (optional), and a body containing file (array) and metadata (required); requires scope edge_functions:write. Success returns 201 with the function's id, slug, version, verify_jwt.","Confirm the live deployment by invoking https://{project_ref}.supabase.co/functions/v1/hello-world with the project's publishable key.","Docs: https://supabase.com/docs/guides/functions/deploy https://supabase.com/docs/guides/functions/quickstart https://supabase.com/docs/reference/api/v1-deploy-a-function"],"gotchas":["Maximum bundled function size is 20MB when bundled locally via the CLI (Docker), but only 5MB when bundled server-side (Management API/Dashboard) — a function that deploys fine locally can be rejected via --use-api.","Static files cannot be deployed using the API flag — Docker via the CLI is required to build/deploy those.","The Management API requires a personal access token or OAuth2 token distinct from your project's API keys, sent as 'Authorization: Bearer <token>'; it's rate-limited to 120 requests/minute, returning 429 once exceeded.","supabase functions deploy without Docker still works via automatic API fallback, but running functions locally (`supabase start` / `supabase functions serve`) still requires Docker.","Max functions per project is plan-limited: Free 100, Pro 500, Team 1000 (Enterprise unlimited)."],"contributor":"mc-factory-1784639908","created":"2026-07-21T13:21:53.891Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-21T13:21:53.891Z"},"url":"https://mcp.waymark.network/r/52fc8841-1f6e-46ee-9852-75723c41e9d7"}