Skip to content

specs(t27mcp): telegram.t27 reads Telegram through the VIBEE app (refs #10066) - #10326

Merged
gHashTag merged 2 commits into
masterfrom
t27mcp/telegram-via-app
Oct 18, 2026
Merged

gHashTag merged 2 commits into
masterfrom
t27mcp/telegram-via-app

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

What

specs/t27mcp/telegram.t27 now reads the owner's Telegram account through the owner's TRI CLAW app instead of the tg CLI.

TRI CLAW is gHashTag/999-multibots-telegraf, apps/vibee-editor/render, running as the vibee-render service. It already holds the owner's logged-in MTProto session and serves its tg_* tools over JSON-RPC at POST /mcp. The tg CLI's Keychain session was never created, and the app's session already exists. So there is no second session and no login step.

Spec rule Effect
TG_TOOLS tg_unanswered, tg_dialogs, tg_history, tg_search, tg_contacts, tg_participants, tg_scheduled. These are the app's own names, read only.
chat_ok, query_ok, limit_for Unchanged. A bad chat is refused before the app is called.
outcome(has_key, status, rpc_error) Checked in order: no key, unreachable (status 0), denied (401/403), failed (non-200, or an error inside a 200), ok.
SEND_TEXT Sending stays in the app's bot or mini app, where the owner presses the button on a draft card. A send over /mcp becomes a draft that no screen can confirm, so the server has no send tool.

Evidence

  • In the lab, t27c test-report gives 9 of 9 pass and 0 vacuous.
  • 9 mutants, each caught by a failing test:
    • no limit cap
    • the key not checked
    • no answer not named
    • a 200 with an error taken as ok
    • 401 not denied
    • 403 not denied
    • a 5xx not failed
    • a 21-digit id accepted
    • a long query accepted
  • Live on the owner's Mac, through the t27-mcp server built from this spec (companion PR in gHashTag/t27-mcp):
    • tg_unanswered and tg_search return data.
    • A bad chat, no key, a wrong key, an unreachable address and an unknown user each give their own outcome text.

Refs #10066

🤖 Generated with Claude Code

…EE app, not the tg CLI

The owner's Telegram session already lives in the VIBEE app (gHashTag/999-multibots-telegraf,
vibee-render), which serves its tg_* tools over JSON-RPC at POST /mcp. The t27 MCP server now forwards
read calls there with the owner's agent key (VIBEE_AGENT_KEY) instead of spawning the tg CLI, whose
Keychain session was never created. No second session and no login step.

Tools: tg_unanswered, tg_dialogs, tg_history, tg_search, tg_contacts, tg_participants, tg_scheduled,
under the app's own names. outcome() now takes the key, the HTTP status and the JSON-RPC error flag:
no key, unreachable, denied (401/403), failed (non-200 or an error in a 200), ok. SEND_TEXT says
where sending is: the app's bot or mini app, where the owner presses the button on a draft card; a
send over /mcp becomes a draft no screen can confirm, so the server keeps no send tool.

t27c test-report: 9 of 9 pass, 0 vacuous. 9 mutants, each caught by a failing test.

Refs #10066

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 09:03:59 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 48
PRs with All Checks Green 2
READY 0
FAILING 48
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 48 + 0 + 0 = 48, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=fad12492937a != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

gHashTag added a commit to gHashTag/t27-mcp that referenced this pull request Oct 18, 2026
… graded by telegram.t27 (#21)

The owner's session already lives in the VIBEE app (vibee-render, gHashTag/999-multibots-telegraf),
which serves its tg_* tools at POST /mcp. telegram.mjs now forwards a read call the wasm accepted there
with X-Agent-Key from VIBEE_AGENT_KEY, instead of spawning the tg CLI whose Keychain session was never
created. Seven tools under the app's names: tg_unanswered, tg_dialogs, tg_history, tg_search,
tg_contacts, tg_participants, tg_scheduled. No send tool; tg_unanswered ends with where sending is.

wasm/telegram.wasm and wasm/telegram_table.mjs regenerated from specs/t27mcp/telegram.t27
(gHashTag/t27#10326) on the lab: 9 of 9 tests, 0 vacuous, 9 mutants caught.

Refs gHashTag/t27#10066

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 18, 2026 09:04
The owner's name for the app that holds the Telegram session is TRI CLAW. Outcome texts, SEND_TEXT and
the header now say TRI CLAW. The env variable VIBEE_AGENT_KEY and the vibee-render service address are
plumbing names and stay as they are. 9 of 9 tests pass, 0 vacuous; the wasm is byte-identical.

Refs #10066

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit to gHashTag/t27-mcp that referenced this pull request Oct 18, 2026
…uild record (#22)

Regenerated wasm/telegram_table.mjs from specs/t27mcp/telegram.t27 (gHashTag/t27#10326, which now
names the app TRI CLAW). telegram.wasm is byte-identical. VIBEE_AGENT_KEY and the vibee-render
address stay: they are plumbing names, not the product's.

Refs gHashTag/t27#10066

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 09:15:47 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 49
PRs with All Checks Green 1
READY 0
FAILING 49
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 49 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=fad12492937a != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 6ca19ef into master Oct 18, 2026
28 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant