Connect Nowen via MCP
Bring your Nowen AI agent into Claude, ChatGPT, or any MCP-compatible client — research companies, ask the Advisor, and run vendor comparisons directly from a chat.
Signed profiles. When a tool returns a company's published profile, a Verified company's profile comes with its signed statement and a link to its verification page, so your assistant can check the profile is the one the company approved. Anyone can check a company at nowen.ai/verify/ followed by its domain; here's what that checks.
Last updated: 2026-10-21
Nowen MCP exposes an MCP server so AI assistants (Claude Desktop, Claude Code, any MCP-compatible client) can use it directly from a chat. Research companies with an AI advisor and run vendor comparisons.
- Server URL:
https://mcp.nowen.ai/api/mcp - Transport: Streamable HTTP
- Auth: OAuth 2.1 with PKCE — most MCP clients handle the whole flow automatically the first time you add the server.
Connect
- In your MCP client, add a new remote server pointing at
https://mcp.nowen.ai/api/mcp. - Your client will discover the OAuth endpoints from
https://mcp.nowen.ai/.well-known/oauth-authorization-serverandhttps://mcp.nowen.ai/.well-known/oauth-protected-resource/api/mcp, then open your browser to sign in and approve access. - Approve the requested scopes on the consent screen.
- Your client exchanges the authorization code for an access token and is ready to use the tools below.
Claude Desktop / Claude Code example
{
"mcpServers": {
"nowen-mcp": {
"url": "https://mcp.nowen.ai/api/mcp"
}
}
}
Scopes
| Scope | Grants |
|---|---|
kg:agents:read |
Agents (Read) |
kg:agents:manage |
Agents (Manage) |
kg:agents:advise |
Agents (Advise) |
ideas:read |
Ideas (Read) |
ideas:generate |
Ideas (Generate) |
ideas:claim |
Ideas (Claim) |
kg:vendor-research:run |
Vendor Research (Run) |
Agents (Read)
list_agents
List agents — scope: kg:agents:read (Read)
Lists every agent (KnowledgeGraph workspace) the authenticated user is a member of.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
get_agent
Get agent — scope: kg:agents:read (Read)
Gets one agent's full profile (organization, products, ICPs, market segments, value proposition) by its workspace id.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_agent_publish_status
Get agent publish status — scope: kg:agents:read (Read)
Checks whether one agent's public profile is live, when it was last published, and which top-level sections (organization/products/market segments/target audience/FAQ/comparisons) have changed since — use this before assuming a live profile is current.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_agent_job
Get agent job status — scope: kg:agents:read (Read)
Checks the status of an async job started by create_agent, rebuild_agent, or rebuild_agent_visibility (their jobId).
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
},
"jobId": {
"type": "string",
"description": "The jobId returned by create_agent/rebuild_agent/rebuild_agent_visibility."
}
},
"required": [
"workspaceId",
"jobId"
],
"additionalProperties": false
}
get_agent_competitors
Get agent competitors — scope: kg:agents:read (Read)
Gets one agent's tracked competitors plus its Strength Matrix (per-value-proposition-category strength/weakness scoring against each tracked competitor) and the category legend needed to interpret it — the Market module's data.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_agent_visibility
Get agent visibility — scope: kg:agents:read (Read)
Gets one agent's AI visibility data — GEO site audit, recommendations, and aggregate AI-citation tracking (how often and how accurately AI assistants cite this agent) — the Visibility module's data.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_agent_battlecards
Get agent battlecards — scope: kg:agents:read (Read)
Gets one agent's sales battlecards — competitive positioning talking points, per tracked competitor and buyer persona — the Selling module's data.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_agent_signals
Get agent signals — scope: kg:agents:read (Read)
Gets one agent's buyer/demand signals — who's been evaluating it and where it wins or loses. Requires a claimed domain and a plan with the Demand feature; otherwise returns a reason instead of data.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
Agents (Manage)
create_agent
Create agent — scope: kg:agents:manage (Manage)
Creates a new agent by crawling its company website OR from a short brief, kicking off the async research build. Provide exactly one of websiteURL or orgBrief — never both, and never neither. The website can't be changed once set (a different website means creating a new agent); a brief-only agent's brief can be edited later with set_agent_brief.
Input schema:
{
"type": "object",
"properties": {
"websiteURL": {
"description": "The company's website URL. Provide this OR orgBrief, not both.",
"type": "string"
},
"orgBrief": {
"description": "A short brief describing the company, used when there's no website to crawl. Provide this OR websiteURL, not both.",
"type": "string"
}
},
"additionalProperties": false
}
publish_agent_profile
Publish agent profile — scope: kg:agents:manage (Manage)
Publishes the agent's currently-live profile (organization, products, market segments, target audience, selected FAQ and vendor comparisons) to its public directory page. Requires a claimed domain — an agent created from a brief has no domain and can't be published.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
set_agent_brief
Set agent brief — scope: kg:agents:manage (Manage)
Replaces the brief of an agent that was created from a brief (not a website — an agent built from its website can't change its source; create a new agent from the website instead). Saves only; call rebuild_agent afterwards to regenerate the agent from the new brief.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
},
"orgBrief": {
"type": "string",
"description": "The new brief text."
}
},
"required": [
"workspaceId",
"orgBrief"
],
"additionalProperties": false
}
rebuild_agent
Rebuild agent — scope: kg:agents:manage (Manage)
Re-runs the full research build for an EXISTING agent (re-crawls its website, regenerates organization/products/ICPs/market segments/value proposition) — the refresh counterpart to create_agent. Real cost, same as the initial build. Returns a jobId immediately; poll get_agent_job to know when it's done.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
},
"useCache": {
"description": "Reuse cached crawl/LLM results where available. Default false (always fresh).",
"type": "boolean"
},
"notifyOnComplete": {
"description": "Email the account when the rebuild finishes. Default true.",
"type": "boolean"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
rebuild_agent_visibility
Rebuild agent visibility — scope: kg:agents:manage (Manage)
Re-runs just the visibility (GEO) build for an existing agent — site audit, recommendations, and AI-citation tracking — without the full crawl rebuild_agent runs. Requires a plan with the Visibility feature. Returns a jobId immediately; poll get_agent_job to know when it's done.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
},
"useCache": {
"description": "Reuse cached crawl/LLM results where available. Default false (always fresh).",
"type": "boolean"
},
"notifyOnComplete": {
"description": "Email the account when the rebuild finishes. Default true.",
"type": "boolean"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
Agents (Advise)
query_agent
Query agent — scope: kg:agents:advise (Advise)
Asks a free-text question about one of your agents and gets an LLM-synthesized answer grounded strictly in that agent's already-researched profile (organization, products, ICPs, market segments, value proposition). Does not run new research or answer questions outside what's already been built for this agent — use create_agent/wait for research to finish first if the profile is thin. Stateful: every call continues the same ongoing conversation for that agent, so you can ask follow-up questions naturally. Use this instead of get_agent when you want an answer rather than raw structured data.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
},
"message": {
"type": "string",
"description": "A free-text question or follow-up message about this agent's business."
}
},
"required": [
"workspaceId",
"message"
],
"additionalProperties": false
}
get_agent_advisor
Get agent Advisor history — scope: kg:agents:advise (Advise)
Gets the full message history of one agent's Advisor conversation (see query_agent), oldest first.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
clear_agent_advisor
Clear agent Advisor history — scope: kg:agents:advise (Advise)
Permanently deletes one agent's whole Advisor conversation history (does not touch the agent's own research data). Irreversible.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
Ideas (Read)
list_conversations
List idea conversations — scope: ideas:read (Read)
Lists every idea-generation conversation in one of the user's companies.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The agent's workspace id, from list_agents."
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
}
get_conversation
Get idea conversation — scope: ideas:read (Read)
Gets one idea-generation conversation, including every idea it has produced across all iterations.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"conversationId": {
"type": "string"
}
},
"required": [
"workspaceId",
"conversationId"
],
"additionalProperties": false
}
Ideas (Generate)
create_conversation
Create idea conversation — scope: ideas:generate (Generate)
Starts a new idea-generation conversation from a free-text input, kicking off the async generation job. Free-tier generation requires consent:true, acknowledging the idea will be published anonymously.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"input": {
"type": "string",
"description": "Free-text description of what to generate business ideas about."
},
"consent": {
"type": "boolean"
}
},
"required": [
"workspaceId",
"input"
],
"additionalProperties": false
}
answer_clarification
Answer clarifying questions — scope: ideas:generate (Generate)
Submits answers to a conversation's clarifying questions, kicking off idea generation. An empty string is a valid 'skip and generate' answer.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"conversationId": {
"type": "string"
},
"answers": {
"type": "string"
}
},
"required": [
"workspaceId",
"conversationId",
"answers"
],
"additionalProperties": false
}
publish_idea
Publish idea — scope: ideas:generate (Generate)
Publishes one idea from a conversation to the public portal, either as a protected showcase (default) or fully public/copyable (public:true). Paid tier only.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"public": {
"type": "boolean"
}
},
"required": [
"workspaceId",
"conversationId",
"ideaId"
],
"additionalProperties": false
}
Ideas (Claim)
claim_idea
Claim idea — scope: ideas:claim (Claim)
Claims a publicly-published idea past its privatization window, transferring the whole conversation to the caller's own company. Paid tier only.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "The workspace id to transfer the claimed idea into."
},
"slug": {
"type": "string",
"description": "The published idea's public slug."
}
},
"required": [
"workspaceId",
"slug"
],
"additionalProperties": false
}
Vendor Research (Run)
start_vendor_research
Start vendor research — scope: kg:vendor-research:run (Run)
Kicks off a vendor comparison research job for one of the user's companies, scoring candidate vendors against a requirements brief. Always runs as a buyer-side evaluation.
Input schema:
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"title": {
"type": "string"
},
"requirementsBrief": {
"type": "string"
},
"vendorURLs": {
"description": "Known candidate vendor URLs to include, if any.",
"type": "array",
"items": {
"type": "string"
}
},
"useCache": {
"type": "boolean"
},
"includeSelf": {
"description": "Whether to include the user's own company as a comparison candidate.",
"type": "boolean"
}
},
"required": [
"workspaceId",
"title",
"requirementsBrief"
],
"additionalProperties": false
}
Utility
whoami
Returns the identity (user, OAuth client, and granted scopes) the calling MCP client is currently authenticated as. Always available regardless of granted scopes.