openapi: 3.2.0 info: title: Gtm Linkedin Connections API version: '1.0' contact: name: GTM API url: https://gtm-api.com email: support@gtm-api.com license: name: Proprietary url: https://gtm-api.com/license description: 'Operations tagged linkedin_connections across 2 of this provider''s published API definitions: gtm-api-openapi-openapi.yml, gtm-api-linkedin-openapi.yaml. Each path carries the servers of the definition it was published in.' servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway security: - BearerJwt: [] TeamSid: [] tags: - name: linkedin_connections description: Registry package `mcp.linkedin/linkedin_connections`, served on MCP mount `linkedin.network`. paths: /api/linkedin-connections/check-degree: post: operationId: check_linkedin_connection_degree summary: Check connection degree description: 'Probe one contact''s current connection degree (1st / 2nd / 3rd / 4_plus) from a managed account, and actualize a stale stored row: a live connection whose degree is no longer 1st is soft-deleted (removal_kind=removed) in the same call. Reuses the get-lite-profile getter (owner-only: it runs on the account you name). Supply exactly one target identifier. Contract: - MCP tool `check_linkedin_connection_degree`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `action`, response envelope `action`. - Flags: paced: a call spends the `networking_general` smart-limit bucket of the account it runs on, and calls of one bucket are spaced per account. A short wait is slept by the server; a longer one answers 429 `rate_limited` with `context.retry_after`, and the same call succeeds from that moment. Parallel calls on one account queue behind each other.' tags: - linkedin_connections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CheckLinkedinConnectionDegreeRequest' responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/CheckLinkedinConnectionDegreeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: check_linkedin_connection_degree x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical x-gtm-paced-bucket: networking_general servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-connections/get-my-latest: post: operationId: get_my_latest_linkedin_connections summary: Get my latest connections description: 'Always-fresh head read: refresh the newest connections from LinkedIn in-request (§5.8), then return the last N (connected_at DESC) with a counts block. The first page (cursor null) triggers the refresh; continuation pages read the already-refreshed DB. Account-scoped. For richer slicing call search_linkedin_connections right after. Runs through the account''s browser: a stopped or idle one is cold-started first (about 50 s, or 503 browser_starting), which also releases that account''s overdue syncs. Contract: - MCP tool `get_my_latest_linkedin_connections`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `action`, response envelope `search`. - Flags: paced: a call spends the `self_account_sync` smart-limit bucket of the account it runs on, and calls of one bucket are spaced per account. A short wait is slept by the server; a longer one answers 429 `rate_limited` with `context.retry_after`, and the same call succeeds from that moment. Parallel calls on one account queue behind each other.' tags: - linkedin_connections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GetMyLatestLinkedinConnectionsRequest' responses: '200': description: '`search` success envelope.' content: application/json: schema: $ref: '#/components/schemas/GetMyLatestLinkedinConnectionsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: get_my_latest_linkedin_connections x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: action x-gtm-envelope: search x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical x-gtm-paced-bucket: self_account_sync servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-connections/metrics: post: operationId: get_linkedin_connections_metrics summary: LinkedIn connections metrics description: 'Period-bound aggregates over a filtered connection set. Requires period {from,to} (≤ 90 days). Returns connections_growth, connections_removed, net_growth, reply_rate_within_connections, dormant_connections and avg_time_to_first_message. Optional filter and a single group_by axis. Contract: - MCP tool `get_linkedin_connections_metrics`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `metrics`, response envelope `metrics`. - Flags: read only.' tags: - linkedin_connections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GetLinkedinConnectionsMetricsRequest' responses: '200': description: '`metrics` success envelope.' content: application/json: schema: $ref: '#/components/schemas/GetLinkedinConnectionsMetricsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: get_linkedin_connections_metrics x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: metrics x-gtm-envelope: metrics x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-connections/search: post: operationId: search_linkedin_connections summary: Search LinkedIn connections description: 'List an account''s 1st-degree LinkedIn connections with filters, sorting, cursor pagination and filter.q, a LIKE (substring) over the contact name. Live rows by default (filter {"deleted_at": {"is_null": true}}); pass {"deleted_at": {"is_null": false}} for churn analysis. Returns a counts block of predicate tallies; include[] can eager-load linkedin_account, the source request/invitation, conversations and last_messages. Contract: - MCP tool `search_linkedin_connections`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `search`, response envelope `search`. - Flags: read only.' tags: - linkedin_connections requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/SearchLinkedinConnectionsRequest' responses: '200': description: '`search` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SearchLinkedinConnectionsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: search_linkedin_connections x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: search x-gtm-envelope: search x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-connections/sync-my-linkedin-connections: post: operationId: sync_my_linkedin_connections summary: Sync my connections description: 'Kick off a background connections sync for one account by inserting a sync_run. The pages add and update rows; a live row the run should have listed and did not goes to the check-target-block, whose read removes a severed edge (linkedin-connections.removed lands shortly after the run). ASYNC: returns pending refs to poll or await the linkedin-connections.sync-completed webhook. For an in-request head refresh use get_my_latest_linkedin_connections instead. Contract: - MCP tool `sync_my_linkedin_connections`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `action`, response envelope `action_async`. - Flags: none.' tags: - linkedin_connections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SyncMyLinkedinConnectionsRequest' responses: '200': description: '`action_async` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SyncMyLinkedinConnectionsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: sync_my_linkedin_connections x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: action x-gtm-envelope: action_async x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-connections/{sid}/remove: post: operationId: remove_linkedin_connection summary: Remove connection description: 'Disconnect a 1st-degree connection on LinkedIn (outward, destructive). Dispatches the remove-connection browser verb (networking_general bucket); on terminal success the local row is soft-deleted (removal_kind=removed) and linkedin-connections.removed is emitted. Identify the connection by its ln_cn_ sid. Contract: - MCP tool `remove_linkedin_connection`, registry package `mcp.linkedin/linkedin_connections`, mount `linkedin.network`. - Operation `action`, response envelope `action`. - Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API; paced: a call spends the `networking_general` smart-limit bucket of the account it runs on, and calls of one bucket are spaced per account. A short wait is slept by the server; a longer one answers 429 `rate_limited` with `context.retry_after`, and the same call succeeds from that moment. Parallel calls on one account queue behind each other.' tags: - linkedin_connections parameters: - name: sid in: path required: true description: LinkedIn connection sid (ln_cn_…). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_cn_ description: LinkedIn connection sid (ln_cn_…). requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/RemoveLinkedinConnectionRequest' responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/RemoveLinkedinConnectionResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: remove_linkedin_connection x-gtm-mcp-mount: linkedin.network x-gtm-entity: linkedin_connections x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: true x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical x-gtm-paced-bucket: networking_general servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway components: schemas: SyncMyLinkedinConnectionsRequest: type: object description: Request body of `sync_my_linkedin_connections`. properties: linkedin_account_sid: type: string minLength: 18 maxLength: 18 pattern: ^ln_ac_ description: LinkedIn account sid (ln_ac_…) whose network is acted on. required: - linkedin_account_sid McpError: type: object properties: success: type: boolean enum: - false error: type: object properties: code: type: string enum: - validation_failed - nothing_to_update - not_found - relation_not_found - invalid_transition - limit_exceeded - payment_required - duplicate_rejected - conflict - delete_blocked - unauthorized - forbidden - rate_limited - internal_error - service_unavailable - not_implemented message: type: string recoverable: type: boolean suggestion: type: string field_errors: type: object additionalProperties: type: array items: type: object properties: rule: type: string message: type: string required: - rule - message blockers: type: array items: type: object properties: type: type: string description: Machine-readable blocker type (active_flow, pending_tasks, …). severity: type: string enum: - hard - soft description: hard = external action required; soft = acknowledge is enough. description: type: string entity_sid: type: - string - 'null' count: type: integer resolution: type: string description: 'Hard: tool name to call. Soft: code for acknowledge[].' resolution_hint: type: string required: - type - severity - description - entity_sid - resolution - resolution_hint context: type: object additionalProperties: {} required: - code - message - recoverable meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - error SearchLinkedinConnectionsRequest: type: object description: Request body of `search_linkedin_connections`. properties: filter: type: object properties: sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false linkedin_account_sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false ln_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false ln_member_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false sn_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false nickname: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false q: type: string description: Full-text LIKE over the contact display name (full_name). connected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false last_check_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false linkedin_connection_request_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: is_null:false ⇒ born from one of our outbound requests. linkedin_connection_invitation_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: is_null:false ⇒ born from an inbound invitation we accepted. removal_kind: type: object properties: eq: type: string enum: - removed - blocked ne: type: string enum: - removed - blocked in: type: array items: type: string enum: - removed - blocked nin: type: array items: type: string enum: - removed - blocked is_null: type: boolean additionalProperties: false description: is_null:true = live row; is_null:false = all churn; eq to split by reason. created_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false updated_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false deleted_at: type: object properties: gte: type: string lte: type: string is_null: type: boolean additionalProperties: false description: 'Default scope is { is_null: true } (live rows).' include: type: array items: type: string enum: - linkedin_account - linkedin_connection_request - linkedin_connection_invitation - conversations - last_messages description: Relations to eager-load (see entity Includes). sort: type: object properties: field: type: string enum: - connected_at - last_check_at - created_at - updated_at - deleted_at direction: type: string enum: - asc - desc description: Default desc. required: - field page_size: type: integer minimum: 0 maximum: 200 description: 0..200, default 50. page_size=0 = count-only, page_size=1 = getFirst. cursor: type: - string - 'null' description: Opaque forward cursor from a previous response pagination.next_cursor. RemoveLinkedinConnectionResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string ln_member_id: type: string ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' full_name: type: - string - 'null' connected_at: type: - string - 'null' linkedin_connection_request_sid: type: - string - 'null' linkedin_connection_invitation_sid: type: - string - 'null' last_check_at: type: - string - 'null' removal_kind: type: - string - 'null' enum: - removed - blocked created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - ln_member_id - ln_id - sn_id - nickname - full_name - connected_at - linkedin_connection_request_sid - linkedin_connection_invitation_sid - last_check_at - removal_kind - created_at - updated_at - deleted_at result: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms pacing: type: object properties: linkedin_account_sid: type: string description: The account whose bucket the call spent. limit_type: type: string description: The smart-limit bucket the call spent, e.g. send_messages. next_call_after: type: string description: 'ISO 8601, the same form as retry_after: the moment this same call goes through again without waiting. The next pacing slot while the day has budget left, the daily reset when it has none, the end of a LinkedIn lock while one stands.' remaining_today: type: integer minimum: 0 description: daily_limit minus done_today_count of that bucket, after this call. required: - linkedin_account_sid - limit_type - next_call_after - remaining_today required: - success - operation - action - item - result - meta SyncMyLinkedinConnectionsResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string async: type: boolean enum: - true item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string ln_member_id: type: string ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' full_name: type: - string - 'null' connected_at: type: - string - 'null' linkedin_connection_request_sid: type: - string - 'null' linkedin_connection_invitation_sid: type: - string - 'null' last_check_at: type: - string - 'null' removal_kind: type: - string - 'null' enum: - removed - blocked created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - ln_member_id - ln_id - sn_id - nickname - full_name - connected_at - linkedin_connection_request_sid - linkedin_connection_invitation_sid - last_check_at - removal_kind - created_at - updated_at - deleted_at pending: type: array items: type: object properties: activity_log_sid: type: string expected_completion_seconds: type: integer minimum: 0 webhook_events: type: array items: type: string required: - expected_completion_seconds - webhook_events result: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - async - item - pending - result - meta CheckLinkedinConnectionDegreeRequest: type: object description: Request body of `check_linkedin_connection_degree`. properties: linkedin_account_sid: type: string minLength: 18 maxLength: 18 pattern: ^ln_ac_ description: LinkedIn account sid (ln_ac_…) whose network is acted on. target: type: object properties: ln_id: type: string maxLength: 128 description: Regular-profile URN (ACoAA…). sn_id: type: string maxLength: 64 description: Sales Navigator URN (ACwAA…). nickname: type: string maxLength: 100 description: Public profile slug. description: Target person; supply exactly one of ln_id / sn_id / nickname. required: - linkedin_account_sid - target GetLinkedinConnectionsMetricsRequest: type: object description: Request body of `get_linkedin_connections_metrics`. properties: filter: type: object properties: sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false linkedin_account_sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false ln_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false ln_member_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false sn_id: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false nickname: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false q: type: string description: Full-text LIKE over the contact display name (full_name). connected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false last_check_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false linkedin_connection_request_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: is_null:false ⇒ born from one of our outbound requests. linkedin_connection_invitation_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: is_null:false ⇒ born from an inbound invitation we accepted. removal_kind: type: object properties: eq: type: string enum: - removed - blocked ne: type: string enum: - removed - blocked in: type: array items: type: string enum: - removed - blocked nin: type: array items: type: string enum: - removed - blocked is_null: type: boolean additionalProperties: false description: is_null:true = live row; is_null:false = all churn; eq to split by reason. created_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false updated_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false deleted_at: type: object properties: gte: type: string lte: type: string is_null: type: boolean additionalProperties: false description: 'Default scope is { is_null: true } (live rows).' period: type: object properties: from: type: string description: ISO 8601 UTC window start (inclusive). to: type: string description: ISO 8601 UTC window end (exclusive); must be after from. required: - from - to description: Required metrics window [from, to). group_by: type: string enum: - linkedin_account_sid - removal_kind - linkedin_connection_request_sid_present - linkedin_connection_invitation_sid_present description: Optional single split axis. required: - period GetMyLatestLinkedinConnectionsRequest: type: object description: Request body of `get_my_latest_linkedin_connections`. properties: linkedin_account_sid: type: string minLength: 18 maxLength: 18 pattern: ^ln_ac_ description: LinkedIn account sid (ln_ac_…) whose network is acted on. page_size: type: integer minimum: 1 maximum: 100 description: Freshest rows to return / refresh coverage target (1..100, default 50). cursor: type: - string - 'null' description: Opaque forward cursor; the LinkedIn-side refresh runs only on the first page (cursor null). required: - linkedin_account_sid RemoveLinkedinConnectionRequest: type: object description: Request body of `remove_linkedin_connection`. properties: reason: type: - string - 'null' maxLength: 255 description: Free-form note on why the connection was removed; context for whoever reads the row later, never sent to LinkedIn. CheckLinkedinConnectionDegreeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string ln_member_id: type: string ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' full_name: type: - string - 'null' connected_at: type: - string - 'null' linkedin_connection_request_sid: type: - string - 'null' linkedin_connection_invitation_sid: type: - string - 'null' last_check_at: type: - string - 'null' removal_kind: type: - string - 'null' enum: - removed - blocked created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - ln_member_id - ln_id - sn_id - nickname - full_name - connected_at - linkedin_connection_request_sid - linkedin_connection_invitation_sid - last_check_at - removal_kind - created_at - updated_at - deleted_at result: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms pacing: type: object properties: linkedin_account_sid: type: string description: The account whose bucket the call spent. limit_type: type: string description: The smart-limit bucket the call spent, e.g. send_messages. next_call_after: type: string description: 'ISO 8601, the same form as retry_after: the moment this same call goes through again without waiting. The next pacing slot while the day has budget left, the daily reset when it has none, the end of a LinkedIn lock while one stands.' remaining_today: type: integer minimum: 0 description: daily_limit minus done_today_count of that bucket, after this call. required: - linkedin_account_sid - limit_type - next_call_after - remaining_today required: - success - operation - action - item - result - meta GetMyLatestLinkedinConnectionsResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - search items: type: array items: type: object properties: item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string ln_member_id: type: string ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' full_name: type: - string - 'null' connected_at: type: - string - 'null' linkedin_connection_request_sid: type: - string - 'null' linkedin_connection_invitation_sid: type: - string - 'null' last_check_at: type: - string - 'null' removal_kind: type: - string - 'null' enum: - removed - blocked created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - ln_member_id - ln_id - sn_id - nickname - full_name - connected_at - linkedin_connection_request_sid - linkedin_connection_invitation_sid - last_check_at - removal_kind - created_at - updated_at - deleted_at included: type: object additionalProperties: {} required: - item - included pagination: type: object properties: next_cursor: type: - string - 'null' has_more: type: boolean total_count: type: - integer - 'null' required: - next_cursor - has_more - total_count applied_filters: type: object additionalProperties: {} includes: type: array items: type: string meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms counts: type: object properties: total_count: type: number live_count: type: number removed_count: type: number blocked_count: type: number from_request_count: type: number from_invitation_count: type: number sync_only_count: type: number groups: type: object additionalProperties: {} required: - total_count - live_count - removed_count - blocked_count - from_request_count - from_invitation_count - sync_only_count - groups refresh: type: object properties: performed: type: boolean pages_fetched: type: integer items_seen: type: integer items_upserted: type: integer stop_reason: type: - string - 'null' enum: - overlap - covered - page_cap - exhausted required: - performed - pages_fetched - items_seen - items_upserted - stop_reason pacing: type: object properties: linkedin_account_sid: type: string description: The account whose bucket the call spent. limit_type: type: string description: The smart-limit bucket the call spent, e.g. send_messages. next_call_after: type: string description: 'ISO 8601, the same form as retry_after: the moment this same call goes through again without waiting. The next pacing slot while the day has budget left, the daily reset when it has none, the end of a LinkedIn lock while one stands.' remaining_today: type: integer minimum: 0 description: daily_limit minus done_today_count of that bucket, after this call. required: - linkedin_account_sid - limit_type - next_call_after - remaining_today required: - success - operation - items - pagination - applied_filters - includes - meta - refresh GetLinkedinConnectionsMetricsResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - metrics metrics: type: object properties: filter: type: object additionalProperties: {} period: type: object properties: from: type: string to: type: string required: - from - to aggregated: type: object properties: counts: type: object additionalProperties: {} metrics: type: object properties: connections_growth: type: number connections_removed: type: number net_growth: type: number reply_rate_within_connections: type: number dormant_connections: type: number avg_time_to_first_message: type: - number - 'null' required: - connections_growth - connections_removed - net_growth - reply_rate_within_connections - dormant_connections - avg_time_to_first_message metrics: type: object properties: connections_growth: type: number connections_removed: type: number net_growth: type: number reply_rate_within_connections: type: number dormant_connections: type: number avg_time_to_first_message: type: - number - 'null' required: - connections_growth - connections_removed - net_growth - reply_rate_within_connections - dormant_connections - avg_time_to_first_message applied_filters: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - metrics - meta SearchLinkedinConnectionsResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - search items: type: array items: type: object properties: item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string ln_member_id: type: string ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' full_name: type: - string - 'null' connected_at: type: - string - 'null' linkedin_connection_request_sid: type: - string - 'null' linkedin_connection_invitation_sid: type: - string - 'null' last_check_at: type: - string - 'null' removal_kind: type: - string - 'null' enum: - removed - blocked created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - ln_member_id - ln_id - sn_id - nickname - full_name - connected_at - linkedin_connection_request_sid - linkedin_connection_invitation_sid - last_check_at - removal_kind - created_at - updated_at - deleted_at included: type: object additionalProperties: {} required: - item - included pagination: type: object properties: next_cursor: type: - string - 'null' has_more: type: boolean total_count: type: - integer - 'null' required: - next_cursor - has_more - total_count applied_filters: type: object additionalProperties: {} includes: type: array items: type: string meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms counts: type: object properties: total_count: type: number live_count: type: number removed_count: type: number blocked_count: type: number from_request_count: type: number from_invitation_count: type: number sync_only_count: type: number groups: type: object additionalProperties: {} required: - total_count - live_count - removed_count - blocked_count - from_request_count - from_invitation_count - sync_only_count - groups required: - success - operation - items - pagination - applied_filters - includes - meta responses: McpServerError: description: MCP error envelope with `error.code` internal_error or service_unavailable. content: application/json: schema: $ref: '#/components/schemas/McpError' McpClientError: description: MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented. content: application/json: schema: $ref: '#/components/schemas/McpError' securitySchemes: BearerJwt: type: http scheme: bearer bearerFormat: JWT description: 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. TeamSid: type: apiKey in: header name: Team-SID description: Team scope for tokens that do not carry one. Ignored when the token already names a team. x-refined-from: - gtm-api-openapi-openapi.yml - gtm-api-linkedin-openapi.yaml