{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pvsegmh45dpp","handle":"forge-engine","url":"https://wellknown.network/agents/forge-engine","links":{"self":"https://wellknown.network/agents/forge-engine/record.json","html":"https://wellknown.network/agents/forge-engine","markdown":"https://wellknown.network/agents/forge-engine/record.md","api":"https://wellknown.network/api/v1/agents/forge-engine","status":"https://wellknown.network/api/v1/agents/forge-engine/status","claim":"https://wellknown.network/agents/forge-engine/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/forge-engine/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:mmvdabzadclebfxyzudg.supabase.co:server:forge-engine","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Forge Engine","summary":"Design spec + milestones AI coding agents read before building; drift flagged, changes reviewed.","description":"Design spec + milestones AI coding agents read before building; drift flagged, changes reviewed.","publisher":{"name":"app.forgeengine","url":null},"homepage":"https://forgeengine.app/","repository":"https://github.com/alongkornonline2019/forge-mcp","version":"0.2.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mmvdabzadclebfxyzudg.supabase.co/functions/v1/forge-mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-29T16:00:53.845275Z","publishedAt":"2026-07-29T16:00:53.845275Z","registryName":"app.forgeengine/forge"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[],"categories":[]},"observed":{"status":"unknown","statusReason":"Not checked yet.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[{"at":"2026-09-05T18:28:06.842Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":142,"error":null,"detail":{"tools":[{"name":"get_help","description":"Forge how-to on demand (no project needed): propose→adopt, what a System is, Balance Lab formats, sign-in. Call when unsure."},{"name":"get_workflow","description":"Run FIRST in a new repo (no project): first-connect routine + the working-agreement block to ADD to AGENTS.md/CLAUDE.md now (tell the user in one line; remove i"},{"name":"import_from_code","description":"One-command codebase import: recipe + batch id — propose one Context overview + one System per real module; the owner adopts all at once."},{"name":"design_ui_from_systems","description":"Recipe to design the UI from Systems (user request only): steps + batch id — confirm canvas aspect, then screens + PLACED elements + edges in one batch."},{"name":"post_log","description":"Append a build-log entry to Activity — what you built/decided (commit-note style)."},{"name":"get_project_context","description":"FULL design dump — LARGE, last resort; prefer get_project_meta + list_*/get_*/search."},{"name":"list_projects","description":"Projects your key reaches (id, name, role); pass an id as project_id to switch."},{"name":"get_project_meta","description":"START HERE. Tiny overview: counts, members, task claims + working_now (avoid collisions), forge_workflow_version."},{"name":"trace_ui_from_image","description":"SECONDARY (user-driven UI): turn a screen's REFERENCE IMAGE into placed elements. Returns the image itself plus the recipe — the canvas resolution, the fraction"},{"name":"get_stale","description":"What has drifted between the Idea lane and the System Specs — the design's own out-of-sync list, computed deterministically (no AI, no tokens). Three kinds: Ide"},{"name":"resync_from_idea","description":"The recipe for re-syncing ONE changed Idea note into the specs that depend on it — the same scoped job the app's \"Re-sync N systems\" button does, minus the butt"},{"name":"get_design_document","description":"The WHOLE design as one readable document — Vision (+ Project DNA) → every System spec → reference notes, compiled deterministically from the current design. Re"},{"name":"set_design_overview","description":"Write the Design Document's Overview — the human-readable page a new team member reads first. WRITES DIRECTLY (no Inbox): it is a derived, clearly-labelled AI s"},{"name":"get_briefing","description":"ONE-CALL orientation before you build: pass `files` you're about to edit (or a `task`) → the systems that own them, each with Goal + Acceptance + build status/f"},{"name":"get_system","description":"ONE system's full spec (Goal/Boundary/Acceptance, markdown, sources, status) + pending Inbox changes touching it."},{"name":"list_systems","description":"All systems, compact: id, name, status, 1-line goal."},{"name":"get_build_region","description":"System→code map per built system: implementing files, status, drift flag, last_commit, and acceptance-evidence COUNTS. Mapped files gone from the repo? report_d"},{"name":"report_drift","description":"Flag CODE DRIFT — mapped files no longer match the repo. Advisory; a fresh report_build_status clears it."},{"name":"get_history","description":"DESIGN MEMORY: recorded decisions/logs/rejections with who/when. Read BEFORE changing a system's direction; empty = no recorded WHY — don't invent one."},{"name":"get_impact","description":"BLAST RADIUS of a system (deterministic): upstream context, siblings, dependent screens/milestones, files, code-coupled systems, pending Inbox, recent activity."},{"name":"get_rejections","description":"Owner's DECLINED list — check at session start; follow each entry's guidance, then resolve_rejection(title)."},{"name":"resolve_rejection","description":"Report you REVERTED a declined change (unlocks the owner's Clear). Call after realigning the build."},{"name":"list_screens","description":"All screens, compact: id, name, purpose, status."},{"name":"get_screen","description":"ONE screen's layout: canvas `resolution` (use THESE px), elements x/y/w/h, links, popups. Read before editing a screen. has_reference_image:true → get_screen_im"},{"name":"get_screen_image","description":"A screen's reference image (HUD background) as an actual IMAGE you can see — reads the stored file inline (signed-URL fallback past 4MB)."},{"name":"update_element","description":"Move/resize/relabel an element — DIRECT, live. element_id (preferred) or screen+label; x+y also places an unplaced one."},{"name":"withdraw_proposal","description":"Remove YOUR OWN still-pending Inbox item (id from the propose response / get_inbox)."},{"name":"delete_entity","description":"PROPOSE a delete → Inbox (owner adopts; nothing deleted now). id preferred or exact name; flow_edge may use from+to."},{"name":"dedupe","description":"Remove duplicate-named entries (keep first) — DIRECT, destructive."},{"name":"reorder","description":"Reorder milestones / tasks / elements — DIRECT. order = ids in new order; omitted keep relative order."},{"name":"list_milestones","description":"All milestones, compact: id, name, weeks, order, done/total."},{"name":"get_milestone","description":"ONE milestone: goal, weeks, difficulty, systems, every task (id/name/done/status/effort)."},{"name":"list_activity","description":"Change history {who, change, entity, kind, when}, newest first; filter kind/who/query."},{"name":"get_inbox","description":"PENDING Inbox (the owner's triage queue). Check BEFORE proposing — avoid duplicates. Read-only."},{"name":"search","description":"Keyword search — compact hits {kind, id, name} + snippet."},{"name":"propose_system","description":"Propose a NEW system → Inbox. spec = ## Goal / ## Boundary (Owns · Doesn't own) / ## Acceptance. Exists? use update_system. (Alias: create_proposal.)"},{"name":"propose_context","description":"Propose a new/updated Idea note → Inbox. Title-match to update; send the COMPLETE revised text. Set resync:true ONLY when you rewrote the note FROM the current "},{"name":"propose_dna","description":"Propose Project DNA and/or Tech Notes → Inbox (at least one)."},{"name":"update_system","description":"Propose a system UPDATE → Inbox diff. get_system first; send the FULL revised spec. new_title renames; context_title+context bundles the Idea update. Set resync"},{"name":"get_balance","description":"Read Balance Lab: stat tables, boards with EVALUATED values, scenarios."},{"name":"propose_balance_table","description":"Propose a stat-doc TABLE → Inbox. csv (header; `key%` = percent; first column = name) OR schema+rows. Adopting REPLACES same-named."},{"name":"propose_balance_board","description":"Propose a node board → Inbox. Kinds const|formula|item|sheet|loadout|picker|pool|process|note|frame; formulas reference blocks by NAME; omit x/y = auto-layout. "},{"name":"propose_milestone","description":"Propose a NEW milestone (+ optional tasks) → Inbox."},{"name":"report_milestone_progress","description":"Mark existing-milestone tasks done → Inbox progress card (owner adopts the ticks)."},{"name":"report_build_status","description":"Report a SYSTEM's status (todo|in-progress|implemented) — DIRECT, live. ALWAYS pass files (full list — it REPLACES); non-todo with no files shows done-but-EMPTY"},{"name":"propose_flow_edge","description":"SECONDARY (user-driven UI): propose a link between two existing screens → Inbox."},{"name":"propose_element","description":"SECONDARY (user-driven UI): propose an element onto a screen → Inbox. ALWAYS pass x/y/w/h (px on the screen's `resolution` from get_screen); no coords = unplace"},{"name":"propose_screen","description":"SECONDARY (user-driven UI): propose a NEW screen → Inbox. parent = popup over that screen; purpose grounds AI suggestions. Whole UI? design_ui_from_systems firs"},{"name":"report_screen_status","description":"Report a SCREEN's status (todo|in-progress|implemented) → Inbox."},{"name":"rename_screen","description":"Rename a screen IN PLACE — DIRECT; links/elements follow (id-referenced)."},{"name":"update_milestone","description":"Edit milestone goal/weeks/difficulty/name — DIRECT. new_name renames (never delete+recreate)."},{"name":"add_task","description":"Add a task to a milestone — DIRECT. assignee:\"me\" claims on creation."},{"name":"next_task","description":"DISPATCHER (multi-agent): atomically pick + claim the next task to build — walks milestones in order, skips human-only tasks and any task whose systems share co"},{"name":"update_task","description":"Edit a task or CLAIM it — DIRECT. assignee:\"me\"+status:\"in-progress\" claims (errors if held; force:true for stale); done:true or assignee:\"\" releases."}],"toolCount":54,"serverName":"forge","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_help","description":"Forge how-to on demand (no project needed): propose→adopt, what a System is, Balance Lab formats, sign-in. Call when unsure."},{"name":"get_workflow","description":"Run FIRST in a new repo (no project): first-connect routine + the working-agreement block to ADD to AGENTS.md/CLAUDE.md now (tell the user in one line; remove i"},{"name":"import_from_code","description":"One-command codebase import: recipe + batch id — propose one Context overview + one System per real module; the owner adopts all at once."},{"name":"design_ui_from_systems","description":"Recipe to design the UI from Systems (user request only): steps + batch id — confirm canvas aspect, then screens + PLACED elements + edges in one batch."},{"name":"post_log","description":"Append a build-log entry to Activity — what you built/decided (commit-note style)."},{"name":"get_project_context","description":"FULL design dump — LARGE, last resort; prefer get_project_meta + list_*/get_*/search."},{"name":"list_projects","description":"Projects your key reaches (id, name, role); pass an id as project_id to switch."},{"name":"get_project_meta","description":"START HERE. Tiny overview: counts, members, task claims + working_now (avoid collisions), forge_workflow_version."},{"name":"trace_ui_from_image","description":"SECONDARY (user-driven UI): turn a screen's REFERENCE IMAGE into placed elements. Returns the image itself plus the recipe — the canvas resolution, the fraction"},{"name":"get_stale","description":"What has drifted between the Idea lane and the System Specs — the design's own out-of-sync list, computed deterministically (no AI, no tokens). Three kinds: Ide"},{"name":"resync_from_idea","description":"The recipe for re-syncing ONE changed Idea note into the specs that depend on it — the same scoped job the app's \"Re-sync N systems\" button does, minus the butt"},{"name":"get_design_document","description":"The WHOLE design as one readable document — Vision (+ Project DNA) → every System spec → reference notes, compiled deterministically from the current design. Re"},{"name":"set_design_overview","description":"Write the Design Document's Overview — the human-readable page a new team member reads first. WRITES DIRECTLY (no Inbox): it is a derived, clearly-labelled AI s"},{"name":"get_briefing","description":"ONE-CALL orientation before you build: pass `files` you're about to edit (or a `task`) → the systems that own them, each with Goal + Acceptance + build status/f"},{"name":"get_system","description":"ONE system's full spec (Goal/Boundary/Acceptance, markdown, sources, status) + pending Inbox changes touching it."},{"name":"list_systems","description":"All systems, compact: id, name, status, 1-line goal."},{"name":"get_build_region","description":"System→code map per built system: implementing files, status, drift flag, last_commit, and acceptance-evidence COUNTS. Mapped files gone from the repo? report_d"},{"name":"report_drift","description":"Flag CODE DRIFT — mapped files no longer match the repo. Advisory; a fresh report_build_status clears it."},{"name":"get_history","description":"DESIGN MEMORY: recorded decisions/logs/rejections with who/when. Read BEFORE changing a system's direction; empty = no recorded WHY — don't invent one."},{"name":"get_impact","description":"BLAST RADIUS of a system (deterministic): upstream context, siblings, dependent screens/milestones, files, code-coupled systems, pending Inbox, recent activity."},{"name":"get_rejections","description":"Owner's DECLINED list — check at session start; follow each entry's guidance, then resolve_rejection(title)."},{"name":"resolve_rejection","description":"Report you REVERTED a declined change (unlocks the owner's Clear). Call after realigning the build."},{"name":"list_screens","description":"All screens, compact: id, name, purpose, status."},{"name":"get_screen","description":"ONE screen's layout: canvas `resolution` (use THESE px), elements x/y/w/h, links, popups. Read before editing a screen. has_reference_image:true → get_screen_im"},{"name":"get_screen_image","description":"A screen's reference image (HUD background) as an actual IMAGE you can see — reads the stored file inline (signed-URL fallback past 4MB)."},{"name":"update_element","description":"Move/resize/relabel an element — DIRECT, live. element_id (preferred) or screen+label; x+y also places an unplaced one."},{"name":"withdraw_proposal","description":"Remove YOUR OWN still-pending Inbox item (id from the propose response / get_inbox)."},{"name":"delete_entity","description":"PROPOSE a delete → Inbox (owner adopts; nothing deleted now). id preferred or exact name; flow_edge may use from+to."},{"name":"dedupe","description":"Remove duplicate-named entries (keep first) — DIRECT, destructive."},{"name":"reorder","description":"Reorder milestones / tasks / elements — DIRECT. order = ids in new order; omitted keep relative order."},{"name":"list_milestones","description":"All milestones, compact: id, name, weeks, order, done/total."},{"name":"get_milestone","description":"ONE milestone: goal, weeks, difficulty, systems, every task (id/name/done/status/effort)."},{"name":"list_activity","description":"Change history {who, change, entity, kind, when}, newest first; filter kind/who/query."},{"name":"get_inbox","description":"PENDING Inbox (the owner's triage queue). Check BEFORE proposing — avoid duplicates. Read-only."},{"name":"search","description":"Keyword search — compact hits {kind, id, name} + snippet."},{"name":"propose_system","description":"Propose a NEW system → Inbox. spec = ## Goal / ## Boundary (Owns · Doesn't own) / ## Acceptance. Exists? use update_system. (Alias: create_proposal.)"},{"name":"propose_context","description":"Propose a new/updated Idea note → Inbox. Title-match to update; send the COMPLETE revised text. Set resync:true ONLY when you rewrote the note FROM the current "},{"name":"propose_dna","description":"Propose Project DNA and/or Tech Notes → Inbox (at least one)."},{"name":"update_system","description":"Propose a system UPDATE → Inbox diff. get_system first; send the FULL revised spec. new_title renames; context_title+context bundles the Idea update. Set resync"},{"name":"get_balance","description":"Read Balance Lab: stat tables, boards with EVALUATED values, scenarios."},{"name":"propose_balance_table","description":"Propose a stat-doc TABLE → Inbox. csv (header; `key%` = percent; first column = name) OR schema+rows. Adopting REPLACES same-named."},{"name":"propose_balance_board","description":"Propose a node board → Inbox. Kinds const|formula|item|sheet|loadout|picker|pool|process|note|frame; formulas reference blocks by NAME; omit x/y = auto-layout. "},{"name":"propose_milestone","description":"Propose a NEW milestone (+ optional tasks) → Inbox."},{"name":"report_milestone_progress","description":"Mark existing-milestone tasks done → Inbox progress card (owner adopts the ticks)."},{"name":"report_build_status","description":"Report a SYSTEM's status (todo|in-progress|implemented) — DIRECT, live. ALWAYS pass files (full list — it REPLACES); non-todo with no files shows done-but-EMPTY"},{"name":"propose_flow_edge","description":"SECONDARY (user-driven UI): propose a link between two existing screens → Inbox."},{"name":"propose_element","description":"SECONDARY (user-driven UI): propose an element onto a screen → Inbox. ALWAYS pass x/y/w/h (px on the screen's `resolution` from get_screen); no coords = unplace"},{"name":"propose_screen","description":"SECONDARY (user-driven UI): propose a NEW screen → Inbox. parent = popup over that screen; purpose grounds AI suggestions. Whole UI? design_ui_from_systems firs"},{"name":"report_screen_status","description":"Report a SCREEN's status (todo|in-progress|implemented) → Inbox."},{"name":"rename_screen","description":"Rename a screen IN PLACE — DIRECT; links/elements follow (id-referenced)."},{"name":"update_milestone","description":"Edit milestone goal/weeks/difficulty/name — DIRECT. new_name renames (never delete+recreate)."},{"name":"add_task","description":"Add a task to a milestone — DIRECT. assignee:\"me\" claims on creation."},{"name":"next_task","description":"DISPATCHER (multi-agent): atomically pick + claim the next task to build — walks milestones in order, skips human-only tasks and any task whose systems share co"},{"name":"update_task","description":"Edit a task or CLAIM it — DIRECT. assignee:\"me\"+status:\"in-progress\" claims (errors if held; force:true for stale); done:true or assignee:\"\" releases."}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.forgeengine/forge","url":"https://registry.modelcontextprotocol.io/v0/servers/app.forgeengine%2Fforge","firstSeenAt":"2026-09-05T15:22:05.821Z","fetchedAt":"2026-09-05T15:22:05.821Z","normalizedAt":"2026-09-05T15:22:05.821Z"}]},"firstSeenAt":"2026-09-05T15:22:05.821Z","updatedAt":"2026-09-05T15:22:16.571Z"}