get_workspace_status first.
It runs two ways on the same tools: locally via npx (Claude Code, Cursor, Codex, Claude Desktop, self-hosted n8n), or hosted over Streamable HTTP at https://mcp.opennous.cloud/mcp for cloud clients (n8n cloud). Prefer the REST API when the caller already knows the parameters; both sit on the same graph, so a write through one shows in the other.
Install in 30 seconds
The server is published on npm. No clone, no global install —npx fetches it on first use.
Claude Code (recommended)
npx @opennous/cli login opens your browser, you approve, and a workspace key is minted and saved — no copy-paste; the plugin’s MCP picks it up. Then tell your agent “set me up”. (Prefer to paste a key? Create one at Settings → API Keys and set the plugin’s NOUS_API_KEY.) 25 tools become callable in every Claude Code session.
Every client below can skip the key. The configs show
NOUS_API_KEY = "YOUR_API_KEY" only as a fallback — you can drop that env line and run npx @opennous/cli login once. It signs you in via the browser and saves the key to ~/.nous/config.json, which the server reads automatically. Paste a key only to pin a specific one (create it at Settings → API Keys). Either way, then tell your agent “set me up”.Codex
Claude Desktop
Cursor
Any MCP-compatible client
Hosted server (remote HTTP)
Cloud clients that can’t launch a local process — n8n cloud above all, and any client that takes a remote MCP URL — connect to the hosted Nous MCP server over Streamable HTTP. Same 25 tools, same context graph; a write through one transport is visible to the other. Authenticate per request with your workspace API key as a Bearer token.n8n cloud
Add an MCP Client Tool node and configure it:- Server Transport →
HTTP Streamable - Endpoint URL →
https://mcp.opennous.cloud/mcp - Authentication →
Bearer Auth, token = your Nous API key
Claude Code (remote)
Clients that accept only a bare URL with no auth header can pass the key as a query parameter —
https://mcp.opennous.cloud/mcp?key=YOUR_API_KEY — but prefer the Bearer header, since URLs can land in logs.The 25 tools
Read and write the context graph
get_context
Engineered context for a task about one entity — the headline call before drafting outreach or prepping a meeting.
get_account
The full account — every claim with epistemics + recent timeline.
record
Record what happened. You observe; Nous derives the claims.
query
Retrieve + summarise a corpus of activity across many people.
attention
What needs your attention — accounts gone quiet, facts decayed.
verify
Re-check one claim before acting on it.
get_gtm_profile
The user’s own GTM profile — ICP, market, pricing, competitors.
update_gtm_profile
Write back a lasting change to a GTM section — it evolves, keeping history.
save_note
Keep a meeting brief, transcript, or note on a contact’s record.
search_notes
Semantic search across saved notes & documents — pull the relevant passage.
Operate the workspace (setup)
The agent sets the workspace up itself. Callget_workspace_status first; it returns a ranked list of what to do next.
get_workspace_status
The whole setup state + a ranked next-steps list. The first call in a session.
set_workspace_profile
Agent-driven onboarding — set name, website, business type, and ICP.
build_scoring_model
Build the ICP scoring model from the recorded GTM context.
connect_integration
Connect a key-based integration (Apollo, Prospeo, HubSpot token, …).
configure_crm_sync
Set the CRM sync rules — auto-sync, create policy, hygiene cadence.
set_trigger
Create an outbound event trigger (webhook) for the user’s stack.
list_triggers
List the workspace’s triggers + the catalog of available events.
Also callable:
record_closed_deals (train the ICP model on real closed-won/lost deals — contrastive lift) and get_routing_preferences (Claude Code routing defaults so GTM work defaults to Nous). Plus get_workspace_facts, a back-compat alias of get_gtm_profile — new integrations should call get_gtm_profile.Environment
The preferred path is
npx @opennous/cli login — a browser sign-in that mints a workspace key and saves it to ~/.nous/config.json, which the MCP reads (no NOUS_API_KEY to set). The plugin’s userConfig field still accepts a pasted key as a fallback, stored in your OS keychain — never in plaintext or shell history.
How agents typically use it
Setting up a new workspace →get_workspace_status to see what’s missing, then set_workspace_profile (onboard), update_gtm_profile + build_scoring_model (the GTM playbook), connect_integration (key-based tools), configure_crm_sync, and set_trigger. The agent does the setup; the user just confirms. OAuth tools (Gmail) stay a one-click browser step on the Integrations page.
Day to day:
- Start of a task →
get_contextwith the rightintentto get a ranked, budget-fit context block - Action happens →
recordan observation (an email was sent, a state changed) - Produced something durable? →
save_notethe brief / transcript / prep onto the contact so the record builds across meetings - Need a past detail? →
search_notesto pull the relevant passage instead of dumping whole documents - Stale-looking fact? →
verifybefore acting on it - End of session →
attentionto surface what to work next
get_gtm_profile is the meta-tool: any question about the user’s own business (ICP, pricing, market) goes here, never to query/get_account. When the business itself changes (repriced, moved upmarket, sharpened positioning), update_gtm_profile writes the change back so the context stays current.
record vs save_note. record logs that something happened (an email, a meeting, a state change) — Nous derives claims from it. save_note keeps the document itself (a brief, a transcript, prep) on the contact, append-only and dated. Use both: record the meeting happened, save_note the notes you took.Source + versioning
The server lives atapps/mcp in NousC/nous. Each release is published to npm as @opennous/mcp@<semver> — pin a version in your config if you need reproducible installs: