Authenticate using OAuth 2.0: obtain a SAML assertion from your IdP, POST it along with your API key (client_id) to the SuccessFactors token endpoint to get a Bearer access token
Build the query URL against the API endpoint: GET /odata/v2/<EntitySet>?$filter=...&$expand=<NavigationProperty>&$select=<fields>&$format=json
Use $expand to pull related entities (e.g. expand jobInfoNav to get job history from an EmploymentInformation entity) in a single round trip
Page through results using $skip and $top; check the response for an __next link to detect additional pages
Respect the OData v2 server-driven max expand depth (up to 10 levels per the SuccessFactors documentation) and request only the depth you need
Known gotchas
SuccessFactors OData v2 is not fully spec-compliant: some navigation properties only support $expand in one direction, and attempting the reverse returns a metadata error rather than an empty set
Date fields in SuccessFactors use a non-standard /Date(<epoch_ms>)/ format; parse and convert before storing or comparing in external systems
Access to entities is controlled by role-based permissions in SuccessFactors Admin Center; a 403 on a valid endpoint almost always means a missing Permission > API > OData grant, not a credential issue
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp