Enrich person certifications
Licenses and certifications from the target profile: issuing authority, license number, validity window. A qualification and compliance signal for recruiting and technical ICP fit. cached 7d. Most profiles have NONE, so an empty list is a real answer about the person rather than a failed read. license_number and url are frequently null even on real entries (LinkedIn own certifications carry neither). Address by profile_id XOR public_identifier, the same exactly-one-of rule as every other person read: passing both is a 422, they prohibit each other. The screen behind this one is the exception that needs the vanity slug AND the member urn at once, so the backend resolves whichever half you did not send. Addressing by public_identifier skips even that resolve once this team has enriched the person before, because the urn is then already on an earlier ledger row.
Contract:
- MCP tool
enrich_linkedin_person_certifications, registry packagemcp.linkedin/linkedin_enrichment, mountlinkedin.enrichment. - Operation
action, response envelopeaction. - Flags: none.
Authorizations
Access token issued by gtm.service.id. Its access_identity claim carries team_sid, actor_sid and actor_type, and that team scope is authoritative.
Team scope for tokens that do not carry one. Ignored when the token already names a team.
Body
Request body of enrich_linkedin_person_certifications.
ln_id (ACoAA…) or sn_id (ACwAA…), interchangeable for dispatch. Provide profile_id XOR public_identifier.
128Vanity slug from /in/…, or the whole profile URL it comes from (any linkedin.com host, locale or mwlite prefix, query and trailing slash included): the URL is reduced to the slug before dispatch, and both forms share one ledger entry. A linkedin.com URL that is NOT a profile URL is refused 422 public_identifier_not_resolvable instead of being sent as a slug. Provide public_identifier XOR profile_id. On sub-record methods a slug-only call needs a stored URN (run person-lite-profile first) or is refused not_dispatchable.
2048Executor account (ln_ac_...). Given: the call runs on that account ONLY; a saturated or held enrichment bucket refuses 429 bucket_saturated (with retry_after). Omitted: the service auto-picks one of your connected accounts with remaining capacity (422 no_connected_accounts when none is ready, 429 when all are at capacity).
18^ln_ac_Replay guard (team_sid, idempotency_key). A repeat with the same key returns the stored ledger outcome: no re-execution.
128