Lific
MCP

MCP tools

Reference for the MCP tools exposed by Lific.

Lific exposes 29 MCP tools. Required parameters use non-optional input fields. Optional parameters can be omitted.

Issues

list_issues

Lists issues in a project with filters and paging.

NameTypeRequiredDescription
projectstringYesProject identifier (e.g. LIF)
statusstringNoFilter by status: backlog, todo, active, done, cancelled
prioritystringNoFilter by priority: urgent, high, medium, low, none
modulestringNoFilter by module name
labelstringNoFilter by label name
workablebooleanNoOnly return issues with no unresolved blockers
blockedbooleanNoOnly return issues with at least one unresolved blocker (inverse of workable). Each result lists its blockers as blocked_by:LIF-3,LIF-7.
created_sincestringNoOnly issues created at/after this ISO date or datetime (e.g. 2026-06-01)
created_untilstringNoOnly issues created before this ISO date or datetime (exclusive)
updated_sincestringNoOnly issues updated at/after this ISO date or datetime. Handy for "what changed recently".
updated_untilstringNoOnly issues updated before this ISO date or datetime (exclusive)
order_bystringNoSort column: sort_order (default), sequence, created, updated, or priority
orderstringNoSort direction: asc (default) or desc
limitintegerNoMax results (default 50)
offsetintegerNoZero-indexed offset for paging. The output appends a hint like "has_more: use offset=N" when more results exist.

get_issue

Gets an issue and its details.

NameTypeRequiredDescription
identifierstringYesIssue identifier like PRO-42 or ADA-7
include_commentsstringNoComment trail: recent (default, last 3), all, or none.

export

Exports as Markdown, dispatching on identifier shape: an issue (PRO-42), a page (PRO-DOC-3), or a whole project (PRO). Issues and pages return the markdown content; projects return the exported file paths.

NameTypeRequiredDescription
identifierstringYesIssue ID (PRO-42), page ID (PRO-DOC-3), or bare project ID (PRO)

create_issue

Creates an issue in a project.

NameTypeRequiredDescription
projectstringYesProject identifier (e.g. LIF)
titlestringYesIssue title
descriptionstringNoMarkdown description
statusstringNoStatus: backlog, todo, active, done, cancelled (default: backlog)
prioritystringNoPriority: urgent, high, medium, low, none (default: none)
modulestringNoModule name to assign to
labelsstring[]NoLabel names to attach
start_datestringNoStart date (ISO 8601 date, e.g. 2026-06-01)
target_datestringNoTarget/due date (ISO 8601 date, e.g. 2026-06-15)

update_issue

Updates the provided fields of an issue.

NameTypeRequiredDescription
identifierstringYesIssue identifier like PRO-42
titlestringNoNew title
descriptionstringNoNew description (markdown)
statusstringNoNew status: backlog, todo, active, done, cancelled
prioritystringNoNew priority: urgent, high, medium, low, none
modulestringNoNew module name. Omit to leave unchanged. Pass an empty string "" to unassign the issue from its module.
labelsstring[]NoReplace labels
start_datestringNoNew start date (ISO 8601 date, e.g. 2026-06-01)
target_datestringNoNew target/due date (ISO 8601 date, e.g. 2026-06-15)

bulk_update

Updates fields on every issue in a project that matches the supplied filters.

NameTypeRequiredDescription
projectstringYesProject identifier (e.g. LIF)
filter_statusstringNoOnly affect issues with this status: backlog, todo, active, done, cancelled
filter_prioritystringNoOnly affect issues with this priority: urgent, high, medium, low, none
filter_modulestringNoOnly affect issues in this module (by name)
filter_labelstringNoOnly affect issues carrying this label (by name)
set_statusstringNoNew status to set: backlog, todo, active, done, cancelled
set_prioritystringNoNew priority to set: urgent, high, medium, low, none
set_modulestringNoNew module (by name) to set

edit_issue

Replaces an exact string in an issue title or description.

NameTypeRequiredDescription
identifierstringYesIssue identifier like PRO-42
old_stringstringYesExact string to find. Must be unique unless replace_all is true.
new_stringstringYesReplacement string (must differ from old_string)
fieldstringNoField to edit: description (default) or title
replace_allbooleanNoReplace all occurrences (default false)

get_board

Gets a board view of issues in a project.

NameTypeRequiredDescription
projectstringYesProject identifier (e.g. LIF)
group_bystringNoGroup by: status, priority, or module (default: status)
include_closedbooleanNoInclude done and cancelled issues (default false). By default closed columns appear as count-only stubs.
max_per_columnintegerNoCap issues rendered per column. A ... +N more (use list_issues) tail shows the remainder.

Links two issues with a relation.

NameTypeRequiredDescription
sourcestringYesSource issue identifier (e.g. PRO-1)
targetstringYesTarget issue identifier (e.g. PRO-2)
relation_typestringYesRelation type: blocks, relates_to, or duplicate

Removes a relation between two issues.

NameTypeRequiredDescription
sourcestringYesFirst issue identifier
targetstringYesSecond issue identifier

Projects and resources

list_resources

Lists resources of a selected type.

NameTypeRequiredDescription
resource_typestringYesResource type: project, module, label, folder, page, or issue
projectstringNoProject identifier (required for most types)
folderstringNoFolder name (for page filtering)
labelstringNoLabel name (for issue or page filtering)
statusstringNoStatus filter (for page lists): draft, active, complete, or archived
order_bystringNoSort column (for page lists): sort_order (default), title, status, created, or updated
orderstringNoSort direction (for page lists): asc (default) or desc
limitintegerNoMax results (applies to issue/page lists; default 100 for issues)
offsetintegerNoZero-indexed offset for paging (applies to issue/page lists). Output appends a hint when more results exist.

manage_resource

Creates or updates a project, module, label, or folder.

NameTypeRequiredDescription
resource_typestringYesResource type: project, module, label, or folder
actionstringYesAction: create or update
current_namestringNoCurrent name identifying which module, label, or folder to update. Not used for projects. Target projects with project.
projectstringNoProject identifier (e.g. LIF). For resource_type=project with action=update, this identifies the project being updated.
namestringNoName
identifierstringNoIdentifier (for project create, e.g. PRO)
descriptionstringNoDescription
statusstringNoStatus (for module: backlog, planned, active, paused, done, cancelled)
colorstringNoColor hex (for label, e.g. #EF4444)
emojistringNoIcon for project or module: lucide:<Name> or a literal emoji. Omit to leave unchanged. Pass an empty string "" to clear it back to none.

delete

Deletes a resource selected by type and identifier.

NameTypeRequiredDescription
resource_typestringYesType of thing to delete: issue, page, project, module, label, or folder
identifierstringYesIdentifier or name (e.g. LIF-1, LIF-DOC-1, LIF for projects, or name for modules/labels/folders)
projectstringNoProject identifier (required for deleting module/label/folder by name)

Pages

get_page

Gets a page and its content.

NameTypeRequiredDescription
identifierstringYesPage identifier like LIF-DOC-1

create_page

Creates a page in a project or at workspace level.

NameTypeRequiredDescription
projectstringNoProject identifier (e.g. LIF). Omit for workspace-level page.
titlestringYesPage title
contentstringNoMarkdown content
folderstringNoFolder name to place page in
statusstringNoStatus: draft, active, complete, archived
labelsstring[]NoLabel names to attach. Labels are project-scoped, so this is ignored on workspace pages.

update_page

Updates the provided fields of a page.

NameTypeRequiredDescription
identifierstringYesPage identifier like LIF-DOC-1
titlestringNoNew title
contentstringNoNew markdown content
folderstringNoMove to folder name. Omit to leave unchanged. Pass an empty string "" to move the page back to the project root.
statusstringNoStatus: draft, active, complete, archived
pinnedbooleanNoPin (true) or unpin (false) the page to the top of the page list.
labelsstring[]NoReplace labels. Pass [] to clear all. Labels are project-scoped.

edit_page

Replaces an exact string in a page title or content.

NameTypeRequiredDescription
identifierstringYesPage identifier like LIF-DOC-1
old_stringstringYesExact string to find. Must be unique unless replace_all is true.
new_stringstringYesReplacement string (must differ from old_string)
fieldstringNoField to edit: content (default) or title
replace_allbooleanNoReplace all occurrences (default false)

Plans

create_plan

Creates a plan with an optional nested step tree.

NameTypeRequiredDescription
projectstringYesProject identifier (e.g. LIF)
titlestringYesPlan title, what this plan accomplishes
anchor_issuestringNoOptional anchor issue this plan decomposes (e.g. LIF-42). Closing it auto-archives the plan.
stepsPlanStep[]NoThe full nested step tree, authored in one call. Each step: {title, description?, issue?, done?, steps?[]}.

Each PlanStep object accepts the following fields.

NameTypeRequiredDescription
titlestringYesStep title, short and imperative
descriptionstringNoOptional longer notes/description for this step
issuestringNoIssue identifier this step mirrors (e.g. LIF-42). When set, the step auto-completes when the issue is closed, and marking the step done closes the issue.
donebooleanNoPre-mark this step done (default false)
stepsPlanStep[]NoNested child steps (any depth)

get_plan

Gets a plan and its full nested step tree.

NameTypeRequiredDescription
planstringYesPlan identifier like LIF-PLAN-3

edit_plan_step

Replaces an exact string in a plan step title or description.

NameTypeRequiredDescription
planstringYesPlan identifier like LIF-PLAN-3
step_idintegerYesNumeric step id (the #N shown by get_plan)
old_stringstringYesExact string to find. Must be unique unless replace_all is true.
new_stringstringYesReplacement string
fieldstringNoField to edit: description (default) or title
replace_allbooleanNoReplace all occurrences (default false)

update_plan_step

Updates a plan or one of its steps.

NameTypeRequiredDescription
planstringYesPlan identifier like LIF-PLAN-3
step_idintegerNoNumeric step id to operate on (the #N from get_plan). Omit to operate on the plan itself (status/title/anchor).
titlestringNoNew title for the targeted step or plan
statusstringNoPlan status: active, done, or archived (plan-level; omit step_id)
anchor_issuestringNoSet the plan's anchor issue (plan-level; omit step_id)
clear_anchorbooleanNoClear the plan's anchor issue (plan-level; omit step_id)
donebooleanNoMark the step done/undone. Marking done also closes a linked issue. The result text reports the side effect.
attach_issuestringNoAttach an issue (e.g. LIF-42) to the step
detach_issuebooleanNoDetach the step's issue reference
add_child_titlestringNoAdd a child step with this title under the targeted step
add_child_descriptionstringNoDescription for the added child step
add_child_issuestringNoIssue identifier for the added child step
move_parent_step_idintegerNoReparent the step under this step id
move_to_rootbooleanNoReparent the step to the plan root
move_positionintegerNoNew position among siblings (0-based)
deletebooleanNoDelete the step and its whole subtree
echo_treebooleanNoEcho the full re-rendered plan tree after the mutation (default false). Mutations return a compact receipt. Use get_plan to rehydrate.

Comments

add_comment

Adds a comment to an issue or page.

NameTypeRequiredDescription
identifierstringYesIssue identifier (e.g. LIF-1)
contentstringYesComment content (markdown)

list_comments

Lists comments on an issue or page.

NameTypeRequiredDescription
identifierstringYesIssue identifier (e.g. LIF-1)
authorstringNoFilter to comments by this author username
orderstringNoSort direction by creation time: asc (default, oldest first) or desc (newest first)
limitintegerNoOptional maximum comments to return (cap 500). Omit to return the full thread.
offsetintegerNoZero-indexed offset for paging in the requested order. The output appends a paging hint when more comments exist.

edit_comment

Updates the content of a comment by its numeric identifier.

NameTypeRequiredDescription
comment_idintegerYesComment id (the numeric handle returned by add_comment / shown by list_comments)
contentstringYesNew comment content (markdown)

delete_comment

Deletes a comment by its numeric identifier.

NameTypeRequiredDescription
comment_idintegerYesComment id (the numeric handle returned by add_comment / shown by list_comments)

Search and activity

Searches issues, pages, and comments by text.

NameTypeRequiredDescription
querystringYesText to search for across issues, pages, and comments
projectstringNoFilter to a specific project (e.g. LIF)
result_typestringNoRestrict results to one type: issue, page, or comment
sortstringNoSort mode: relevance (default, best match first) or recent (most recently updated first)
modestringNoMatch mode: fts (default, tokenized full-text with prefix matching) or literal (case-insensitive substring, for punctuation-heavy needles like core:sodom, [RequiredSpecs], or --trace-plans that FTS tokenizes away).
limitintegerNoMax results (default 20)
offsetintegerNoZero-indexed offset for paging. Output appends a hint when more results exist.

get_activity

Reads audit history for an issue, page, or project.

NameTypeRequiredDescription
identifierstringYesWhat to read history for: an issue identifier (PRO-42), a page identifier (PRO-DOC-3 or DOC-3), or a bare project identifier (PRO) for the whole project's feed
limitintegerNoMax entries (default 30, cap 200)
offsetintegerNoZero-indexed offset for paging. Output appends a hint when more entries exist.

On this page