Skip to content
NeuralRepo
Get Support

Claude Connector (MCP v2)

The NeuralRepo Claude connector is the MCP server at https://neuralrepo.com/mcp/v2. Enter that URL exactly, without a trailing slash. It gives Claude 21 separate tools for your ideas: 7 that only read, 4 that add something, and 10 that change or remove something. Each tool says which kind it is, so Claude can ask before it changes anything.

https://neuralrepo.com/mcp/v2

Use v2 unless you depend on code_mode. The two endpoints run side by side, share the same OAuth sign-in and tokens, and work on the same library.

/mcp/v2 (this page)/mcp/ (v1)
URL to enterhttps://neuralrepo.com/mcp/v2https://neuralrepo.com/mcp/
Tools21 discrete tools, each with a title, read-only/destructive hints and an output schema8 named tools plus code_mode
code_mode (sandboxed JavaScript against the API)NoYes, only here
Archive and restorearchive_idea, and restore_idea brings an idea backdelete_idea archives, no restore tool
Merging, duplicates, tag clean-up, attached links, statsEach is its own toolOnly through code_mode
Listed in the Claude connector directoryYes, this is the endpoint submittedNo

The v1 endpoint is unchanged and keeps working. Its reference is at MCP Server for Claude.

  1. Open claude.ai and go to Settings ▸ Connectors.

  2. Click Add custom connector.

  3. Enter the URL, with no slash at the end:

    https://neuralrepo.com/mcp/v2
  4. Connect. You are sent to NeuralRepo to sign in (GitHub, Google, Apple or a magic link) and approve access. The consent page shows the host Claude will return you to.

Claude checks that the server’s OAuth protected-resource document names exactly the URL you entered. NeuralRepo publishes that document for v2 at https://neuralrepo.com/.well-known/oauth-protected-resource/mcp/v2, and its resource value is https://neuralrepo.com/mcp/v2, with no slash. The server answers on both /mcp/v2 and /mcp/v2/, but only the no-slash form matches, so https://neuralrepo.com/mcp/v2/ can fail at sign-in.

The connector uses the same OAuth server as v1: Dynamic Client Registration at /mcp/register, PKCE with S256 required, and two scopes, ideas:read and ideas:write. Token lifetimes, revoking a connection, and the PKCE errors are described under OAuth Flow on the v1 page; they apply to v2 unchanged.

Scopes map to tools like this:

  • The 7 read-only tools need ideas:read or ideas:write.
  • Every other tool needs ideas:write. With a read-only connection it returns: “This connection has read-only access (ideas:read). Reconnect NeuralRepo with write access to make changes.”

Every tool is available on both plans, but some return less on Free.

LimitFreePro
Active (unarchived) ideas50. save_idea and restore_idea refuse at the cap.Unlimited
Semantic search in search_ideas10 per calendar month, then keyword matching with a noticeUnlimited
link_ideas, unlink_ideasRefused: “Linking ideas is a Pro-plan feature…”Yes
list_duplicatesEmpty list with a noticeYes
resolve_duplicateRefused: “Duplicate detection is a Pro-plan feature, so nothing was changed.”Yes
get_idea duplicates sectionAlways an empty listPending duplicates
get_stats pending_duplicatesnullA count

At the Free cap, save_idea returns an error: “This library has reached the free plan’s limit of 50 active ideas, so the idea was not saved. Archiving an idea makes room for a new one.” The monthly semantic-search allowance is one counter per account, shared with the v1 endpoint and the REST API’s semantic search.

merge_ideas, add_link, remove_link and the tag tools have no plan check.

Each tool returns structuredContent that matches the outputSchema it publishes in tools/list, plus the same JSON as one text block.

When a tool fails, the result has isError: true and a sentence Claude can act on, for example:

  • No idea with id 999 in this library.
  • Invalid arguments for update_idea: status: … (the input failed validation)
  • The result is too large (… characters). Ask for fewer items: lower the limit or narrow the filters. (results over 100,000 characters)

Every tool that takes an idea takes its database id, not the #number shown in the app. Results carry both: id and number. See Idea identifiers.

These seven tools never change anything (readOnlyHint: true).

Finds ideas by meaning with a query, or lists them newest first without one.

ParameterTypeRequiredNotes
querystringNo1–500 characters. Omit to browse.
statusstringNocaptured, exploring, building, shipped, shelved
tagstringNoOnly ideas with this tag (max 50 characters)
sourcestringNoweb, cli, claude-mcp, siri, email, api, shortcut, ios
created_afterstringNoISO date (2026-10-01) or date-time; inclusive
created_beforestringNoISO date or date-time; exclusive
limitintegerNo1–50, default 20
cursorstringNonext_cursor from the previous page. Browsing only.

Returns search_type (browse, semantic or keyword), ideas (each with id, number, title, status, source, tags, a 280-character body_preview, dates, and score for semantic results), total (browsing only; null with a query) and next_cursor. A query returns one page; passing cursor with a query is an error. If semantic search finds nothing above your score threshold, or fails, the tool answers with keyword matches.

Returns one idea with its full body.

ParameterTypeRequiredNotes
idintegerYesIdea id
includestring[]NoAny of relations, links, duplicates. Default all three; [] for the idea alone.

Relations come with a relation_id (for unlink_ideas) and a direction; links come with an id (for remove_link); duplicates come with a detection_id (for resolve_duplicate). get_idea also finds archived ideas by id, with archived: true.

Returns one idea with its full body plus its closest related ideas and attached links in one compact result. Meant for planning or writing a spec around an idea.

ParameterTypeRequiredNotes
idintegerYesIdea id
max_relatedintegerNo0–10, default 5

Each related idea appears once, with all its relation_types merged, a score and a body_preview.

Lists your tags with how many active ideas use each.

ParameterTypeRequiredNotes
sortstringNocount (most used first, default) or name
min_countintegerNoDefault 1, so unused tags are left out. Pass 0 to include them.
limitintegerNo1–200, default 50
cursorstringNonext_cursor from the previous page

Finds tags that look like variants of one tag: the same word spelled differently (“Mind Map”, “mind-maps”) and tags with a close meaning.

ParameterTypeRequiredNotes
tagstringYesAn existing tag name
limitintegerNo1–20, default 5

Each match has match: "spelling" or "meaning", an idea_count, and a similarity (null for spelling matches). If the tag has no meaning index yet, only spelling variants come back, with a notice.

Counts for your library. No parameters.

Returns total (active ideas), by_status, recent_7d (ideas created in the last 7 days), pending_duplicates (null on Free) and top_tags (up to 10).

Lists ideas detected as likely duplicates, grouped so that ideas duplicating each other sit together, best match first. Pro; Free gets an empty list and a notice.

ParameterTypeRequiredNotes
limitintegerNoGroups to return, 1–50, default 20

Each group has its ideas, its pairs (each with a detection_id, idea_id, duplicate_of_id and similarity) and max_similarity. Detection runs in the background after an idea is saved; see Duplicate Detection.

These four tools add or bring back data and destroy nothing (destructiveHint: false).

Saves a new idea. Ideas saved this way have source: "claude-mcp".

ParameterTypeRequiredNotes
titlestringYes1–200 characters
bodystringNoMarkdown, max 50,000 characters
tagsstring[]NoMax 20. "a, b" is split into two tags. Stored lowercase with spaces as hyphens.
statusstringNoDefault captured
source_urlstringNohttp or https URL, max 2,000 characters
parent_idintegerNoMake it a sub-idea of this idea id; must exist

Returns the saved idea. Embedding, duplicate detection and auto-tagging run in the background afterwards, so any duplicate shows up later in list_duplicates, not in this result. Free accounts are refused at 50 active ideas.

Records a relationship between two ideas. Pro.

ParameterTypeRequiredNotes
source_idea_idintegerYes
target_idea_idintegerYesMust differ from the source
relation_typestringNorelated (default), parent, blocks, inspires, supersedes
notestringNoMax 500 characters

A parent or blocks link that would close a loop is refused, naming the loop. Linking the same pair again is refused; remove the old link with unlink_ideas first.

Attaches a web address to an idea.

ParameterTypeRequiredNotes
idea_idintegerYes
urlstringYeshttp or https, max 2,000 characters
titlestringNoMax 200 characters
link_typestringNourl (default), claude-chat, github-repo, github-issue

Brings an archived idea back into searches and lists, and queues it to be re-indexed for semantic search.

ParameterTypeRequiredNotes
idintegerYesIdea id. get_idea finds archived ideas by id.

Restoring an idea that isn’t archived changes nothing and succeeds. On Free, restoring is refused while the library holds 50 active ideas.

These ten tools overwrite or delete something (destructiveHint: true). Claude may ask you to confirm before calling them.

Changes one idea’s title, body, status or tags.

ParameterTypeRequiredNotes
idintegerYes
titlestringNo1–200 characters
bodystringNoReplaces the whole body; max 50,000 characters
statusstringNo
tagsstring[]NoReplaces every tag
add_tagsstring[]NoAdds tags
remove_tagsstring[]NoRemoves tags

Give at least one change. tags can’t be combined with add_tags or remove_tags, and an idea can hold at most 20 tags. Returns the idea and a changes object listing only the fields whose value changed (from/to, or added/removed for tags).

Sets the status and/or adds or removes tags on up to 50 ideas at once. Titles and bodies are not changed.

ParameterTypeRequiredNotes
idsinteger[]Yes1–50 idea ids
statusstringNo
add_tagsstring[]No
remove_tagsstring[]No

Not all-or-nothing: each idea succeeds or fails on its own. The result is { updated, errors, results }, with one entry per idea, so check errors rather than assuming the whole batch applied.

Archives an idea: it leaves searches, lists and counts, its search vector is removed, and the idea itself is kept. restore_idea brings it back.

ParameterTypeRequiredNotes
idintegerYes

On Free, archiving frees a slot under the 50-idea cap.

Deletes one relationship between two ideas. Pro.

ParameterTypeRequiredNotes
relation_idintegerYesFrom the relations in get_idea

An id that doesn’t exist returns an error (No relation with id … in this library.).

Deletes one web address attached to an idea.

ParameterTypeRequiredNotes
idea_idintegerYes
link_idintegerYesFrom the links in get_idea

Resolves one detected duplicate pair. Pro.

ParameterTypeRequiredNotes
detection_idintegerYesFrom list_duplicates or get_idea
actionstringYesdismiss (not duplicates; stop suggesting the pair) or merge
keep_idintegerNomerge only. Which of the pair to keep; default the pair’s idea_id, the idea captured later.
merged_bodystring or nullNomerge only. See merge_ideas.

A merge works exactly like merge_ideas. A detection that is no longer pending is refused.

Merges one idea into another. Available on both plans.

ParameterTypeRequiredNotes
keep_idintegerYesThe idea to keep
absorb_idintegerYesThe idea to absorb and archive
merged_bodystring or nullNoThe combined body. Omit to append the absorbed body under a “Merged from #N” heading; null leaves the kept idea with no body.

The kept idea gets the merged body, the absorbed idea’s tags, links and relations, and the earlier of the two creation dates. The absorbed idea is archived, not deleted, so restore_idea can bring it back. Restoring does not undo the merge: the kept idea keeps the merged body and everything moved to it. Both ideas must be active; merging an archived idea is refused.

Renames a tag on every idea that has it.

ParameterTypeRequiredNotes
tagstringYesThe current name
new_namestringYesOne tag name, stored lowercase with spaces as hyphens

If another tag already has the new name, the call is refused; use merge_tags instead.

Folds several tags into one: every idea with any of them gets the into tag, and the folded tags are removed.

ParameterTypeRequiredNotes
tagsstring[]Yes1–20 tag names to fold in
intostringYesThe tag to keep; created if it doesn’t exist

If any named tag doesn’t exist, nothing is merged.

Deletes a tag and removes it from every idea. The ideas are kept. This cannot be undone.

ParameterTypeRequiredNotes
tagstringYes