MODEL CONTEXT PROTOCOL
New to Siftree? Start with the connection guide.
Siftree over MCP
Siftree speaks the Model Context Protocol over streamable HTTP. Point any MCP-compatible client or agent framework at a single endpoint and it can search unstructured documents, aggregate them, define datasets, author and run tasks, and orchestrate multi-step workflows—scoped to the permissions of the account that authorized the connection.
https://app.siftree.com/api/mcptools across 8 areas, as of October 2026
CONNECT
One endpoint. Any client.
- Transport
- Streamable HTTP
- Protocol
- JSON-RPC 2.0
- Auth
- OAuth, handled by the client
- Scope
- Channels the authorizing account can reach
Most desktop and IDE clients read a JSON file in this shape. Check your client's docs for where the file lives.
{
"mcpServers": {
"siftree": {
"url": "https://app.siftree.com/api/mcp"
}
}
}TOOLS
Everything your agent needs.
Channels
Workspace discovery
list_channels()List every channel the authenticated account can reach.
get_channel(params.channel_id)Read one channel’s metadata.
Documents
Search, count, aggregate
search_documents(params.channel_id, query.limit, …+6)Search or list documents in a channel.
count_documents(params.channel_id, …+3)Count documents matching a filter, without returning them.
aggregate_documents(params.channel_id, query.metrics, …+6)Group documents by one or more fields and return counts.
aggregate_documents_time_series(params.channel_id, query.metrics, query.range, …+5)Bucket document counts over a time range, optionally grouped.
Sources & datasets
Ingestion and schema
list_sources(query.channel_id)List the connected integrations and upload origins feeding a channel.
list_datasets(params.channel_id)List datasets and their schemas in a channel.
create_dataset(params.channel_id, body.name, body.schema)Create a dataset with a declared schema for later uploads.
Tasks
Authoring and execution
list_tasks(params.channel_id)List tasks in a channel with their latest run status.
author_task(params.channel_id, body.task_id, body.contract, …+1)Hand a complete contract to a background builder that writes, tests, saves, runs, and verifies one task. Pass a task_id to edit or repair an existing task.
get_authoring_session(params.channel_id, params.session_id)Poll a build’s status and activity timeline until it succeeds, fails, or is canceled.
cancel_authoring_session(params.channel_id, params.session_id)Stop a build, its sandbox, and any run it started.
run_task(params.channel_id, params.task_id)Queue a run and get back a task_run_id.
cancel_task_run(params.channel_id, params.task_id, params.task_run_id, …+1)Cancel a queued or running run. Work it already committed is not rolled back.
get_task_run_logs(params.channel_id, params.task_id, params.task_run_id)Read stdout and stderr for one run.
delete_task(params.channel_id, params.task_id)Soft-delete a task. Run history is kept.
Workflows
Multi-step plans
start_workflow(params.channel_id, body.goal_text, body.steps, …+1)Start a durable plan of task builds and report generations, with dependencies between steps.
get_agent_workflow(params.channel_id, params.workflow_id)Read a workflow’s status and the status of each step.
cancel_agent_workflow(params.channel_id, params.workflow_id)Stop a workflow, its running builds, and its pending steps.
Reports
Saved output
list_reports(params.channel_id)List the reports saved in a channel.
Skills
Packaged workflows
load_skill(params.name)Load a registered skill’s instructions and resource list.
read_skill_resource(params.name, query.resource_path)Read one resource listed by a loaded skill.
Web
External context and collection
web_search(query.query, …+1)Find public pages and current external information.
web_fetch(body.url)Read the text of a public URL you already know.
lookup_public_web_scrapers(query.domain | query.dataset_id)Find public-web scrapers for a site, such as ecommerce, maps, or jobs boards, with their collection methods and input schemas.
probe_web_pages(body.urls)Sample up to three public pages exactly as a site-collection task will see them, to design a dataset schema.
FILTER GRAMMAR
Composable by design.
Every document tool takes the same filter shape. A leaf is { field, op, value }; compose leaves with and and or, nested arbitrarily deep.
eqequals
neqdoes not equal
gtgreater than
gtegreater than or equal
ltless than
lteless than or equal
invalue is in list
not_invalue is not in list
array_containsarray field contains value
string_containssubstring match
existsfield is present
not_existsfield is absent
is_nullfield is null
not_nullfield is not null
{
"and": [
{ "field": "language", "op": "eq", "value": "en" },
{
"or": [
{ "field": "themes", "op": "array_contains", "value": "pricing" },
{ "field": "body", "op": "string_contains", "value": "too expensive" }
]
},
{ "field": "deleted_at", "op": "is_null" }
]
}Questions
Before you connect.
How do I connect Siftree to Claude, ChatGPT, or my own agent?
Add https://app.siftree.com/api/mcp as a remote MCP server in your client and sign in with OAuth. Access is limited to the channels your account can reach.
What can my agent do through Siftree MCP?
Search, count, and aggregate documents; list and create datasets; author, run, and repair tasks; start multi-step workflows; read saved reports; load skills; and search or fetch the public web.
Should I use MCP or the Siftree app?
It depends on where you work. Use MCP to ask questions and operate supported Siftree tools inside the AI tool you already use. Use the Siftree app to set up sources, review approvals, and read reports.