Skip to content

Commit df2fa3b

Browse files
Merge pull request #20 from Linked-API/feat/urn
add urn support for entities
2 parents 72fe2b5 + 4a4859c commit df2fa3b

20 files changed

Lines changed: 20 additions & 20 deletions

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@linkedapi/mcp",
3-
"version": "2.3.5",
3+
"version": "2.3.6",
44
"description": "MCP server that lets AI assistants control LinkedIn accounts and retrieve real-time data.",
55
"main": "dist/index.js",
66
"bin": {

‎src/tools/fetch-company.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class FetchCompanyTool extends OperationTool<TFetchCompanyParams, unknown
4444
return {
4545
name: this.name,
4646
description:
47-
'Allows you to open a company page to retrieve its basic information (st.openCompanyPage action). Can optionally retrieve employees, posts and decision makers.',
47+
'Allows you to open a company page to retrieve its basic information (st.openCompanyPage action). Can optionally retrieve employees, posts and decision makers. The basic information carries urn — the permanent LinkedIn organization URN of the company (urn:li:organization:<id>); retrieved employees and decision makers carry their own member urn (urn:li:member:<id>), and retrieved posts carry urn on their author and reposter. Each of them is null when LinkedIn does not expose the identifier.',
4848
inputSchema: {
4949
type: 'object',
5050
properties: {

‎src/tools/fetch-job.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export class FetchJobTool extends OperationTool<TBaseFetchJobParams, unknown> {
1515
return {
1616
name: this.name,
1717
description:
18-
'Open a LinkedIn job and retrieve its details such as company, location, salary, and description (st.openJob action).',
18+
'Open a LinkedIn job and retrieve its details such as company, location, salary, and description (st.openJob action). The result carries urn — the permanent LinkedIn job posting URN (urn:li:jobPosting:<jobId>) — and companyUrn for the hiring company (urn:li:organization:<id>); either is null when LinkedIn does not expose the identifier.',
1919
inputSchema: {
2020
type: 'object',
2121
properties: {

‎src/tools/fetch-person.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class FetchPersonTool extends OperationTool<TFetchPersonParams, unknown>
3939
public override getTool(): Tool {
4040
return {
4141
name: this.name,
42-
description: `Allows you to open a person page to retrieve their basic information and perform additional person-related actions if needed. (st.openPersonPage action). Allows additional optional retrieval of experience, education, skills, languages, posts, comments and reactions.
42+
description: `Allows you to open a person page to retrieve their basic information and perform additional person-related actions if needed. (st.openPersonPage action). Allows additional optional retrieval of experience, education, skills, languages, posts, comments and reactions. The basic information carries urn — the person's permanent LinkedIn member URN (urn:li:member:<id>), or null when LinkedIn does not expose it. Retrieved posts carry urn on their author and reposter as well.
4343
⚠️ **PERFORMANCE WARNING**: Only set additional retrieval flags to true if you specifically need that data. Each additional parameter significantly increases execution time:
4444
💡 **Recommendation**: Start with basic info only. Only request additional data if the user explicitly asks for it or if it's essential for the current task.
4545
`,

‎src/tools/fetch-post.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class FetchPostTool extends OperationTool<TFetchPostParams, unknown> {
2929
return {
3030
name: this.name,
3131
description:
32-
'Open a LinkedIn post and retrieve its data, with optional comments and reactions. (st.openPost action).',
32+
'Open a LinkedIn post and retrieve its data, with optional comments and reactions. (st.openPost action). The author and reposter carry urn — a member URN (urn:li:member:<id>) for a person actor and an organization URN (urn:li:organization:<id>) for a company actor — and retrieved reactions carry engagerUrn for the same identity; each is null when LinkedIn does not expose the identifier. This action reads identifiers from the post page itself, so it resolves actor URNs that post listings such as retrieve_feed cannot. Comment authors carry no URN.',
3333
inputSchema: {
3434
type: 'object',
3535
properties: {

‎src/tools/get-conversation.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ operationName: OPERATION_NAME.syncConversation };
5757
return {
5858
name: this.name,
5959
description:
60-
'Retrieve a conversation with a LinkedIn person via standard LinkedIn messaging. Returns the conversation immediately if it has already been synced. If the conversation has not been synced yet, this tool starts a syncConversation workflow and returns its ack ({status, workflowId, operationName: "syncConversation", message}); the client should call get_workflow_result with that workflowId until completion, then call get_conversation again to read the synced messages. The result carries syncUntil — the moment syncing of this conversation stops. Once it is in the past the messages are still returned but no longer updated; call sync_conversation again for the same person to resume updates.',
60+
'Retrieve a conversation with a LinkedIn person via standard LinkedIn messaging. Returns the conversation immediately if it has already been synced. If the conversation has not been synced yet, this tool starts a syncConversation workflow and returns its ack ({status, workflowId, operationName: "syncConversation", message}); the client should call get_workflow_result with that workflowId until completion, then call get_conversation again to read the synced messages. The result carries syncUntil — the moment syncing of this conversation stops. Once it is in the past the messages are still returned but no longer updated; call sync_conversation again for the same person to resume updates. It also carries personUrn — the permanent LinkedIn member URN (urn:li:member:<id>) of the person, or null when LinkedIn does not expose it.',
6161
inputSchema: {
6262
type: 'object',
6363
properties: {

‎src/tools/get-inbox.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class GetInboxTool extends LinkedApiTool<TInboxPollRequest, TInboxPollRes
3030
return {
3131
name: this.name,
3232
description:
33-
'Get messages from the monitored inbox across all conversations (standard and Sales Navigator), newest first. Requires inbox monitoring to be enabled once with sync_inbox (or nv_sync_inbox for Sales Navigator).',
33+
'Get messages from the monitored inbox across all conversations (standard and Sales Navigator), newest first. Requires inbox monitoring to be enabled once with sync_inbox (or nv_sync_inbox for Sales Navigator). Every message carries personUrn — the permanent LinkedIn member URN (urn:li:member:<id>) of the person on the other side of the thread, or null when LinkedIn does not expose it.',
3434
inputSchema: {
3535
type: 'object',
3636
properties: {

‎src/tools/get-network.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class GetNetworkTool extends LinkedApiTool<TNetworkPollRequest, TNetworkP
3232
return {
3333
name: this.name,
3434
description:
35-
'Get connection events from the monitored network, newest first. Requires network monitoring to be enabled once with sync_network. Event types: "connectionAccepted" (a connection request you sent was accepted), "connectionAdded" (a new connection appeared in your network), "connectionRequestReceived" (someone sent you a connection request).',
35+
'Get connection events from the monitored network, newest first. Requires network monitoring to be enabled once with sync_network. Event types: "connectionAccepted" (a connection request you sent was accepted), "connectionAdded" (a new connection appeared in your network), "connectionRequestReceived" (someone sent you a connection request). Every event carries personUrn — the permanent LinkedIn member URN (urn:li:member:<id>) of the person the event is about, or null when LinkedIn does not expose it or the event was recorded before URNs were captured.',
3636
inputSchema: {
3737
type: 'object',
3838
properties: {

‎src/tools/nv-fetch-company.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class NvFetchCompanyTool extends OperationTool<TNvFetchCompanyParams, unk
3838
return {
3939
name: this.name,
4040
description:
41-
'Allows you to open a company page in Sales Navigator to retrieve its basic information (nv.openCompanyPage action). Can optionally retrieve employees and decision makers.',
41+
'Allows you to open a company page in Sales Navigator to retrieve its basic information (nv.openCompanyPage action). Can optionally retrieve employees and decision makers. The basic information carries urn — the permanent LinkedIn organization URN of the company (urn:li:organization:<id>) — and retrieved employees and decision makers carry their own member urn (urn:li:member:<id>); each is null when LinkedIn does not expose the identifier.',
4242
inputSchema: {
4343
type: 'object',
4444
properties: {

‎src/tools/nv-fetch-person.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export class NvFetchPersonTool extends OperationTool<TNvOpenPersonPageParams, un
1515
return {
1616
name: this.name,
1717
description:
18-
'Allows you to open a person page in Sales Navigator to retrieve their basic information (nv.openPersonPage action).',
18+
"Allows you to open a person page in Sales Navigator to retrieve their basic information (nv.openPersonPage action). The result carries urn — the person's permanent LinkedIn member URN (urn:li:member:<id>) — and companyUrn for their current company (urn:li:organization:<id>); either is null when LinkedIn does not expose it. The same person carries the same urn in standard interface results, so it can be used to match Sales Navigator results against them.",
1919
inputSchema: {
2020
type: 'object',
2121
properties: {

0 commit comments

Comments
 (0)