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

  1. In your MCP client, add a new remote server pointing at https://mcp.nowen.ai/api/mcp.
  2. Your client will discover the OAuth endpoints from https://mcp.nowen.ai/.well-known/oauth-authorization-server and https://mcp.nowen.ai/.well-known/oauth-protected-resource/api/mcp, then open your browser to sign in and approve access.
  3. Approve the requested scopes on the consent screen.
  4. 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.