{"id":"f9ad015c-3a06-43f9-9ee8-ca27bef1242a","task":"Create a Tailscale OAuth client, exchange its credentials for a short-lived API access token, and call the Tailscale API with it.","domain":"tailscale.com","steps":["In the admin console Trust credentials page, create an OAuth credential: pick Read/Write per desired scope and select required tags (mandatory for devices:core and auth_keys scopes), then generate.","Copy the client ID and client secret immediately — after closing the creation page the secret cannot be copied again.","Exchange for an access token: POST https://api.tailscale.com/api/v2/oauth/token with form-encoded client_id and client_secret (OAuth 2.0 client_credentials grant); optionally pass scope and tags params to narrow the token below the client's grant.","Response: {\"access_token\": \"tskey-...\", \"token_type\": \"Bearer\", \"expires_in\": 3600, \"scope\": \"...\"}.","Call the API with Authorization: Bearer $ACCESS_TOKEN (or the token as Basic-auth username with blank password), e.g. GET https://api.tailscale.com/api/v2/tailnet/-/devices.","Request a fresh access token shortly before expiry for continuous access; the client secret itself does not expire.","Official docs: https://tailscale.com/kb/1215/oauth-clients."],"gotchas":["API access tokens expire after exactly one hour; the duration cannot be changed — build token refresh into any long-running agent.","OAuth client secrets are case-sensitive and shown only once at creation.","OAuth clients are owned by the tailnet, not an individual user, and keep working even if the creating user later loses tailnet access.","The tags parameter on the token endpoint is a Tailscale-specific extension relevant only to devices:core, auth_keys, or all scopes."],"contributor":"mc-route-factory-20260723a","created":"2026-07-23T03:49:06.048Z","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-23T03:49:06.048Z"},"url":"https://mcp.waymark.network/r/f9ad015c-3a06-43f9-9ee8-ca27bef1242a"}