Connect to Nowen via MCP
Last updated: 2026-07-29
Nowen exposes an MCP server so AI assistants (Claude Desktop, Claude Code, any MCP-compatible client) can search published ideas, generate new ones, and manage your account directly from a chat.
- Server URL:
https://mcp.nowen.ai/api/mcp - Transport: Streamable HTTP
- Auth: OAuth 2.1 with PKCE (dynamic client registration supported) — 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, then open your browser to sign in to Nowen and approve access. - Approve the requested scopes (read / generate / claim) 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": {
"url": "https://mcp.nowen.ai/api/mcp"
}
}
}
Scopes
| Scope | Grants |
|---|---|
ideas:read |
Search/browse published ideas, list your conversations, check your tier/quota. |
ideas:generate |
Generate new ideas from a description and read back the results. |
ideas:claim |
Copy a public idea or claim an auto-published one into your own workspace. |
Read tools (ideas:read)
search_ideas
Search published ideas — scope: ideas:read (Read)
Semantic search over every published idea. Optionally filter by category/segment/industry/keyword.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Natural-language search query."
},
"category": {
"type": "string"
},
"segment": {
"type": "string"
},
"industry": {
"type": "string"
},
"keyword": {
"type": "string"
},
"limit": {
"description": "Max results, default 20.",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"query"
],
"additionalProperties": false
}
list_ideas
List published ideas — scope: ideas:read (Read)
Paginated listing of every published idea (24 per page), newest first.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
}
get_idea
Get a published idea — scope: ideas:read (Read)
Fetches one published idea’s full public detail by its slug.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"additionalProperties": false
}
list_categories
List categories — scope: ideas:read (Read)
Every category label currently in use across published ideas.
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
list_segments
List segments — scope: ideas:read (Read)
Every segment label currently in use across published ideas.
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
list_industries
List industries — scope: ideas:read (Read)
Every industry label currently in use across published ideas.
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
list_keywords
List keywords — scope: ideas:read (Read)
Every browse/search keyword currently in use across published ideas.
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
list_ideas_in
List ideas in a category/segment/industry/keyword — scope: ideas:read (Read)
Every published idea matching one taxonomy axis value (from list_categories/list_segments/list_industries/list_keywords).
Read-only.
Input schema:
{
"type": "object",
"properties": {
"axis": {
"type": "string",
"enum": [
"category",
"segment",
"industry",
"keyword"
]
},
"value": {
"type": "string"
}
},
"required": [
"axis",
"value"
],
"additionalProperties": false
}
list_conversations
List my conversations — scope: ideas:read (Read)
Lists the caller’s own conversations (bidirectional with the Nowen web app — conversations created there or via MCP are the same list).
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
get_conversation
Get one of my conversations — scope: ideas:read (Read)
Fetches one of the caller’s own conversations by id (Free-tier fields redacted, matching the web app).
Read-only.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
get_entitlement
Get my tier & quota — scope: ideas:read (Read)
The caller’s current tier (Free/Paid) and, for Free tier, their 30-day generation quota status.
Read-only.
Input schema:
{
"type": "object",
"properties": {},
"additionalProperties": false
}
Generate tools (ideas:generate)
generate_ideas
Generate business ideas — scope: ideas:generate (Generate)
Starts generating 5 ranked business ideas from a free-text description of the caller’s skills/interests/background. Returns a conversationId IMMEDIATELY — poll check_ideas_status, then call get_ideas once done.
Input schema:
{
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"description": "Free-text description of the caller's skills, domain expertise, and interests."
},
"consent": {
"description": "Free-tier accounts ONLY: must be true, acknowledging these ideas auto-publish anonymously to the public portal after 14 days. Ignored for Paid accounts.",
"type": "boolean"
}
},
"required": [
"description"
],
"additionalProperties": false
}
check_ideas_status
Check generation status — scope: ideas:generate (Generate)
Checks progress for a conversation started via generate_ideas — the latest curated progress message/percent, and whether it’s done.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
get_ideas
Get generated ideas — scope: ideas:generate (Generate)
Returns the ranked ideas for a conversation started via generate_ideas, once check_ideas_status reports done (Free-tier fields redacted).
Read-only.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
answer_clarification
Answer clarifying questions — scope: ideas:generate (Generate)
Answers the clarifying questions surfaced by check_ideas_status (needsClarification: true) so generation can proceed. Not Paid-gated — part of the free generate flow, matching the answer-clarification web endpoint.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"answers": {
"type": "string",
"minLength": 1,
"description": "Free-text answers to the clarifying questions."
}
},
"required": [
"conversationId",
"answers"
],
"additionalProperties": false
}
generate_more_ideas
Generate another batch of ideas — scope: ideas:generate (Generate)
Paid-only: starts a new iteration of 5 more ideas for an existing conversation, appended to whatever’s already there (never replaces prior iterations). Optionally updates the conversation’s input first. Poll check_ideas_status/get_ideas afterward.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"input": {
"description": "If provided and different from the current input, updates it before generating.",
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
refine_idea
Refine an idea (Advisor chat) — scope: ideas:generate (Generate)
Paid-only: sends one message to a specific idea’s Advisor chat — full parity with the web app’s per-idea Advisor (can update the idea’s content, copy, tags, or roadmap). Returns the assistant’s reply, a summary of any tool actions taken, and the idea after the turn.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
}
},
"required": [
"conversationId",
"ideaId",
"message"
],
"additionalProperties": false
}
get_idea_advisor
Get an idea’s Advisor chat history — scope: ideas:generate (Generate)
Paid-only: the full message history of one idea’s Advisor chat thread.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
}
},
"required": [
"conversationId",
"ideaId"
],
"additionalProperties": false
}
clear_idea_advisor
Clear an idea’s Advisor chat — scope: ideas:generate (Generate)
Paid-only: permanently deletes one idea’s whole Advisor chat history (does not touch the idea itself). Irreversible.
Destructive: cannot be undone.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
}
},
"required": [
"conversationId",
"ideaId"
],
"additionalProperties": false
}
conversation_advisor_send
Message the conversation-level Advisor — scope: ideas:generate (Generate)
Paid-only: sends one message to the whole-conversation Advisor (discusses every idea/iteration, can start a new iteration or hand off to a specific idea). Returns the assistant’s reply and a summary of any tool actions taken. A generate_iteration tool event means a new batch of ideas was started — poll check_ideas_status/get_ideas afterward. A focus_idea event carries the ideaId/ideaTitle the Advisor suggested developing further.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
}
},
"required": [
"conversationId",
"message"
],
"additionalProperties": false
}
conversation_advisor_messages
Get the conversation-level Advisor’s chat history — scope: ideas:generate (Generate)
Paid-only: the full message history of the whole-conversation Advisor thread.
Read-only.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
conversation_advisor_clear
Clear the conversation-level Advisor’s chat — scope: ideas:generate (Generate)
Paid-only: permanently deletes the whole-conversation Advisor’s chat history. Irreversible.
Destructive: cannot be undone.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
}
},
"required": [
"conversationId"
],
"additionalProperties": false
}
publish_idea
Publish an idea to the public portal — scope: ideas:generate (Generate)
Paid-only: publishes one idea, either as a protected showcase (default) or fully public/copyable (public: true).
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
},
"public": {
"description": "true = fully public and copyable via use_public_idea; default/false = protected showcase.",
"type": "boolean"
}
},
"required": [
"conversationId",
"ideaId"
],
"additionalProperties": false
}
unpublish_idea
Unpublish an idea — scope: ideas:generate (Generate)
Paid-only: pulls one of the caller’s own ideas back to Private, deleting its published blob. Works for either publish kind.
Input schema:
{
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"ideaId": {
"type": "string"
}
},
"required": [
"conversationId",
"ideaId"
],
"additionalProperties": false
}
Claim tools (ideas:claim)
use_public_idea
Copy a public idea — scope: ideas:claim (Claim)
Copies a fully-public (“publishKind: public”) idea into the caller’s own workspace as a brand-new, independent conversation. The original stays with its author.
Input schema:
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"additionalProperties": false
}
claim_idea
Claim an auto-published idea — scope: ideas:claim (Claim)
Transfers ownership of an Auto-published idea’s WHOLE conversation to the caller, once past its privatization window. Requires a Paid account. Destructive: the original author loses the conversation entirely.
Destructive: cannot be undone.
Input schema:
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"additionalProperties": false
}
Resources
idea://{slug}
Published idea — scope: ideas:read (Read) — application/json
portal://meta
Public portal metadata — scope: ideas:read (Read) — application/json
conversation://{conversationId}
One of the caller’s conversations — scope: ideas:read (Read) — application/json
Prompts
generate_business_ideas
Turn my background into ranked business ideas — scope: ideas:generate (Generate)
A starter prompt that walks through generating 5 ranked business ideas from your background.
Arguments:
{
"type": "object",
"properties": {
"background": {
"description": "Optional free-text background/skills/interests — if omitted, ask the user first.",
"type": "string"
}
},
"additionalProperties": false
}
Manage connected apps
Revoke access for any connected MCP client at any time from Connected Apps in your Nowen account settings.