Open-source implementation of tai42-contract: the extended MCP server hosting tools, agents, extensions, connectors, hooks, and storage for the TAI ecosystem.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport http · sse counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 327
filesystem 17
- fs tai42_skeleton-1.12.0/src/tai42_skeleton/app/readiness_sentinel.py :35
with open(tmp, "w", encoding="utf-8") as handle: - fs tai42_skeleton-1.12.0/src/tai42_skeleton/app/route_registry.py :221
undeclared authed route is fail-open (a forgotten fence silently becomes grantable), so - fs tai42_skeleton-1.12.0/src/tai42_skeleton/cli/mcp_app.py :158
os.unlink(uds) - fs tai42_skeleton-1.12.0/src/tai42_skeleton/cli/native/openapi.py :6
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/cli/offline.py :14
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/cli/openapi.py :252
The combined schema is ``anyOf``, not ``oneOf``: ``Error`` is open (it constrains - fs tai42_skeleton-1.12.0/src/tai42_skeleton/config/file_manager.py :121
fd = os.open(f"{path}.lock", os.O_RDWR | os.O_CREAT, 0o600) - fs tai42_skeleton-1.12.0/src/tai42_skeleton/interactions/helper.py :52
are already open (the ``max_concurrent`` guard).""" - fs tai42_skeleton-1.12.0/src/tai42_skeleton/marketplace/installer.py :87
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/marketplace/pip.py :48
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/marketplace/prefix.py :31
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/operations/presets.py :1145
# without a Postgres open (delete's reasoning). - fs tai42_skeleton-1.12.0/src/tai42_skeleton/plugins/registry.py :32
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/routers/plugins.py :32
from pathlib import Path - fs tai42_skeleton-1.12.0/src/tai42_skeleton/routers/prometheus.py :24
import shutil - fs tai42_skeleton-1.12.0/src/tai42_skeleton/template/file_loading.py :98
os.remove(path) - fs tai42_skeleton-1.12.0/src/tai42_skeleton/tools/builtin/interactions.py :103
InteractionLimitError: Too many questions are already open (the
network 9
- net tai42_skeleton-1.12.0/src/tai42_skeleton/cli/mcp_app.py :4
import socket - net tai42_skeleton-1.12.0/src/tai42_skeleton/cli/native/doctor.py :10
from urllib.parse import urlsplit, urlunsplit - net tai42_skeleton-1.12.0/src/tai42_skeleton/connectors/oauth/client.py :23
from urllib.parse import urlencode, urlparse - net tai42_skeleton-1.12.0/src/tai42_skeleton/conversations/delivery.py :20
import httpx - net tai42_skeleton-1.12.0/src/tai42_skeleton/conversations/turn.py :21
from urllib.parse import quote - net tai42_skeleton-1.12.0/src/tai42_skeleton/interactions/settings.py :9
from urllib.parse import urlparse - net tai42_skeleton-1.12.0/src/tai42_skeleton/marketplace/client.py :21
from urllib.parse import quote - net tai42_skeleton-1.12.0/src/tai42_skeleton/marketplace/pip.py :170
ANY failure of the fetch itself — an ``httpx.HTTPError`` (a deleted-tag 404, - net tai42_skeleton-1.12.0/src/tai42_skeleton/template/resource_manager.py :10
from urllib.parse import unquote_to_bytes, urlsplit
database 8
- db tai42_skeleton-1.12.0/src/tai42_skeleton/access_control/policy.py :46
# edited policy from redis instead of serving the stale cached copy. - db tai42_skeleton-1.12.0/src/tai42_skeleton/app/bus.py :90
from redis.exceptions import ConnectionError as RedisConnectionError - db tai42_skeleton-1.12.0/src/tai42_skeleton/channels/notifications_sink.py :44
from redis.asyncio import Redis - db tai42_skeleton-1.12.0/src/tai42_skeleton/cli/native/doctor.py :113
from redis.exceptions import ConnectionError as RedisConnectionError - db tai42_skeleton-1.12.0/src/tai42_skeleton/conversations/records.py :46
from redis.asyncio import Redis as AsyncRedis - db tai42_skeleton-1.12.0/src/tai42_skeleton/interactions/store.py :30
from redis.asyncio import Redis - db tai42_skeleton-1.12.0/src/tai42_skeleton/middleware/rate_limit.py :48
from redis.asyncio import Redis as AsyncRedis - db tai42_skeleton-1.12.0/src/tai42_skeleton/utils/redis_typing.py :15
from redis.asyncio import Redis as AsyncRedis
declared dependencies 47
- fastmcp@>=3.2,<4
- mcp@>=1
- tai42-contract@>=1.10,<2
- tai42-kit@>=1.9,<2
- tai42-cli@>=1.3,<2
- click@>=8.3
- typer@>=0.12
- httpx@>=0.28
- PyYAML@>=6.0
- pyaml-env@>=1.2
- ruamel.yaml@>=0.18
- python-dotenv@>=1.2
- makefun@>=1.16
- pydantic-settings@>=2.13
- pydantic@>=2.12
- pydantic-core@>=2
- cachetools@>=7.0
- async-lru@>=2.3
- langchain-core@>=1.2,<2
- prometheus-client@>=0.24
- fastapi@>=0.135
- starlette@>=0.40
- uvicorn@>=0.43
- redis@>=5
- wsproto@>=1.3
- uvloop@>=0.22; sys_platform !=
- tai42-toolbox@>=0.5,<0.6
- magika@>=0.6
- pandas@>=2.2
- langchain-community@>=0.3
- pypdf@>=5
- docx2txt@>=0.9
- openpyxl@>=3.1
- tabulate@>=0.9
- beautifulsoup4@>=4.12
- python-pptx@>=1
- striprtf@>=0.0.26
- odfpy@>=1.4
- ebooklib@>=0.18
- tai42-skeleton@*
- tai42-identity-redis@>=0.3,<0.4
- pytest@>=8
- pytest-asyncio@>=1.3
- pytest-cov@>=5
- ruff@>=0.6
- pyright@>=1.1.389
- fakeredis@>=2.21