Integration

InNotes integration

InNotes is a LinkedIn CRM and job-application tracker. Manage contacts (with their phone numbers and email addresses), job applications, notes on contacts and jobs, statuses, tags, groups and note sharing, search notes or everything InNotes remembers, and set weekly and monthly application targets. Through the LinkedIn session the user connected in InNotes (automation must be set up there), an agent can also read LinkedIn conversations and notifications, search people, companies and posts, send LinkedIn messages to existing contacts and publish comments on posts. Not exposed: file attachments, kanban boards, page-view composites (dashboard, map, analytics, profile, contact and job detail pages), user lookup by email, API token and LinkedIn session management, account settings, admin, billing, feedback and browser-extension sync routes. Authentication is an InNotes API token sent as a Bearer token; it is generated in the InNotes dashboard settings.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in InNotes.Built from the 48 InNotes tools below, on the connection you add once.

What you can do with InNotes

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Note, 6 operations

  • create_noteCreate notePOSTAgents: ask firstAdds a note to a contact or job: ext_id is its id and ext_table_name says which (contacts, the default, or jobs). text is the note body as HTML. Returns the new note's id.
  • delete_noteDelete noteDELETEAgents: ask firstPermanently deletes a note by id. It cannot be undone through the API.
  • get_noteGet noteGETAgents: ask firstReturns one note by id: its HTML text, the contact or job it belongs to (ext_id, ext_table_name), flag colour and dates.
  • list_notesList notesGETAgents: ask firstLists the notes attached to one contact or job, named by ext_id (the contact or job id). Each note has its HTML text, flag colour and dates.
  • search_notesSearch notesGETAgents: ask firstSearches the text of the notes the user wrote on contacts and jobs (literal substring; AI memories excluded). Each hit names its contact or job. scope narrows to contacts or jobs; limit 1 to 200, default 50.
  • update_noteUpdate notePUTAgents: ask firstUpdates a note's text, flag colour or visibility (private, shared_read_only, shared_editable or public). Answers no body; read it back with get_note.

Contact, 5 operations

  • create_contactCreate contactPOSTAgents: ask firstCreates a contact. linkedin_key (the LinkedIn member id that search_linkedin returns as member_id) is required and must be new: a duplicate answers 409. Free accounts have a contact limit (402 when reached).
  • delete_contactDelete contactDELETEAgents: ask firstPermanently deletes a contact by id. It cannot be undone through the API.
  • get_contactGet contactGETAgents: ask firstReturns one contact by id: name, LinkedIn slug and key, status id, tags, notes count, picture, location, current company and its phone numbers and email addresses (personal data).
  • list_contactsList contactsGETAgents: ask firstLists the user's contacts, 24 per page (pageSize up to 200), filtered by search text or tags. fields=identity returns every contact unpaginated with only id, name and linkedin_user. Contacts carry phone numbers and emails.
  • update_contactUpdate contactPUTAgents: ask firstUpdates a contact; only the fields sent change. linkedin_key is required: send the stored value from get_contact. Moving linkedin_key or linkedin_user to another person's value is refused (409) unless name matches the stored one.

Group, 5 operations

  • create_groupCreate groupPOSTAgents: ask firstCreates a group with the given name. It answers no body: call list_groups to get the new group's id.
  • delete_groupDelete groupDELETEAgents: ask firstDeletes a group by id.
  • get_groupGet groupGETAgents: ask firstReturns one group by id: id, owner id and name.
  • list_groupsList groupsGETAgents: ask firstLists the user's groups (id, owner id, name). A group id can be given read or edit access to a note.
  • update_groupUpdate groupPUTAgents: ask firstRenames a group. It answers no body; read it back with get_group.

Job application, 5 operations

  • create_jobCreate jobPOSTAgents: ask firstCreates a job application and returns its id. A job whose ext_id already exists answers 409; free accounts have a job limit (402 when reached).
  • delete_jobDelete jobDELETEAgents: ask firstPermanently deletes a job application by id. It cannot be undone through the API.
  • get_jobGet jobGETAgents: ask firstReturns one job application by id: title, company, location, posting URL, provider, description, status, notes, tags and dates.
  • list_jobsList jobsGETAgents: ask firstLists the user's job applications, optionally filtered by searchTerm or by a job's ext_id. Each has title, company, location, posting URL, provider, status and notes.
  • update_jobUpdate jobPUTAgents: ask firstUpdates a job application by id. The reference does not say whether fields left out are kept: read the job with get_job first and send back every field you want to keep together with your change.

Status, 4 operations

  • create_statusCreate statusPOSTAgents: ask firstCreates a status for contacts or jobs (type, contact when left out) with a name and an optional colour, and returns it with its id.
  • delete_statusDelete statusDELETEAgents: ask firstDeletes a status by id.
  • list_statusesList statusesGETAgents: ask firstLists the user's contact statuses (id, name, colour), or its job statuses with type job. A contact status id goes in status_id on create_contact and update_contact, a job status id on create_job and update_job.
  • update_statusUpdate statusPUTAgents: ask firstRenames a status; the name is the only thing an update changes. Returns the status.

Group member, 3 operations

  • add_group_memberAdd group memberPOSTAgents: ask firstAdds an InNotes user to a group the caller owns. Membership gives that user edit access to the notes shared with the group.
  • list_group_membersList group membersGETAgents: ask firstLists a group's members with id, name, email and picture (personal data). Only the group's owner may read it; anyone else, or an unknown group, gets 404.
  • remove_group_memberRemove group memberDELETEAgents: ask firstRemoves a user from a group the caller owns, which ends the note access the group gave them.

Application target, 2 operations

  • get_application_targetsGet application targetsGETAgents: ask firstReturns the user's weekly and monthly targets for the number of job applications.
  • update_application_targetsUpdate application targetsPUTAgents: ask firstSets the user's weekly and monthly job-application targets. Both are required, as integers from 1 to 1000; anything else answers 400.

Linkedin message, 2 operations

  • get_linkedin_threadGet linkedin threadGETAgents: ask firstReads the LinkedIn message thread with one InNotes contact, named by profile slug or URL (404 if that profile is not a contact). Live read of personal messages.
  • send_linkedin_messageSend linkedin messagePOSTAgents: ask firstSends a real LinkedIn message from the user's account to an existing InNotes contact (profile slug or URL; 404 if not a contact). It cannot be unsent through the API.

Linkedin post, 2 operations

  • get_linkedin_postGet linkedin postGETAgents: ask firstReads one LinkedIn post in full plus its top-level comments, by post URL, urn or activity id. The answer's post.activity_id is what comment_on_linkedin_post needs.
  • search_linkedin_postsSearch linkedin postsGETAgents: ask firstSearches the content of LinkedIn posts live for a keyword or phrase; returns posts with author, full text and counts. Each post costs LinkedIn requests and LinkedIn rate-limits, so keep limit small.

Note edit access, 2 operations

  • grant_note_edit_accessGrant note edit accessPOSTAgents: ask firstGives another InNotes user (userId) or a group (groupId, from list_groups) edit access to a note; send one of the two. This shares the note's content with them.
  • revoke_note_edit_accessRevoke note edit accessDELETEAgents: ask firstRemoves the edit access a user (userId) or a group (groupId) had on a note; send the one that was granted.

Note read access, 2 operations

  • grant_note_read_accessGrant note read accessPOSTAgents: ask firstGives another InNotes user (userId) or a group (groupId, from list_groups) read access to a note; send one of the two. This shares the note's content with them.
  • revoke_note_read_accessRevoke note read accessDELETEAgents: ask firstRemoves the read access a user (userId) or a group (groupId) had on a note; send the one that was granted.

Innotes record, 1 operation

  • search_everythingSearch everythingGETAgents: ask firstSearches contacts, jobs and InNotes memory (notes, AI memories, career history) for one term. Every memory hit cites its source; memory.semantic false means exact-word matching only. An empty term returns every contact and job.

Linkedin comment, 1 operation

  • comment_on_linkedin_postComment on linkedin postPOSTAgents: ask firstPublishes a public comment on a LinkedIn post from the user's account; it cannot be deleted through this API. post must be an activity id (from get_linkedin_post). Tag with @[Name](entity_id). Rate-limited hourly and daily.

Linkedin conversation, 1 operation

  • list_linkedin_conversationsList linkedin conversationsGETAgents: ask firstLists the user's most recent LinkedIn conversations (participant, profile link, last message, unread flag), read live through the LinkedIn session connected in InNotes. Personal messages.

Linkedin mention, 1 operation

  • search_linkedin_mentionsSearch linkedin mentionsGETAgents: ask firstFinds the entity_id needed to @-tag a person or company in a comment on a given post, from LinkedIn's comment typeahead (up to 3 names per call). Use it before comment_on_linkedin_post.

Linkedin notification, 1 operation

  • list_linkedin_notificationsList linkedin notificationsGETAgents: ask firstReads the user's most recent LinkedIn notifications (headline, type, link, time, read flag), live through the LinkedIn session connected in InNotes.

Linkedin profile, 1 operation

  • search_linkedinSearch linkedinGETAgents: ask firstSearches LinkedIn live for people or companies by name or keyword. Person results carry slug and member_id, which create_contact takes as linkedin_user and linkedin_key, and is_contact.

Linkedin search availability, 1 operation

  • get_linkedin_search_availabilityGet linkedin search availabilityGETAgents: ask firstTells whether LinkedIn search can run for this user and, when it cannot, why: automation_off (LinkedIn automation not set up in InNotes) or no_session (LinkedIn must be reconnected in InNotes).

Note invite, 1 operation

  • invite_to_noteInvite to notePOSTAgents: ask firstShares a note with someone who has no InNotes account yet: creates a pending invite for the email with read or edit permission, which becomes a real share when that person signs up.

Tag, 1 operation

  • list_tagsList tagsGETAgents: ask firstLists every tag the user has, with id, name and colour. Tag names are what list_contacts filters on.

User, 1 operation

  • get_current_userGet current userGETAgents: ask firstReturns the token owner's InNotes profile: id, username, name, email, plan (free or premium), home location, picture, CV text and job-tracking settings. Personal data of the user.

Use InNotes from Claude Code, Cursor or Codex

Connect InNotes in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its InNotes operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect InNotes

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect InNotes once

    Add your InNotes connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

InNotes integration FAQ

What can you do with the InNotes integration?

LiveContext exposes 48 operations on InNotes, covering note, contact, group and job application.

Popular integrations

Browse the whole catalog