Skip to main content

LTP (Lean Task Protocol) — compile LLM goals into deterministic execution plans

Project description

ltpmcp

LTP (Lean Task Protocol) -- compile LLM goals into deterministic execution plans

Part of the MCP AI Suite.

Features

  • Single-call compilation -- converts a natural-language goal into a structured execution plan with one LLM call
  • Micro-CLI syntax -- compact ~20 tokens/step format (search, fetch, exec, respond) for token efficiency
  • Deterministic runtime -- executes plans step-by-step with variable passing, conditionals, and loops
  • Conditional branching -- ?IF ($var == "value") THEN ... with numeric, string, and contains operators
  • FOREACH iteration -- iterate over list variables with per-item processing
  • ON_FAIL error handling -- retry N times, GOTO fallback step, or terminate with message
  • RE-PLAN -- dynamically recompile the plan mid-execution when results invalidate the approach
  • Parallel execution groups -- concurrent step execution within the same group
  • Type casting -- output variables cast to int, float, list, bool, or json
  • Mermaid visualization -- export plans as Mermaid flowcharts
  • Library, CLI & MCP server -- import it, or use the ltpmcp CLI (parse/validate/visualize), the ltpmcp-server MCP server (3 tools: parse_plan, validate_plan, visualize_plan), or the optional ltpmcp-api FastAPI app

Installation

pip install mcpaisuite-ltpmcp
# Optional extras:
pip install mcpaisuite-ltpmcp[dev]    # Development tools
pip install "mcpaisuite-ltpmcp[api]"  # FastAPI server (ltpmcp-api)

Console scripts: ltpmcp (CLI), ltpmcp-server (MCP, stdio), ltpmcp-api (FastAPI). Runtime deps: pydantic, structlog, click, mcp.

Quick Start

from ltpmcp import LTPCompiler, LTPRuntime

async def my_llm(messages):
    # Your LLM completion function
    return await call_llm(messages)

compiler = LTPCompiler(llm_fn=my_llm)
plan = await compiler.compile("What is the weather in Ibiza?")

runtime = LTPRuntime()
result = await runtime.execute(plan, tool_executor=my_tool_fn, llm_fn=my_llm)
print(result["response"])

Configuration

LTP is configured programmatically via the compiler and runtime constructors. No environment variables are required.

Parameter Description
llm_fn Async callable (messages) -> str for plan compilation and LLM ops
tool_executor Async callable (tool_name, args, namespace) -> dict for tool execution
max_replans Maximum RE-PLAN recompilations allowed (default: 3)

API Reference

LTPCompiler

Compiles a user goal into an LTP plan using one LLM call with Micro-CLI syntax.

compiler = LTPCompiler(llm_fn=my_llm)
plan = await compiler.compile(goal, context="") -> LTPPlan | None  # None on compile failure

LTPRuntime

Deterministic execution engine for LTP plans.

runtime = LTPRuntime(audit_fn=None)
result = await runtime.execute(plan, tool_executor, llm_fn,
                               agent_fn=None, namespace="default",
                               max_replans=3, progress_callback=None) -> dict

LTPPlan / LTPStep

plan.steps         # list[LTPStep]
plan.step_count    # int
plan.variables     # dict[str, Any]
plan.raw           # str -- original Micro-CLI text

Utility Functions

from ltpmcp import validate_plan, plan_to_mermaid

errors = validate_plan(plan)       # list[str] -- validation errors
mermaid = plan_to_mermaid(plan)    # str -- Mermaid diagram

Architecture

LTPCompiler sends a single prompt with Micro-CLI syntax examples to the LLM, which returns a compact step-by-step plan. The compiler converts Micro-CLI commands to standard LTP format (with @TOOL references), which is parsed by LTPParser into an LTPPlan AST. LTPRuntime then executes each step sequentially, resolving $variable references with dot-notation support, evaluating conditions, handling FOREACH loops, and routing tool calls through the provided executor.

Testing

pip install -e ".[dev]"
pytest tests/ -v

License

AGPL-3.0 — see LICENSE.

Open source for individuals and open-source projects. For commercial use in closed-source products, a commercial license is available — contact gaeldev@gmail.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpaisuite_ltpmcp-1.0.3.tar.gz (49.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpaisuite_ltpmcp-1.0.3-py3-none-any.whl (52.8 kB view details)

Uploaded Python 3

File details

Details for the file mcpaisuite_ltpmcp-1.0.3.tar.gz.

File metadata

  • Download URL: mcpaisuite_ltpmcp-1.0.3.tar.gz
  • Upload date:
  • Size: 49.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcpaisuite_ltpmcp-1.0.3.tar.gz
Algorithm Hash digest
SHA256 c4a6a35b141b214a1dd087d01533b06ea3df27c1c940829f3b82e5b4271e6ac0
MD5 52c9939bc7239916aa3240d258df10dc
BLAKE2b-256 d3b0176c50361a892dc397006aa6684d4fad1a61b03dafacdc2141bb19d7271d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpaisuite_ltpmcp-1.0.3.tar.gz:

Publisher: release.yml on gashel01/ltpmcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcpaisuite_ltpmcp-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for mcpaisuite_ltpmcp-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ed9208b57698084c87fa5eef35b68cdaf2b3b12b08a0bf5c37b48122952d9041
MD5 05943381ed35505df7945ac06b91b683
BLAKE2b-256 1dfc2e158db3cbc66c107480f84a90dc80b00336440acf5fec9dacf4122b8aa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcpaisuite_ltpmcp-1.0.3-py3-none-any.whl:

Publisher: release.yml on gashel01/ltpmcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page