Skip to content

MCP tools

majlis mcp serves workspace tools over stdio. Every call reaches the same local daemon and application services as the CLI, terminal and dashboard.

Terminal window
majlis mcp

Daemon startup maintains MCP entries at documented configuration paths for detected harnesses. Other MCP clients can launch this command through their own server configuration. Configuration alone does not authenticate a native coding session or grant an operator role.

Explicit bindings take precedence. Native attestation can link a call to an exact durable native session; Codex thread metadata must match its registered native cache and cannot fall back to guessed cwd identity.

A generic client gets a distinct daemon-issued MCP lifetime. Exactly one supported absolute local file: root can be physically verified for enrollment under the active local-operator grant. For generic enrollment, missing or unusable roots and ambiguous native attestation produce an observe session that denies mutations. Invalid private attestation or native binding data fails with an error. ClientInfo harness names remain unverified metadata.

A connection stays bound to its workspace, actor, checkout and lifetime. Later tool inputs cannot switch them. Pass workspace: "" to select the enrolled or explicitly bound workspace. Worker authority grants neither operator controls nor reviewer eligibility; automatic scopes use audited warn policy.

The current registry exposes independent tools for these workflow families. Use the client’s tools/list response for the complete tool list and exact input schemas.

Workflow Representative tools Behavior
Context and work mj_brief, mj_work_context, mj_start_work, mj_begin Read relevant coordination; atomically create or adopt work and record scope. Starting work does not replace final write admission.
Peer questions mj_peers, mj_ask, mj_request, mj_answer, mj_wait_request, mj_cancel_request, mj_reply_late Keep the original requester and source, retain addressed answers, and distinguish cancellation from explicit late replies.
Messages and inbox mj_post, mj_inbox Post retained messages and read addressed work. Ordinary inbox reads default to the bound actor.
Artifact review mj_finish, mj_submit_research, mj_artifact, mj_artifact_comments, mj_accept_artifact, mj_request_artifact_changes Submit and inspect exact retained evidence; acceptance requires the authorized reviewer and current artifact identity.
Linked integration work mj_link_helper, mj_freeze_integration, mj_integration, mj_accept_integration Retain helper and decision provenance with exact integration input revisions.
Channels and ideas mj_channels, mj_channel_messages, mj_promote_message, mj_promotions Read quiet channels and deliberately promote a message to an unclaimed task or proposed decision. Promotion never starts or accepts work.
Consultation preparation mj_consult, mj_consult_profiles, mj_consult_detail, mj_consult_approve, mj_consult_queue, mj_consult_results, mj_consult_research_input Prepare frozen selected context, inspect controlled requests and retain results. Preparation does not approve, queue or launch an expert.
Continuity and recovery evidence mj_continuation, mj_recovery_evidence Read retained continuity through an existing authenticated binding. Recovery evidence requires operator authority and does not execute recovery.

mj_finish submits already recorded verification evidence; it does not run a verification command or accept work. Use CLI majlis finish when execution of project checks is required. Explicit session registration, coordination-policy changes and recovery execution also remain CLI workflows.

Native expert runners remain disabled until their isolation and capability contracts are verified. Registered consultation tools or a saved profile do not establish native execution availability. Privileged consultation controls require the appropriate operator authority and exact approved inputs.

An existing operator binding can use mj_inbox with operator_attention: true and no assignee to inspect prepared consultation attention. That read does not enroll an actor, approve or launch work, or mark an item read.

Use mj_peers to discover a durable recipient, then call mj_ask with the recipient’s actor ID and a stable operation key:

{
"workspace": "",
"idempotency_key": "<original question operation key>",
"task_id": "<durable source task id>",
"assignee_actor_id": "<recipient actor id>",
"question": "<question>"
}

Retain the returned request ID for mj_request, mj_answer or mj_wait_request. A bounded wait timeout leaves the request open. Focus changes never reroute its answer; an explicit late reply remains associated with a cancelled request without reopening it.

Mutations use stable idempotency keys and applicable expected revisions. After an uncertain result, retain the identical key and input. A stale revision requires inspection and a deliberate new action. Submission, authorized acceptance, transport acceptance and read confirmation remain distinct outcomes.

The transport reads one JSON-RPC frame per line, up to 16 MiB per line. Invalid JSON or UTF-8 and oversized frames return ParseError (-32700); invalid envelopes return Invalid Request (-32600). An oversized line is drained with bounded buffers and the connection continues.