Landlord
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LandlordCreate a plan for building a user onboarding flow with parallel agents."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Landlord
Parallel Claude agents with contracts, not prompts.
Landlord turns a single natural-language task into a plan of parallel Claude Agent SDK sessions — each bound by a contract (objective, checkpoints, JSON-schema outputs). Tenants that violate their contract get evicted and retried with fresh context. Every checkpoint output is validated against a JSON Schema and a structured LLM judge (via tool-use — no substring matching). Everything runs as an MCP server over stdio, so any MCP client (Claude Code, Cursor, Cline) can drive it.
Why
No API credits required. Drives
claude_agent_sdk.query(), which honorsCLAUDE_CODE_OAUTH_TOKEN. Your Claude Pro/Max subscription runs decompose, tenants, and the judge.Contracts, not prompts. Structured output enforced by JSON Schema + LLM judge on every checkpoint. No "I hope the model said PASS."
Tenants inherit your Claude Code config. Skills,
CLAUDE.md, hooks, user MCP servers — all available inside every tenant viasetting_sources=["user"]andskills="all".5-tool MCP surface —
start_orchestration,approve_plan,get_status,get_artifacts,cancel. That's the whole API.~1,200 LOC runtime, 52 tests. Readable in an afternoon.
60-second install
pip install -e .
claude setup-token # one-time: get your OAuth token
setx CLAUDE_CODE_OAUTH_TOKEN "<paste>" # Windows. Unix: export CLAUDE_CODE_OAUTH_TOKEN=...
claude mcp add -s user landlord landlord-mcpRestart Claude Code. The five Landlord tools become discoverable; ask the model to orchestrate something.
Watch it work
Every tenant's SDK chatter streams to a tailable log:
tail -f ./landlord-output/<job_id>/job.json # orchestration state
tail -f ./landlord-output/<job_id>/<tenant_id>/session.log # tenant model activity
ls ./landlord-output/<job_id>/shared/ # dependency artifactsAuth details
Authenticate against your Claude Pro/Max subscription (no API credits needed):
claude setup-tokenSet the resulting token in your environment:
# Windows (persistent)
setx CLAUDE_CODE_OAUTH_TOKEN "<token>"
# bash/zsh
export CLAUDE_CODE_OAUTH_TOKEN=<token>(Advanced: if you'd rather pay per-token API usage, set ANTHROPIC_API_KEY
instead — the underlying claude-agent-sdk accepts either.)
Related MCP server: AgentTasker MCP Server
Run the MCP server
landlord-mcpThis speaks MCP over stdio. Normally you don't run it directly — you point an MCP
client at it. Easiest is the claude CLI:
claude mcp add -s user landlord <path-to-landlord-mcp-executable>Or add this to ~/.claude.json (user scope) manually:
{
"mcpServers": {
"landlord": {
"command": "landlord-mcp"
}
}
}Restart Claude Code; the five Landlord tools will be discoverable to the model.
Tenant inheritance
Tenants spawned by the orchestrator run as Claude Agent SDK sessions with
setting_sources=["user"] and skills="all". That means each tenant inherits:
All user-level skills (invokable via the
Skilltool)Your user
CLAUDE.md(instructions/preferences)Your user-level MCP servers and hooks
User memory
So a tenant can, for example, invoke /superpowers:writing-plans itself if
your orchestrator decomposes "build feature X" into a tenant that needs to
plan before coding. Per-contract skill allowlisting is a v2 feature; today
it's all-or-nothing.
Tool surface
Tool | Purpose |
| Decompose the prompt into a plan. Returns |
| Approve (or replace with edits) the plan. Launches tenants. |
| Poll overall status plus per-tenant state. |
| Retrieve final artifacts and file listings once the job is done/cancelled. |
| Cancel a running or pending job. |
Configuration
Env var | Default | Purpose |
| — | Required for Pro/Max users (from |
| — | Alternative to OAuth token; pay-per-use API billing. |
|
| Decomposition + judge model. |
|
| Tenant SDK session model. |
|
| Root directory for job outputs. |
|
| Default max retries per tenant. |
Legacy CLI
The old litellm-based CLI is preserved as landlord:
pip install -e ".[legacy]"
landlord "your task"See landlord/legacy/ for source.
Development
pip install -e ".[dev]"
pytestAvailable Tools
5 toolsapprove_planB
Approve (or replace via edits) the plan for job_id and launch tenants.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| edits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description reveals that the tool modifies state (approve/replace) but lacks details on side effects, permissions, or irreversible consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently conveys the core action and key parameters, though 'or replace via edits' is slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations; description omits prerequisites, error conditions, or return behavior, making it insufficient for a tool that affects multiple tenants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds minimal parameter context—'job_id' is implied but 'edits' is not explained, and 'launch tenants' is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool approves or replaces a plan using 'job_id' and mentions 'launch tenants', distinguishing it from siblings like cancel or get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for approving plans but provides no explicit guidance on when to use this vs alternatives like start_orchestration, nor any exclusions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelC
Cancel a running or pending job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose side effects, irreversibility, or asynchronous behavior beyond the basic cancellation action. Agent receives minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks structure (e.g., bullet points) and is too brief to convey essential context for effective tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool without output schema, the description provides the essential purpose and state constraint, but omission of cancellation semantics (idempotency, error cases) leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description does not add meaning to the job_id parameter; it neither explains what a job_id represents nor provides any format or example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (cancel) and the resource (job), specifying 'running or pending' scope, which distinguishes it from sibling tools like start_orchestration or get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines on when to use this tool versus alternatives, no mention of when not to cancel, and no reference to sibling tools for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artifactsB
Return final artifacts and file lists; requires job to be done or cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions a precondition but omits details like return format, error cases, and what constitutes 'final artifacts'. The behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no waste. However, it may be too terse given missing behavioral and parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one sentence, the description fails to explain what 'final artifacts and file lists' entail or how the tool behaves in different states. It is insufficient for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for the 'job_id' parameter beyond its existence. The agent gets no information on format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'final artifacts and file lists', which distinguishes it from sibling tools like get_status or approve_plan. It also adds a precondition (job must be done or cancelled) for further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires the job to be done or cancelled before calling this tool, providing clear temporal context. It does not list alternatives but the sibling tools have distinct purposes, making the usage scope clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusB
Return current status, plan, and per-tenant states for job_id.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It fails to mention that the operation is read-only (safe) or any potential side effects, auth requirements, or rate limits. The description only states what is returned, not how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancies. Every word contributes to the core purpose: stating the action, resources, and required parameter. This is an optimal length for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description covers the essential information about what it does and takes. However, it lacks details about the return structure (e.g., whether the response is a flat object or nested) and error cases, which would help the agent handle the output correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter (job_id) with 0% description coverage. The description merely mentions 'job_id' without adding format, source, or example values. It does not compensate for the lack of schema-level documentation, leaving ambiguity about valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resources 'status, plan, and per-tenant states' for a given 'job_id'. This distinguishes it from siblings like 'approve_plan' or 'start_orchestration' which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving status but does not explicitly state when to use versus alternatives (e.g., when to use get_artifacts instead). No guidance on prerequisites or exclusions, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_orchestrationA
Decompose the prompt into a plan and return job_id + plan awaiting approval.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| output_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the main behavior (decompose and return plan awaiting approval) but does not mention side effects, permissions, or storage details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loading the core action and result. It is appropriately sized with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and sibling tools, the description adequately covers the tool's role as the starting point. It mentions the returned values and state, but lacks explanation for the output_dir parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% as the description does not mention any parameters. While parameter names ('Prompt', 'Output Dir') are somewhat intuitive, the description adds no value beyond the schema, failing to clarify optional parameters like output_dir.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's action: decompose a prompt into a plan, returning a job_id and plan. It clearly differentiates from sibling tools (approve_plan, cancel, etc.) which serve different stages of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the initial step for orchestration, but does not explicitly state when to use it over siblings or mention prerequisites. The purpose is clear enough that an agent would know to call it to start an orchestration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear and distinct purpose: starting a job, approving it, cancelling, checking status, and retrieving artifacts. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case, making the set predictable and easy to navigate.
With 5 tools, the server is well-scoped. Each tool represents a necessary step in the orchestration lifecycle without redundancy.
The tools cover the full lifecycle from start to completion, including approval and cancellation. A missing list-jobs tool is a minor gap but doesn't hinder core workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server orchestrating local CLI agents (Claude Code, OpenAI Codex, Google Gemini) for cross-validation, second opinions, and persona-driven prompting.18MIT
- AlicenseBqualityDmaintenanceA lightweight stdio-only MCP server that allows AI agents to run multiple tasks (e.g., Python code, HTTP requests, shell commands) in parallel or with dependencies, returning structured results in a single call.2MIT
- AlicenseAqualityCmaintenanceAn MCP server that gives orchestrator agents fine-grained control over interactive Claude Code sessions running inside tmux, enabling mid-session steering, interruption, and token-efficient result extraction.15MIT
- FlicenseNot gradedqualityDmaintenanceA flexible MCP server enabling multiple Claude AI sessions to coordinate work across machines through shared state management.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DizzyMii/landlord'
If you have feedback or need assistance with the MCP directory API, please join our Discord server