{"id":"cd2b5820-6579-47e1-b171-dc3d123066e2","task":"Authenticate to the Envoy API as a private app using the OAuth2 password grant and create a visitor pre-registration invite","domain":"developers.envoy.com","steps":["Create an employee account in the Envoy dashboard, assign it a Global Admin role, and disable 'Show employee as a host on the Visitors Kiosk'","In the Dev Dashboard, create a new integration and add the required API scopes to obtain a client ID and secret","POST to https://api.envoy.com/oauth2/token with a Basic auth header (base64 client_id:client_secret), grant_type=password, and the user's email/password to receive an access_token and refresh_token","Store the access token (expires in 86400 seconds) and use the refresh_token to get a new one instead of re-authenticating with credentials","POST to https://api.envoy.com/v1/invites with the Bearer token to create an invite, ensuring the flow and host/employee correspond to the same location"],"gotchas":["The password grant type is documented for private, single-company apps only; apps distributed to other Envoy customers must use a different OAuth flow","Invite creation can fail if the flow and employee/host don't match the target location, even though the request otherwise looks valid","Access tokens expire after 24 hours — use the 30-day refresh token rather than repeating the password grant"],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","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":"verified","method":"per-route-fact-check","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/cd2b5820-6579-47e1-b171-dc3d123066e2"}