← Registry

Productivity

develosaur.com

Provides an interface to interact with a hierarchical knowledge base, enabling node traversal, content retrieval, search, context gathering, and node creation.

2 endpoints16 known toolsFirst detected August 2, 2026Last detected September 16, 2026

ENDPOINT 1

https://mcp.develosaur.com/v1/mcp

No auth detected

MCP server metadata

Name
develosaur
Version
1.6.109
Capabilities
resources.listChangedprompts.listChangedtools.listChanged
Server instructions

# THE AGENT CARD - the rules that never change This card is the frozen shortlist. It rides every digest and priority payload and sits first in every surface, byte-identical, so a mid-session glance re-anchors you. The full explanations live in the working rules; the server enforces most of it and quotes the rule back when it refuses. 1. DIGEST FIRST - read review_tree(include:["digest"]) or GET /digest before anything else. Node bodies are HISTORICAL claims - verify live. 2. TITLE, NOT ID - in chat, cite nodes by TITLE alone. Ids belong in tool arguments and the Board: trailer, nowhere else. 3. FIND BEFORE CREATE - extend rather than duplicate; batch multi-node creates into one call. 4. TAG ON CREATE - tag work nodes in the SAME call that creates them, picking the tag from the board's vocabulary (the digest lists each tag's instruction; TODO is the plain-work default, not the law). Untagged = backlog: fine for ideas, but ranked by nobody. 5. START WITH prioritize - action:"start" (REST POST /priority/start). Never hand-apply IN-PROGRESS through update_nodes. 6. EVIDENCE ON CLOSE - complete_nodes carries a resolution line. Batch closes ride ONE call when you are 100% sure; a fix needing HUMAN verification gets the VALIDATE tag, not completion. 7. TAGS CARRY INSTRUCTIONS - read them in the digest vocabulary and follow them; the server quotes a tag's own instruction on refusal. 8. REFERENCE BRANCHES - hold data, not work. Update them and grow reference material under them freely (children inherit the state); never complete, delete, start or pin them, and never derive work from them. 9. PLAIN ASCII TITLES, written for humans - no emojis, no em-dashes, no UUIDs, no DONE-/FIXED- prefixes. 10. PROMOTE AFTER COMPLETING - tag the next backlog item or start the next tagged one. The board flows backlog -> pipeline -> resolved and you are the pump. 11. HAND OFF - end sessions with POST /handoff. The Board: trailer names only what you actually closed this session. # THE PIPELINE - the state machine and the loop (READ THIS FIRST) Every board runs ONE state machine, enforced by the server where it can be, taught here where it cannot: - Untagged = BACKLOG. Visible on the board, NOT in the pipeline, never in TODO/priority surfaces. - Tagged = PIPELINE. Unresolved work the TODO list must surface. Tag work nodes in the SAME call that creates them. WHICH tag is a judgment call from the board's vocabulary - the node, its branch and the user's words pick it (a UI polish task is UI, a live defect with evidence is BUG, urgent work adds CRITICAL); TODO is only the default for plain work, never an automatic stamp. BUG specifically means a live defect you have evidence for - not a guess, not a TODO. - Completed / deleted = RESOLVED. Completed work leaves every work surface but is kept, listed under Completed, and the server REFUSES writes to it with a teaching message; reopening (clearing completed) is a sanctioned verb with a reason, never a side effect. Deleted is gone: permanent, full cleanup. Nothing is ever parked. - Informative = REFERENCE. A data-holder branch (instructions, runbooks, architecture notes): an escape hatch for content that must stay on the board without competing for work attention. It never enters backlog, pipeline or stale candidates. Update it and grow reference material under it freely - everything under it inherits the reference state, so grown content can never leak into a work surface - but the server refuses complete / delete / start / pin on it, and work is never derived from it. Mark a branch with update_nodes({informative:true}). NOT the same thing as the pinned head: pinning puts work at the top of the priorities list; informative keeps data OUT of it. ## READ ORDER - digest first, tree second, bodies last 1. DIGEST FIRST: review_tree(include:['digest']) or GET /v1/projects/<id>/digest. GENERATED on every read: backlog intake candidates, the pipeline ranking, recent completions, stale candidates, the pinned head with the DOING layer, and the tag vocabulary with each tag's instruction. A number in a node body is a HISTORICAL claim - verify it live before quoting it in a report. 2. TREE SECOND: review_tree for structure. 3. NODE BODIES LAST, always scoped with read_nodes. ## THE LOOP - one verb per step PLAN -> TAG -> PRIORITIZE -> UPDATE -> VALIDATE -> COMPLETE/DELETE 1. PLAN. find before you write; extend an existing node instead of duplicating it. Build branches with grow (a markdown outline, one call); create_nodes is the precision form when entries need individual scores, deadlines or blockers at creation. 2. TAG. In the same create call, from the vocabulary (the state machine above). 3. PRIORITIZE. prioritize({action:"start"}) on the one or two LEAF tasks you are doing now - it tags IN-PROGRESS and pins in one call. In-branch order is update_nodes with position. Started the WRONG node? Unstart it immediately (unpin plus clearing IN-PROGRESS) and say so - but never clear IN-PROGRESS to tidy up: work started and abandoned is a fact the board must keep. 4. UPDATE. Do the work, then write outcomes back as you go: implementation notes and decisions into content_markdown, evidence into the completion. 5. VALIDATE. Before closing anything, the state must match reality: complete only what the code proves, and cite the proving path. 6. COMPLETE / DELETE. The only two exits from the DOING layer and the only two terminal states. complete_nodes REQUIRES a tag (the node entered the pipeline) and an evidence line naming what was done and where it is visible - the server refuses otherwise and the error teaches the rule. Never write DONE / FIXED / RESOLVED into titles or bodies instead: prose is invisible, completion state is what the list reads. Then PROMOTE - the intake step: after complete_nodes, TAG the next backlog item or start the next tagged one. A completion plus a promotion in the same session is the healthy shape; the digest flags completions with no promotion. The board flows backlog -> pipeline -> resolved continuously, and you are the pump. At session end, one handoff call records the close-out and returns the Board: commit trailer ready-made (the trailer rules are in the working rules below). ## TAGS CARRY THEIR OWN INSTRUCTIONS Every tag may carry a user-written instruction block - the policy text agents follow when acting on nodes that carry it (for example TODOFAST: do them as side tasks whenever you can; REFERENCE: read, update, add to it, never derive work from it). Read them from the digest's vocabulary section before acting on a tag; read_nodes, find and priority responses also attach the instructions for the tags they reference. Global tags additionally carry mechanical effects the server enforces (exclude_from_priority, reference, workflow_state); user tags are instruction-only. When you violate a tag's rule, the server refuses and quotes the tag's own instruction back at you. # WORK THE BOARD - the working rules You are connected to a Develosaur project graph: a hierarchical task and knowledge tree shared by the user and every agent they run. It is the source of truth for planning and tracking work. Humans see it as a live visual canvas; you see it through verbs. MCP tools and REST routes are the same board under the same rules. Each verb's own description carries its contract, and the server teaches on refusal - when it says no, read the message, it names the rule. The deep procedure chapters (PLAN, WORK, SYNC, ORGANIZE, REVIEW) ship as skills and MCP prompts: load the one you need instead of holding all five in mind. ## WHO DECIDES WHAT - the autonomy matrix You decide and act on your own, no permission needed: - Decomposing a topic or plan into a branch of nodes; extending an existing node instead of duplicating it; choosing the parent. - Applying EXISTING tags, and setting v_score / e_score wherever the plan or the code gives you evidence. Unscored is honest when you have none; a fabricated 7 is not. - Ordering siblings inside the branch you are working (position), and wiring blocked_by edges you can justify in one sentence. - Starting work, updating content, completing. - Deleting nodes you created yourself this session. For anything you did not create, run dry_run first and name the cascade in your reply. - Reordering the global pinned head (pin / unpin / reorder). The user orders the work THROUGH you - "do this next", "pin that branch" - and the head is how that intent becomes the ranked list. Keep it small and leaf-only, and prefer the user's explicit direction over your own re-ranking. This is execution autonomy, not editorial: translate the user's direction without asking permission, but do not re-rank the head from your own judgment - an unprompted cross-branch re-ranking is PROPOSED in your reply, not done (the same rule the priority section and the ORGANIZE chapter state from their own angles). Ask the user first: - Creating or deleting a TAG. The tag vocabulary is shared between the user and every agent: propose the tag, create it only after a yes in this conversation. - Bulk destructive changes to content you did not create. The user's own canvas actions always win. Never revert them. ## The HANDOFF commit trailer A node and the commit that resolves it live in two different systems, and nothing joins them unless you write the join. End every code-changing turn with a suggested commit message the user can paste as-is: <subject line: what changed, imperative, no node ids> Board: <id> closed, <id> updated, <id> investigated Full node ids, comma-separated, one Board: line. Once it is in history, `git log --grep="Board:.*<id>"` answers "which commit resolved this node" forever; without it, the answer costs a whole session of reading diffs. The handoff verb returns this Board: line ready-made from what you passed it (and hands the user the board_url every write returns); compose it by hand only when the turn's board writes did not go through handoff. Rules that keep the trailer trustworthy: name a node only if you actually touched its subject matter this turn; say closed only for nodes you also completed on the board; if you changed no code, write no trailer. An overclaiming trailer is worse than none, because the next audit believes it. Handoff FINISHES work - it never reorders the head, never pins, never queues next steps (see the autonomy matrix). ## Text style (STRICT - every title, every content write) - NO emojis. Anywhere. They add noise to the graph view and read as unprofessional in a tracker. - NO em-dashes or en-dashes. Use a plain hyphen or rephrase. They are an AI-text tell users dislike, and they break substring search: find will not match "X - Y" when the node says "X <em-dash> Y". - Plain ASCII titles, written for HUMANS: never a UUID, an id prefix or a timestamp (the server rejects id-looking titles). - Plain UTF-8 markdown only. NEVER base64-encode content. Never paste a whole document into one node - split it into a tree, one idea per node. The server rejects flagrant violations of this rule outright. ## Referencing another node - write a mention, never a bare id In node content: Blocked by [Rework the auth flow](pm-node://<node_id>) until that lands. A mention renders as a clickable chip carrying that node's CURRENT title, so it survives renames. A bare id is a dead end: it is not clickable, and find matches title and content, never ids, so searching an id returns only the nodes that mention it. Do not write a title next to a raw id as a workaround - that is the stale-label problem mentions exist to solve. IN CHAT (your reply to the user) there is nothing to click, so cite nodes by TITLE and by title ALONE - a title can be pasted into the board search, an id cannot, and an id in prose is noise the user has to look up. The same goes for PROJECT ids: say the project's name. Ids belong in tool arguments and in the Board: trailer. Nowhere else. ## Images and video on a node - Screenshots, slides, diagrams: attach_media (REST: POST /v1/projects/<id>/nodes/<nodeId>/media). It uploads to the board's own storage and appends the image to the node body in one call, exactly like a user paste. Many attachments, one call. Pass a local `path` when you run on the user's machine; never paste base64 into content_markdown. - Video: attach the YouTube, Vimeo or Loom link as `url` - it renders as a player. Video FILES are not uploaded. - Retrying is safe: one file is stored once and never appended twice. ## Retrieval - which tool when Pick by intent, not by "which returns the most data". On any project larger than ~150 active nodes, an unscoped read dominates your context window. | Intent | Tool | |---|---| | "What is the structural shape of the project?" | review_tree | | "What does this project know about X?" | gather_context(query) | | "Where does this NEW node belong / is there a duplicate?" | find(query, mode:"placement") | | "Semantic neighbors of an existing node" | find(node_id, mode:"related") | | "Nodes that MEAN something similar" | find(query, mode:"semantic") | | "Exact text match on title or content" | find(query) | | "Full details on specific nodes" | read_nodes(ids:[...]) | | "Find ## Decision blocks across the project" | find(query, mode:"decisions") | | "What needs cleanup?" | review_tree(include:["health"]) | | "What did someone start and abandon?" | review_tree(include:["stale"]) | | "Walk derived semantic edges from an anchor" | edges(action:"walk", node_id) | | "Everything in one branch" | read_nodes(branch:<id>) | Notes: - gather_context returns the SHAPE of a topic match - titles plus why each matched - not bodies. Follow up with read_nodes on the ids worth reading. - find is one verb, five modes; exact substring is the default and free. Call find(mode:"placement") BEFORE create_nodes or move_nodes on any non-trivial placement; a duplicate candidate at similarity 0.7 or above means EXTEND that node instead of creating a new one. - read_nodes is always scoped: ids or one branch, paged, with the remainder reported. There is no unscoped read on purpose. Nodes carry comment_count; pass include_comments to read the user's notes - if a node has comments, read them before deciding what it needs. - edges(action:"repair") NEVER deletes a node: dead edges are cleared, orphaned real content is returned for reattachment via move_nodes. - After a batch create, review_tree confirms one root and zero orphans. ## The priority model - a small pinned head over a tree-derived tail There is NO priority formula. The TODO list is explicit ordering plus hard constraints, in four layers, reported per entry as source: 1. doing - IN-PROGRESS work, at the very top, in pinned order. 2. overdue - past-deadline work, deepest-overdue first. A fact, not an opinion. 3. pinned - the manually curated head, manual_priority order (1 = top). Small by design. The only place cross-branch interleaving is expressed. 4. derived - everything else, depth-first over the tree honoring sibling order. The same order review_tree shows. Three ways to move something - pick by intent: - "I am working on this now" -> prioritize({action:"start", node_ids}). - "One of the next few things regardless of branch" -> prioritize pin / reorder. In-branch work rarely needs this; cross-branch reordering is agreed with the user (see the autonomy matrix). - "Before its siblings within its branch" -> update_nodes({id, position}). The derived tail follows automatically. This one is always yours. Never write manual_priority by hand - the head verbs keep it contiguous 1..N for you; a hand-written 999 pins at ordinal 999 and breaks the head. Unpinning is not deprioritizing: the node falls back to its derived tree position. Completing a node unpins it automatically. Overdue pulls to the top automatically, and a blocked node never sorts above its blockers. The pipeline gate: a node surfaces in TODO only if it is IN-PROGRESS, has a deadline, or carries any tag. Ordering comes from the pinned head, tree order and v_score - never from the tag itself. v_score and e_score are advisory - they feed the value/effort chart, not the TODO sort. Score leaf tasks, not containers. Effort math: effort_days = (e_score / 10) * sprint_length_days (default 14). Stale work, two kinds: review_tree(include:["stale"]) finds ABANDONED IN-PROGRESS nodes - resolve your own, and ASK the user whether complete or delete applies to anyone else's; never quietly clear the tag. sitrep's stale list is old open work never started - surface it, do not bulk-rank it unprompted. blocked_by is a first-class field on create and update; the server rejects cycles (naming the chain it would close) and unknown ids. Deadlines: pass deadline (YYYY-MM-DD) on create or update; the server stores the directive form for you. ## The active objective - what the derived tail orders by Nothing on a board says what the team is doing NOW unless someone says it. prioritize({action:"objective", node_id}) (REST POST /priority/objective) declares that branch; the derived layer then puts everything under it before everything outside it, in tree order, with no pinning, and every ranked entry carries a reason line naming its layer, its objective, and the blocker it sits behind. Set it when the user names the goal; clear:true drops it; a resolved objective orders nothing and the digest says so. The pinned head still wins above the tail for cross-branch interleaving, so the objective is the coarse dial and the head is the fine one. ## Curating the head is part of the loop The digest's head section reports pinned_count, curated_at and the objective, and says EMPTY or STALE in plain words. An empty head means the list below DOING is raw tree order; a head older than a week was curated for a different week. When you read either, SAY SO before picking work, and PROPOSE a head or an objective in your reply - the user directs the head through you (autonomy matrix), so an unprompted re-ranking is proposed, not done. When the user has named the goal, setting the objective and reordering the head are execution, not editorial: do them and report. ## Claims - start is a lease prioritize({action:"start"}) (REST POST /priority/start) CLAIMS the node: it stamps you as holder for 45 minutes, every write you make to the node renews the lease, and a start by anyone else on a node you hold is refused with your name and the expiry. Pass agent, a stable name for your session, so the board can tell you apart from other agents on the same host (REST: body agent or the X-Develosaur-Agent header). takeover:true displaces a live lease; use it only when you know the holder is gone. Completing, clearing IN-PROGRESS, POST /priority/release, or handoff releases; expiry releases silently, and a node whose holder went quiet shows abandoned_by wherever it is read. Digest and priority payloads show held_by and lease_until on every held node: that is who is working on what. Develosaur leases TASKS, never files or branches. ## The frontier - the ready SET, for workers The ranked list answers "where are we" for a reader. A worker that will ACT on a row asks a different question, "what may I take right now", and the answer is a set, not a sequence: review_tree(include:["frontier"]) or GET /priority/frontier. An entry is on the frontier when it is in the pipeline, inside its work window, every blocker is resolved, nobody holds a live lease on it, and it is a leaf. An entry carrying abandoned_by was started by someone who went quiet: take it, but read its notes first. Order inside the set is the ranker's tie-break only, and no global rank is exposed: anything on the frontier is legitimate to take, so take the first row you can finish. Frontier FIRST, then filter. Pass under_parent_id or tag to the frontier read itself; never filter the ranked list and take its top item. The second composition hands a UI worker a screen whose API does not exist yet, and it fails silently because the worker's list looks reasonable. An empty frontier is a RESULT, not an error. It carries a starvation reason: cycle (a blocker cycle among unresolved nodes, members named; break one edge), nothing_tagged (backlog only; tag work in), all_blocked (finish the blocker unblock_first names, or decompose it), all_held (every entry is leased; finish or hand off), undecomposed (only containers are ready; split one into leaves wired with blocked_by), or window_closed. Report the reason; do not invent work around it. The report also carries pool (who holds what right now) and starving, true when the ready set is narrower than the active pool: that is the cue to run the decomposer pass (PLAN chapter), not to take a container. ## SANDBOX MODE (anonymous trial) - READ FIRST This connection is an anonymous develosaur sandbox: a free trial project, no account, no credentials. - LIVE BOARD: https://develosaur.com/sandbox/057c7300fc1e7384474a44bc706e96a03146594156a4822c52dc6b581526c974 - share this link with your user IMMEDIATELY (in your first reply) so they can watch the board grow in real time while you build. - The full core verb set works: review_tree, read_nodes, find, grow, create_nodes, update_nodes, complete_nodes, move_nodes, delete_nodes, edges, prioritize, capture. - Kept for 7 days after the last change, then deleted. It survives an idle gap and a server restart, so the user can close the tab and come back. Hard caps: 500 nodes, 8MB. - Tags are a fixed set: TODO, BUG, CRITICAL, VALIDATE, IN-PROGRESS, COMPLETED. tags can list them but not create or delete here. - Semantic tools are unavailable without an account: find with mode semantic/related/decisions/placement, gather_context, and edges walk/regenerate all return empty results with a note. Use review_tree for structure and find in exact mode for retrieval. - Tell the user early that this is a free trial board that expires 7 days after the last change. When they build something worth keeping, point them at the "Keep this board" button on the live board page - free sign-up, nothing lost.

Known tools 16

review_tree

ORIENT YOURSELF.

Inferred read-only
read_nodes

Read the FULL CONTENT of specific nodes.

Inferred read-only
find

FIND SPECIFIC NODES.

Inferred read-only
gather_context

SEARCH THIS PROJECT BOARD BY TOPIC.

Inferred read-only
create_nodes

Create one or many nodes in a single call.

Potential side effects
grow

Grow a whole branch from a MARKDOWN OUTLINE in one call - the develosaur write-language.

Potential side effects
update_nodes

Edit one or many nodes in a single call.

Potential side effects
complete_nodes

Mark one or many nodes complete.

Inferred read-only
handoff

Close out a session in ONE call: complete finished nodes, stamp progress notes on advanced ones, record discovered subtasks - and get the ready-made Board: trailer back for your reply.

Inferred read-only
move_nodes

Reparent one or many nodes.

Inferred read-only
delete_nodes

PERMANENTLY delete one or many nodes and everything under them.

Potential side effects
edges

Work with the links between nodes, and fix the hierarchy when it goes wrong.

Inferred read-only
prioritize

Control what sits at the top of the TODO list.

Inferred read-only
tags

Manage the project tag vocabulary: list what exists, create a new tag, or delete one.

Potential side effects
projects

Work at the PROJECT level rather than the node level: which boards exist, and what the current one looks like.

Inferred read-only
capture

Drop a quick note onto the board without deciding where it belongs yet.

Potential side effects

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.develosaur]
url = "https://mcp.develosaur.com/v1/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "develosaur": {
      "type": "http",
      "url": "https://mcp.develosaur.com/v1/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: develosaur
Remote MCP URL: https://mcp.develosaur.com/v1/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "develosaur": {
      "url": "https://mcp.develosaur.com/v1/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "develosaur": {
      "type": "http",
      "url": "https://mcp.develosaur.com/v1/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "develosaur",
  "transport": "streamable-http",
  "url": "https://mcp.develosaur.com/v1/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 2

https://mcp.develosaur.com/v1/user/mcp

Auth required

Known tools 0

No tool metadata was available in the registry cache.

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.develosaur-com]
url = "https://mcp.develosaur.com/v1/user/mcp"
enabled = true
bearer_token_env_var = "MCP_BEARER_TOKEN"

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Code

.mcp.json

{
  "mcpServers": {
    "develosaur-com": {
      "type": "http",
      "url": "https://mcp.develosaur.com/v1/user/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Desktop

Settings → Connectors → Add custom connector

Name: develosaur-com
Remote MCP URL: https://mcp.develosaur.com/v1/user/mcp

Add the URL as a custom connector, then complete its supported authorization flow. Claude Desktop remote connectors are configured in the UI.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "develosaur-com": {
      "url": "https://mcp.develosaur.com/v1/user/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Visual Studio Code

.vscode/mcp.json

{
  "servers": {
    "develosaur-com": {
      "type": "http",
      "url": "https://mcp.develosaur.com/v1/user/mcp",
      "headers": {
        "Authorization": "Bearer ${input:mcp-token}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "mcp-token",
      "description": "develosaur-com bearer token",
      "password": true
    }
  ]
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Generic MCP

Client-specific MCP configuration

{
  "name": "develosaur-com",
  "transport": "streamable-http",
  "url": "https://mcp.develosaur.com/v1/user/mcp",
  "headers": {
    "Authorization": "Bearer YOUR_BEARER_TOKEN"
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Trust Data Available

BuiltWith Trust API v2 evidence for develosaur.com was fetched 2026-08-11T02:28:05.359Z and is being refreshed.

Trust status Trusted

develosaur.com is assessed as Trusted: Domain has an established technology history spanning over a year.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.