taskforce
AI agent-oriented multi-LLM roundtable library.
Multiple top-tier LLMs (GPT, Grok, Claude, Gemini) are queried in parallel with the same agenda, and the collected opinions are classified into common / divergent / unique perspectives, returned as a structured IdeaPool.
This package is designed for AI agents, not for direct human use.
The primary interface is the MCP wrapper (roundtable_discuss tool), which allows agents to invoke a roundtable discussion as a tool call. A Python API is also available for programmatic integration.
Quick Start
1. Install
pip install ff-taskforce
For MCP server support:
pip install ff-taskforce[mcp]
2. Set environment variables
At least two provider API keys are required (one will be excluded as the caller).
XAI_API_KEY is always required (used by the summarizer).
OPENAI_API_KEY=sk-...
XAI_API_KEY=xai-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=AI...
3. Use as MCP tool (recommended for agents)
Add to your MCP server config:
TASKFORCE_CALLER_PROVIDER is the provider of the agent that will call this tool.
The matching provider's model is excluded from the panel -- querying the same model that is already reasoning adds no diversity.
For example, if Claude Code is the caller, set it to "anthropic" so Claude is excluded from the panel.
{
"mcpServers": {
"taskforce": {
"command": "python",
"args": ["-m", "taskforce.mcp_wrapper"],
"env": {
"TASKFORCE_CALLER_PROVIDER": "anthropic"
}
}
}
}
The agent can then call the roundtable_discuss tool with agenda and context parameters.
4. Use as Python library
from taskforce import Taskforce
tf = Taskforce(caller_provider="anthropic")
pool = tf.discuss(
agenda="Evaluate the trade-offs of approach A vs B",
context="<detailed context here>"
)
# pool.common -- list[str]: points most models agree on
# pool.divergent -- list[DivergentPoint]: topics with differing positions
# pool.unique -- list[UniquePoint]: points raised by only one model
Important Notes
- Paid API calls. Every
discuss()invocation calls multiple LLM APIs in parallel. Agents should confirm with the user before calling. - caller_provider exclusion. The model from the same provider as the calling agent is excluded from the panel to maximize perspective diversity.
- XAI_API_KEY is mandatory. The summarizer (grok-4-1-fast-non-reasoning) always uses the XAI key.
- Rich context matters. Input tokens are cheap. Provide as much context as possible -- specifications, constraints, background, decisions already made -- so the panel can give concrete, actionable opinions instead of generic advice.
API
Taskforce(caller_provider, dotenv_path=None)
caller_provider(str): The LLM provider of the calling agent (e.g."anthropic","openai"). That provider's model is excluded from the panel.dotenv_path(str | None): Path to.envfile. Defaults to auto-discovery.
Taskforce.discuss(agenda, context="") -> IdeaPool
Synchronous wrapper. Queries the panel, summarizes, and returns an IdeaPool.
Taskforce.discuss_async(agenda, context="") -> IdeaPool
Async version for use in async contexts.
IdeaPool
| Field | Type | Description |
|---|---|---|
agenda |
str |
The original agenda |
common |
list[str] |
Points most models agree on |
divergent |
list[DivergentPoint] |
Topics with differing positions (topic, positions: dict[model, position]) |
unique |
list[UniquePoint] |
Points from a single model (point, source_model) |
total_cost |
float |
Total API cost (USD) |
total_tokens |
int |
Total tokens consumed |
License
MIT
Metadata
Release files for ff-taskforce 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ff_taskforce-0.1.1.tar.gz | 17.9 kB | Without provenance | Details for ff_taskforce-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ff_taskforce-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for ff_taskforce-0.1.1-py3-none-any.whl |
Total release size: 39.7 kB
Release files / ff_taskforce-0.1.1.tar.gz
| Download URL | ff_taskforce-0.1.1.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f8d8d65addb99ad4f13885a59c3098f45c06dcc3093bc8433eebd15ae6163ca
|
|
BLAKE2b-256 checksum How to use checksums |
d8989e04fce1207527e5a4719e7ebe15584231213357cd861b9eafa3258bc5f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Release files / ff_taskforce-0.1.1-py3-none-any.whl
| Download URL | ff_taskforce-0.1.1-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee6d9f5d0be606e1d27b67c8c496790a5dc6f0ab9b0a50588015545855fc478d
|
|
BLAKE2b-256 checksum How to use checksums |
b8686bff537e1c9959dd91303d2a950d5dd6af62b6654f2706bbd2f766e88d02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Security for ff-taskforce 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.