관리되는 업무, 지식, 캘린더, 인력, 데이터 세트 및 Vault 도구를 Cursor 및 Claude Desktop과 같은 IDE 클라이언트에 노출합니다.
다른 이름 execufunction-mcp/mcp-server, mcp-server, @siftable/mcp-server
- 스타
- 0
- Tools
- 106
- 다운로드, 30일
- —
- 최신 버전
- 1.5.1
- 마지막 커밋
- 2026년 9월 7일
- 라이선스
- MIT
Siftable MCP란?
Siftable은(는) MCP server입니다. 관리되는 업무, 지식, 캘린더, 인력, 데이터 세트 및 Vault 도구를 Cursor 및 Claude Desktop과 같은 IDE 클라이언트에 노출합니다. 106개 도구를 제공합니다. 예: context_current, find_capability, request_capability.
프로젝트 README에서 생성된 요약
Siftable MCP server 정보
Siftable은 관리되는 조직 데이터와 AI 통합 개발 환경 사이의 가교 역할을 합니다. Cursor, Claude Desktop 또는 VS Code와 같은 클라이언트를 사용하는 개발자가 업무 항목, 지식 베이스, 캘린더 및 데이터 세트와 직접 상호작용할 수 있도록 지원합니다. 이 MCP server는 로컬 stdio 연결과 원격 호스팅 OAuth 연결을 모두 지원하며, 관리되는 work-lease 세션과 범위 지정된 액세스 제어를 통해 정교한 워크플로우를 구현합니다.
사용자는 버전 관리된 집계 영수증을 사용한 데이터 세트 쿼리, 웹 검색 구문을 사용한 노트 검색, leased 또는 in_review와 같은 생명주기 상태를 통한 업무 항목 관리 등 복잡한 작업을 수행할 수 있습니다. 시스템에는 Crustdata를 통한 lead discovery 및 프로필 사실을 제안하기 위한 person enrichment용 전문 도구가 포함되어 있습니다. 또한 세밀한 scope 시스템을 통해 권한을 관리하므로, 에이전트가 클라이언트를 다시 연결할 필요 없이 work:write와 같은 특정 작업에 대해 권한 승격을 요청할 수 있습니다.
활용 사례
- 1영업 리드 검색 및 가져오기AI 에이전트가 Crustdata를 사용하여 회사를 검색하고 다단계 승인 프로세스를 통해 표준 CRM 레코드를 생성할 수 있습니다.
- 2데이터 품질 감사 수행AI에게 데이터 세트의 누락된 값이나 유일성 제약 조건 위반 여부를 확인하도록 지시할 수 있습니다.
- 3개인 및 조직 프로필 강화MCP server가 제안된 사실과 프로필 업데이트를 반환하면, 이를 검토한 후 CRM에 적용할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Siftable MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Siftable MCP 설치
$ claude mcp add --env 'SIFT_PAT=<YOUR_SIFT_PAT>' --env 'SIFT_API_URL=<SIFT_API_URL>' mcp-server -- npx -y @siftable/mcp-serverCursor에 Siftable MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": [
"-y",
"@siftable/mcp-server"
],
"env": {
"SIFT_PAT": "<YOUR_SIFT_PAT>",
"SIFT_API_URL": "<SIFT_API_URL>"
}
}
}
}VS Code에 Siftable MCP 설치
.vscode/mcp.json
{
"servers": {
"mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@siftable/mcp-server"
],
"env": {
"SIFT_PAT": "<YOUR_SIFT_PAT>",
"SIFT_API_URL": "<SIFT_API_URL>"
}
}
}
}VS Code CLI에 Siftable MCP 설치
$ code --add-mcp '{"name":"mcp-server","type":"stdio","command":"npx","args":["-y","@siftable/mcp-server"],"env":{"SIFT_PAT":"<YOUR_SIFT_PAT>","SIFT_API_URL":"<SIFT_API_URL>"}}'Claude Desktop에 Siftable MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": [
"-y",
"@siftable/mcp-server"
],
"env": {
"SIFT_PAT": "<YOUR_SIFT_PAT>",
"SIFT_API_URL": "<SIFT_API_URL>"
}
}
}
}Codex에 Siftable MCP 설치
$ codex mcp add mcp-server --env 'SIFT_PAT=<YOUR_SIFT_PAT>' --env 'SIFT_API_URL=<SIFT_API_URL>' -- npx -y @siftable/mcp-serverCodex config.toml에 Siftable MCP 설치
~/.codex/config.toml
[mcp_servers.mcp-server] command = "npx" args = ["-y", "@siftable/mcp-server"] [mcp_servers.mcp-server.env] SIFT_PAT = "<YOUR_SIFT_PAT>" SIFT_API_URL = "<SIFT_API_URL>"
Gemini CLI에 Siftable MCP 설치
$ gemini mcp add -s user -e 'SIFT_PAT=<YOUR_SIFT_PAT>' -e 'SIFT_API_URL=<SIFT_API_URL>' mcp-server npx -- -y @siftable/mcp-serverGemini settings.json에 Siftable MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": [
"-y",
"@siftable/mcp-server"
],
"env": {
"SIFT_PAT": "<YOUR_SIFT_PAT>",
"SIFT_API_URL": "<SIFT_API_URL>"
}
}
}
}Siftable MCP 도구 106
README에서 감지됨context_currentfind_capabilityrequest_capabilityproject_listproject_createproject_updateproject_archiveproject_get_contexttask_listtask_gettask_createtask_update
| context_current | — | |
| find_capability | — | |
| request_capability | — | |
| project_list | — | |
| project_create | — | |
| project_update | — | |
| project_archive | — | |
| project_get_context | — | |
| task_list | — | |
| task_get | — | |
| task_create | — | |
| task_update | — |
도구 106개 모두 보기도구 수 줄이기
task_deletetask_bulk_deletetask_completeagent_listagent_getagent_createagent_updateagent_disableagent_work_listwork_item_listwork_item_getwork_item_creatework_item_dependencies_replacework_item_claimwork_dependency_policy_getwork_dependency_policy_updatework_item_startwork_item_heartbeatwork_item_blockwork_item_reviewwork_item_completework_item_failwork_item_releasework_item_cancelnote_listnote_getnote_searchnote_createnote_updatenote_deletenote_bulk_deletepeople_searchperson_createperson_updateperson_deletepeople_bulk_deleteperson_enrichment_availabilityperson_enrichment_runperson_enrichment_applyorganization_searchorganization_createorganization_updateorganization_deleteorganization_bulk_deleteorganization_enrichment_availabilityorganization_enrichment_previewlead_discovery_company_searchlead_discovery_candidate_listlead_discovery_candidate_reviewlead_discovery_import_plan_createcalendar_list_eventscalendar_create_eventcalendar_update_eventcalendar_delete_eventgit_blame_symbolcode_memory_storecode_memory_searchcode_memory_listcode_memory_deletevault_listvault_createvault_updatevault_searchvault_auditvault_materialization_requestvault_materialization_statuscapability_listcapability_describecapability_executeentity_graphschema_introspectupload_documentdataset_listdataset_createdataset_querydataset_mutatedataset_schema_modifydataset_summarizedataset_facetsdataset_quality_checkdataset_aggregatedataset_bucketdataset_rankdataset_analyzedataset_comparedataset_exportdataset_join_rowsdataset_compute_fieldsdataset_timeseriesdataset_materialize_resultdataset_plot_resultobject_findobject_linksobject_action_run
| task_delete | — | |
| task_bulk_delete | — | |
| task_complete | — | |
| agent_list | — | |
| agent_get | — | |
| agent_create | — | |
| agent_update | — | |
| agent_disable | — | |
| agent_work_list | — | |
| work_item_list | — | |
| work_item_get | — | |
| work_item_create | — | |
| work_item_dependencies_replace | — | |
| work_item_claim | — | |
| work_dependency_policy_get | — | |
| work_dependency_policy_update | — | |
| work_item_start | — | |
| work_item_heartbeat | — | |
| work_item_block | — | |
| work_item_review | — | |
| work_item_complete | — | |
| work_item_fail | — | |
| work_item_release | — | |
| work_item_cancel | — | |
| note_list | — | |
| note_get | — | |
| note_search | — | |
| note_create | — | |
| note_update | — | |
| note_delete | — | |
| note_bulk_delete | — | |
| people_search | — | |
| person_create | — | |
| person_update | — | |
| person_delete | — | |
| people_bulk_delete | — | |
| person_enrichment_availability | — | |
| person_enrichment_run | — | |
| person_enrichment_apply | — | |
| organization_search | — | |
| organization_create | — | |
| organization_update | — | |
| organization_delete | — | |
| organization_bulk_delete | — | |
| organization_enrichment_availability | — | |
| organization_enrichment_preview | — | |
| lead_discovery_company_search | — | |
| lead_discovery_candidate_list | — | |
| lead_discovery_candidate_review | — | |
| lead_discovery_import_plan_create | — | |
| calendar_list_events | — | |
| calendar_create_event | — | |
| calendar_update_event | — | |
| calendar_delete_event | — | |
| git_blame_symbol | — | |
| code_memory_store | — | |
| code_memory_search | — | |
| code_memory_list | — | |
| code_memory_delete | — | |
| vault_list | — | |
| vault_create | — | |
| vault_update | — | |
| vault_search | — | |
| vault_audit | — | |
| vault_materialization_request | — | |
| vault_materialization_status | — | |
| capability_list | — | |
| capability_describe | — | |
| capability_execute | — | |
| entity_graph | — | |
| schema_introspect | — | |
| upload_document | — | |
| dataset_list | — | |
| dataset_create | — | |
| dataset_query | — | |
| dataset_mutate | — | |
| dataset_schema_modify | — | |
| dataset_summarize | — | |
| dataset_facets | — | |
| dataset_quality_check | — | |
| dataset_aggregate | — | |
| dataset_bucket | — | |
| dataset_rank | — | |
| dataset_analyze | — | |
| dataset_compare | — | |
| dataset_export | — | |
| dataset_join_rows | — | |
| dataset_compute_fields | — | |
| dataset_timeseries | — | |
| dataset_materialize_result | — | |
| dataset_plot_result | — | |
| object_find | — | |
| object_links | — | |
| object_action_run | — |
구성
SIFT_PAT필수비밀Personal Access Token (create at Settings → Developer → Access Tokens)
SIFT_API_URL필수Siftable API URL (e.g. https://siftable.io)
| 이름 | 설명 | 유형 |
|---|---|---|
| SIFT_PAT | Personal Access Token (create at Settings → Developer → Access Tokens) | 필수비밀 |
| SIFT_API_URL | Siftable API URL (e.g. https://siftable.io) | 필수 |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능execufunction-mcp/mcp-server is public and reachablegithub.com/execufunction-mcp/mcp-server ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-27github.com/execufunction-mcp/mcp-server ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @siftable/mcp-server통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음113 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음106 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답Endpoint did not answer initialize: HTTP 525결함 발견
README
GitHub에서 보기Siftable MCP Server
A Model Context Protocol server that exposes Siftable tools to IDE clients like Cursor, Claude Desktop, and VS Code.
ExecuFunction 0.4.0.0 hosted compatibility
The npm package is 1.3.0; the hosted and source projection profile is
1.34.0. Projection 1.34.0 standardizes bounded collection receipts, publishes
dataset aggregate semantics, and distinguishes OAuth connections that must
reconnect from sessions that can widen authorization in place. Projection
1.33.0 recognizes natural-language source-search intent
and returns the retired capability card with local recovery rather than routing
the request to curated code memories. Projection 1.32.0 added an explicit no_matches discovery outcome,
rejects generic-operation and weak-prefix-only capability matches, preserves
canonical compound-intent matches, and captures HTTP status classes in failure
receipts. Projection 1.31.0 added governed lead-discovery scope requirements.
Projection 1.29.0 added managed
work-lease sessions for hosted clients while keeping claim tokens server-side.
Projection 1.28.0 added four governed
lead-discovery tools and five app-equivalent person/organization enrichment tools.
Lead discovery is disabled by default. When enabled, it requires separately
granted lead_discovery:read or lead_discovery:write scopes; mcp:* does
not imply either scope. Hosted baseline catalogs therefore omit company search
until request_capability approval and a catalog refresh expose the hosted-capable
tool. A company search is bounded to one paid Crustdata
request, shows a maximum charge before dispatch, settles the actual provider
credits, and saves results only as review candidates. Canonical CRM records
are created through lead_discovery_import_plan_create followed by the
existing crm_import_plan_approve and crm_import_plan_apply review gates.
Person enrichment returns stored profile and fact proposals. Apply accepts only proposal field names and fact IDs rehydrated from the completed run; it does not accept free-form replacements and is not retry-safe. Organization enrichment remains the app's paid preview-only flow and cannot apply canonical CRM changes.
1.3.0 compatibility note
Version 1.3.0 publishes sift.dataset.query.v2, versioned aggregate receipts,
uniform work-item collection metadata, and the reconnect_required capability
state. Consumers that validate the previous dataset-query receipt should select
behavior by schemaId.
1.2.42 compatibility note
Version 1.2.42 closes the publication-readiness audit. Natural-language source search discovery returns the canonical retired/local-only recovery card, while curated code-memory discovery remains distinct. The hosted setup guide now gives exact ChatGPT and Codex configuration steps.
1.2.41 compatibility note
Version 1.2.41 closes two hosted audit failures. Dataset routes reject malformed
dataset UUIDs at the HTTP boundary, and MCP receipts preserve the resulting 400
as bad_request. find_capability now requires a direct domain signal plus an
aligned operation; unrelated intent returns queryOutcome: no_matches with
empty capability lanes and rephrase guidance. Exact tool names, removed-tool
cards, and virtual orientation tools bypass semantic rejection.
1.2.40 compatibility note
Version 1.2.40 addresses the third round of live agent QA (the 2026-08-22 hosted audit).
claimabilityis honest about lifecycle and lease state, not only dependencies:stateis one ofready,waiting,dependency_failed,leased,lease_expired,blocked,in_review,human_review_gate, orterminal, withclaimable,reason, andnextActionalongsideblockedBy. Claimed, running, cancelled, and done work no longer advertiseready;claimableis the authoritative boolean (alease_expireditem and a legacy-convertedblockedplaceholder whose predecessors are satisfied areclaimable: truebecause an explicit claim recovers them). Claiming a non-claimable item by ID returns a 409 that names the state (lease_active,work_item_terminal, …) instead ofnot_found. The CLI and TUI gate onclaimablewhen the server provides it.agent_work_listandwork_item_listhide done/failed/cancelled items by default (includeTerminal: trueor an explicitstatusshows them), print their ordering rule, and document that higherqueueRanksorts earlier,0is the default, and negative ranks are deferred (they sort after 0).work_item_heartbeatsays that a heartbeat on claimed work starts it (claimed → running, same aswork_item_start);resultSummarypassed to start, heartbeat, or release is now persisted instead of silently dropped.task_getlists the executable work joined to the task (first ten, with a marker when more exist; "none yet" with thework_item_createhint when empty) when the connection can read work items; a missing scope keeps the capability hint and an upstream failure is reported as such (single attempt, no retry).entity_graphreports each record's own status where it has one (a completed task iscompleted, notactive; notes/datasets active/archived; connected projects now carry their name and status instead of[untitled entity]/active) — migration V400 fixes the SQL function that labelled every non-note nodeactiveand never joined projects. Other node types keep their type-specific label in that slot (organization industry, person relationship, news published date).note_searchranks full-text matches (websearch syntax) ahead of semantic neighbours, then literal-substring fallbacks, instead of sorting raw scores on different scales; scores are comparable within a source, not across.object_finddistinguishes an unknown object type key from a known type with zero records.- Code-memory listings label a
confirmedfact without chunk evidence asnot_recorded (confirmed; no source-chunk evidence recorded)so the evidence gap is visible without downgrading human-admitted facts.
Projection 1.25.0 keeps hosted OAuth catalogs limited to tools callable with
the current token. find_capability still discovers tools that need scope
elevation, and those tools appear after authorization and a catalog refresh.
The server initialization guidance is also shorter so clients do not repeat a
large instruction block across tool descriptions.
1.2.39 compatibility note
Version 1.2.39 addresses the second round of live agent QA.
work_item_requeuealso returns a claimed/running item whose lease has expired to the queue, without the original claim token; active leases are still never requeued.work_item_listlabels expired leases inline ([claimed · lease expired <time>]), andwork_item_getprefixes its JSON with aLease: expired <time> — …header saying the item is claimable as-is or requeueable, instead of showing plainclaimed.work_item_revision_history/work_item_verification_historysay so in a sentence when there is nothing recorded instead of printing[].object_findnames the object type it searched and points atschema_introspect/people_search/organization_searchwhen nothing matches, instead of a bare "No objects found."schema_introspectsummarises datasets (title, ID, rows, field count) by default;includeDatasetFields: truerestores the per-field dump.dataset_quality_checkcounts blank strings as missing values and returns a versioned structured result. Frequently repeated values are observations; they are only quality violations when a field is declared unique.
Projection 1.22.0 records the schema_introspect input schema and the tool
description changes.
1.2.38 compatibility note
Version 1.2.38 makes the agent path to work authority direct instead of a scavenger hunt (decision 2026-08-20, after live use from Grok and Claude).
- Hosted OAuth first connect (no
scopeparameter, orscopes_supportedcopied by the client) is issuedmcp:* work:read work:writebehind the consent screen. Vault and AI scopes remain step-up/CLI-only. - Tools the connection could acquire through step-up are presented on
tools/list; calling one before approval returns an in-band tool error carrying the sameelevationlink (or CLI/PAT guidance). The HTTP 403insufficient_scopechallenge is now issued only forrequest_capabilityinchallengemode. - Elevation links live for one hour (was ten minutes); after an approval the
server publishes
tools/list_changedso subscribed clients refresh, and the guidance tells the agent to refresh the tool list or restart the connector if the tools are still hidden. find_capability,request_capability, andcontext_currentrender a compact text summary (name, availability, next step) instead of the full JSON; the complete projections remain instructuredContent.task_getand the task tool descriptions no longer claimwork:readis missing; they point atwork_item_listwithtaskIdand defer torequest_capabilityonly when the tool is not callable.- "Stable handles" in generic list text now name the field each ID came from
and group repeats, so a
projectIdshared by twenty rows reads as one project reference rather than twenty new records.
Projection 1.21.0 records the presented-tool and description changes. Reconnect hosted MCP clients after upgrade to refresh the projection 1.21.0 schemas.
1.2.37 compatibility note
Version 1.2.37 makes scope step-up reachable from the agent's seat on hosted OAuth connections instead of depending on the client re-running OAuth.
request_capability(inspect) now returnselevation— a short-lived (ten-minute), owner-bound approval link for the connected OAuth token, replayable by the owner within its window — on Streamable HTTP whenever the missing scopes are elevatable (work:read,work:write) and the server suppliedcapabilityAcquisition.createElevationGrant. The user opens the link, re-authenticates, approves on the first-party consent screen, and the existing token is widened in place; the agent retries the tool without reconnecting.recommendedNextAction.typeisopen_elevation_urlin that case andreconnectRequiredisfalse. The reconnect guidance remains the fallback for connections that cannot be elevated.find_capability,context_current, and direct gated-tool rejections point at that path instead of at a client reconnect.- Hosted OAuth now accepts an explicit
work:writerequest (consent-gated); in 1.2.37 the authorize default when a client omitsscopewasmcp:* work:readandscopes_supportedadvertised only that pair (both widened to the full work family in 1.2.38).
Projection 1.20.0 records the request_capability output schema and
description change. Reconnect hosted MCP clients after upgrade to refresh the
projection 1.20.0 schemas.
1.2.36 compatibility note
Version 1.2.36 prepares the hosted endpoint for ChatGPT plugin-directory publication without changing the stdio tool surface.
upload_documentno longer advertisesfilePathon the hosted profile: the hosted schema requires inlinecontentandfilename, and afilePathargument is rejected with a normalizedbad_requestfailure at the MCP boundary, atexecuteTool, and insideSiftClientunless the client was constructed withallowLocalFiles. Only the local stdio entrypoint sets that flag; hosted and remote clients can never reach the server's filesystem.- Hosted tools now carry OpenAI-only hints under
_meta, which other MCP clients ignore by specification:securitySchemeslisting only the scopes the connected OAuth client can actually request (baselinemcp:*), and tool-invocation status strings derived from each tool's title. - Every catalog tool now publishes an
outputSchema: the 27 read-only query tools that lacked one declare thesift.action_receiptenvelope with atext/plainresult, matching whattools/callalready returns. - Projections and catalog digests are computed from the transport-shaped
schema, so hosted
find_capabilityandschemaDigestdescribe the tool surface the client is actually presented.
Projection 1.19.0 records the hosted upload_document schema and the
envelope output schemas. Reconnect hosted MCP clients after upgrade to
refresh the projection 1.19.0 schemas.
1.2.35 compatibility note
Version 1.2.35 closes the remaining contract divergences found in the 1.2.32 review.
schema_introspectnow exposes datasets only when both the deployment-wide dataset switch and the caller's feature grant allow the dataset routes. Its dataset and object-type queries now run with the caller's RLS identity.code_memory_deletereturned 500 for every memory that had ever existed.V351gave the lifecycle event log anON DELETE CASCADEforeign key and an append-only trigger that raised unconditionally, so the cascade aborted every delete.V389lets the referential cascade through while still refusing a direct edit of the log, repairs two lineage foreign keys that would have nulled aNOT NULLowner column, and returns an orphaned predecessor toneeds_reviewwith an audit event when its successor is deleted.- Human admission actions are no longer callable over MCP.
code_memory_confirm,code_memory_reject,code_memory_edit, andcode_memory_supersedeare hidden and refused on both hosted and local agent transports. Agents may store candidates or mark factsneeds_review; a human curates them in the Siftable interface. project_get_contextreported each task's workflow phase in itsstatusfield and leftphasenull. Both are now the real column values, on open, blocked, and overdue tasks alike.
Projection 1.18.0 records that human-curation boundary and removes four tools from the presented agent surface.
This release requires migration V389__code_memory_delete_cascade.sql.
code_memory_delete continues to fail until it is applied.
1.2.34 compatibility note
Version 1.2.34 closes a set of defects where a call succeeded but the answer was wrong or incomplete.
- Writing a person with a
companyreturned 500 unconditionally. The organization upsert named a unique index that became partial in V357 without supplying its predicate, so Postgres could not infer the conflict target. - Authored content is no longer stripped in transit. The request pipeline ran
striptags()over every string, which deleted<from filter operators, turnedList<String>intoList, and removed markup from note titles — silently, and for every MCP call, because the content allowlist only matched top-level body keys. HTML is now escaped where it is rendered instead. - A range comparison (
>>=<<=) against a text-typed column with a numeric value is rejected with the retype path, instead of quietly comparing as text where'99'sorts above'199'. Sorting such a column returns a warning rather than an unmarked, plausible, wrong order. dataset_querynow carrieswarningsin its structured result.task_getnow carries the full task brief structurally —rationale,deliverable,verification,approachConstraints,acceptanceCriteria, andscope. Structured-first clients previously received a task with no definition of done.
Reconnect MCP clients after upgrade to refresh the projection 1.18.0 schemas.
1.2.33 compatibility note
Version 1.2.33 repairs hosted OAuth token exchange. The authorization server
looked up a hashed authorization code with a consumed_at IS NULL filter
against a table that consumes codes by deletion and has no such column, so
every fresh Connect from Cursor, Codex, or any other remote client failed with
Internal Server Error after Google consent. Existing authenticated sessions
were unaffected. Tool contracts and projection 1.16.0 schemas are unchanged; no
reconnect is required beyond retrying a login that previously failed.
1.2.32 compatibility note
Version 1.2.32 adds an explicit, metadata-only repository_project_link mutation so an agent can persist the project selected from context_current.projectCandidates. It also keeps unsupported-client matches in a secondary discovery lane and suppresses zero-score full-text note hits.
Reconnect MCP clients after upgrade to refresh the projection 1.16.0 schemas.
Hosted remote clients
The recommended hosted endpoint is:
https://siftable.io/api/v1/mcp
Claude remote connectors, Cursor, Codex, Devin, Kimi Code, and Antigravity can
connect over Streamable HTTP. Prefer URL-only OAuth configuration: an
authorize request that omits scope is issued mcp:* work:read work:write
by default behind the first-party consent form, and anything missing later can
be approved in place through the one-hour link request_capability returns
(Streamable HTTP only; legacy /sse sessions reconnect instead). A
configured Authorization header selects static PAT mode; that token's scopes
cannot be expanded by an OAuth challenge or an elevation link.
Client configuration keys and callback behavior differ (url in Cursor,
Codex, and Kimi; serverUrl in Antigravity; UI-managed connections in Claude
and Devin). See
docs/runbooks/hosted-mcp-client-compatibility.md
for the provider-grounded matrix and verification flow.
The npm package remains the local stdio path for clients that need an authorized checkout or cannot use the hosted endpoint.
MCP Apps views
Some tools can render in a sandboxed View in hosts that implement the MCP
Apps extension (Claude, ChatGPT, VS Code, Goose). Those tools carry
_meta.ui.resourceUri pointing at a ui://siftable/<view>.html resource,
listed by resources/list and served by resources/read with the MIME type
text/html;profile=mcp-app. The metadata is presentation only: it never
changes a tool's projection, scopes, presented catalog, or catalog digest,
and content stays a complete text answer for every other client.
UI metadata is attached only when the View bundle exists in dist/ui/. A
build without bundles presents no UI metadata at all. The reviewed tool to
View allowlist lives in src/ui/viewRegistry.ts; the design is in
docs/design/mcp-ui-surfaces-plan.md.
The bundles are built by the @siftable/mcp-apps workspace
(packages/exf-mcp-apps, one self-contained HTML file per View) and copied
into dist/ui/ by scripts/copy-ui-bundles.mjs at the end of npm run build. Through Nx the apps workspace builds first
(nx run @siftable/mcp-server:build). A plain npm run build without an
apps build, which is what the hosted Docker image does today, copies nothing
and stays inert. verify:package, prepublishOnly, and pack:mcpb build
the apps first and fail if a bundle is missing, so a published tarball or
.mcpb always carries every View bundle (dist/ui/graph.html, data.html,
review.html).
Views available today:
| View | Resource | Tools |
|---|---|---|
| Graph | ui://siftable/graph.html |
entity_graph, object_links |
| Data | ui://siftable/data.html |
dataset_query, dataset_aggregate, dataset_summarize, dataset_quality_check, dataset_facets, dataset_compare, dataset_rank, dataset_plot_result, dataset_timeseries, dataset_bucket, people_search, organization_search, task_list |
| Review | ui://siftable/review.html |
lead_discovery_candidate_list, lead_discovery_run_get, crm_import_plan_get, crm_import_plan_create |
Human gate on consequential tools
Seven tools ask the human to confirm before they run: the four bulk deletes
on their apply call (confirm: true with a previewId; previews and dry runs
never prompt), dataset_schema_modify when it deletes a field,
crm_import_plan_approve, and lead_discovery_company_run, whose prompt
states the approved ceiling in USD. The question travels as an MCP 2026-07-28
multi-round-trip InputRequiredResult carrying one form elicitation with a
single confirm boolean; the client shows it, then retries the same call with
inputResponses. On 2025-era sessions that have a backchannel (stdio or
sessionful HTTP) the SDK's legacy shim sends the same prompt as an
elicitation/create request. On the stateless 2025 HTTP fallback no client
capabilities are known per request, so the gate is not asked.
A client that declares no elicitation capability runs the tool as before.
Every gated receipt, whether it succeeded, failed, or was rejected, records
the gate under humanGate: elicitation with accepted, or
unsupported_fallback with not_asked, on receipts where the tool ran; and
elicitation with the exact refusal, declined, cancelled, or
not_confirmed, on the rejected receipt (error.code: "declined_by_user")
where nothing ran. The gate is a human-in-the-loop guarantee for honest
hosts; OAuth scopes remain the authorization boundary. The seeded tool list is
in src/registry/mcpToolContractSeed.ts and the wording in
src/humanGate.ts.
1.2.31 compatibility note
This release keeps task collection totals stable across cursor pages, resolves repository context through durable identities under transaction-scoped RLS, and returns explicit project candidates instead of auto-linking repositories by name. Project resources now paginate with opaque cursors and surface backend failures, while graph and people results provide usable canonical labels. Reconnect MCP clients after upgrade to refresh the projection 1.15.0 schemas.
1.2.30 compatibility note
This release requires caller-stable idempotency keys for agent creation, work
claims and lifecycle transitions, code-memory writes, document uploads, Vault
entry creation, and governed approval, execution-grant, and materialization
requests. Same-key retries replay the original authoritative response; changed
payloads conflict. Vault receipts retain metadata or runner-encrypted ciphertext,
never plaintext. ai_generate remains explicitly non-retry-safe because streamed
provider output is not persisted for replay. Reconnect MCP clients after upgrade
to refresh the projection 1.14.0 schemas.
1.2.29 compatibility note
This release makes hosted capability inspection terminal and reconnect-safe,
adds task-state and governed-approval invariants, and puts stable IDs and typed
details into project, task, dataset, schema, people, organization, and calendar
results. Retired source-index/search names route to local checkout search while
curated code memories remain available. The dataset_create,
dataset_mutate, dataset_schema_modify, and dataset_materialize_result
tools require a caller-stable idempotencyKey.
Reusing the same key with the same payload replays the original result; reusing
it with a changed payload is rejected. Existing MCP sessions must reconnect to
refresh their cached tool schemas before invoking these mutations. Direct REST
callers remain backward compatible when the Idempotency-Key header is omitted.
Privacy Policy
The server sends tool calls to the Siftable API at the configured
SIFT_API_URL (by default https://siftable.io) and to nothing else. It
stores no data locally beyond the environment it is started with, and the
personal access token is only ever sent to that API. Siftable's privacy
policy, covering collection, use, storage, sharing, retention, and contact
details, is at https://siftable.io/privacy.html.
Siftable MCP 질문
Siftable MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'SIFT_PAT=<YOUR_SIFT_PAT>' --env 'SIFT_API_URL=<SIFT_API_URL>' mcp-server -- npx -y @siftable/mcp-server를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Siftable MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Siftable MCP는 어떤 도구를 제공하나요?
106개 도구를 제공합니다. 예: context_current, find_capability, request_capability, project_list, project_create.
Lead discovery는 어떻게 처리되나요?
Lead discovery는 기본적으로 비활성화되어 있으며, lead_discovery:read 또는 lead_discovery:write와 같은 특정 권한 범위(scope)가 필요합니다.
회사 검색을 수행할 수 있나요?
네, 하지만 회사 검색은 Crustdata 유료 요청 1회로 제한되며, 요청 전 최대 비용을 표시합니다.
Person enrichment는 어떻게 작동하나요?
Person enrichment는 저장된 프로필과 사실 제안(fact proposals)을 반환하며, 특정 필드 이름과 fact ID를 사용하여 적용할 수 있습니다.