Skip to main content
Glama

Hey365

日本語版は README.ja.md をご覧ください。

Hey365 is a Model Context Protocol (MCP) server that answers one question:

"What do I actually owe people right now?"

Say "Hey365" in any MCP client and it scans the last 36 hours of your Outlook mail, Teams chats, Teams channels and calendar, works out which conversations are still waiting on you, explains why, and drafts the replies. Nothing is ever sent unless you explicitly say so.

Hey365 チェック完了

過去36時間で、あなたの対応が必要と思われるものが 2件あります。

🔴 1. Yohsai Hirano / Teams Channel
00:48(1日前)

内容:
承知しました。調整頂けましたら会議リンクの送付をお願いいたします!

返信が必要な理由:
「調整頂けましたら会議リンクの送付をお願いいたします!」のように、依頼を受けています。

返信案:
ご連絡ありがとうございます。10/6(火)10:00-10:30 で確定しましたので、
本日中に会議リンクをお送りします。

------------------------------------------------

送信したいものがあれば、「1を送って」「全部送って」のように指示してください。

Why it exists

Inbox rules and unread counts do not know the difference between "FYI, sharing this" and "I am blocked waiting for your approval". Hey365 answers that by reconstructing every conversation thread and asking three questions in order:

  1. Did I already answer? If my last message is newer than their last message, the thread is done. No keyword matching — pure thread chronology.

  2. Is this for me? Automated notifications, bots, mails where I am only on CC, pure FYI broadcasts, reaction-only replies and closed conversations are dropped.

  3. What is being asked? Approval requests, decisions, direct questions, scheduling, follow-up nudges and assigned actions are detected in both Japanese and English, then weighted and scored.

What survives all three is shown to you, newest signal first, with the exact sentence that triggered it.

Related MCP server: M365 MCP Server

How it works

flowchart LR
    A[Outlook mail<br/>Teams chats<br/>Teams channels<br/>Calendar] --> B[Work IQ CLI<br/>Microsoft Graph]
    B --> C[Thread reconstruction]
    C --> D[Triage<br/>signals + scoring]
    D --> E[Dedupe<br/>same topic across channels]
    E --> F[Reply drafts<br/>M365 Copilot]
    F --> G[You approve]
    G --> H[Send<br/>reply in the same thread]

Hey365 talks to Microsoft 365 through the Work IQ CLI, which is an authenticated Microsoft Graph proxy. Reply drafts are written by Microsoft 365 Copilot via workiq ask, so Hey365 needs no API keys of its own.

Requirements

Requirement

Notes

Node.js 20+

node --version

A Microsoft 365 work account

Outlook + Teams

Microsoft 365 Copilot license

Required for reply drafting and session summaries

@microsoft/workiq

Installed and authenticated automatically by hey365 setup

Install

git clone https://github.com/monoqlo78/hey365.git
cd hey365
npm install
npm run build

Then connect Microsoft 365 (installs Work IQ if missing, disables broker auth, opens a browser sign-in):

node dist/index.js setup
node dist/index.js health     # should print "hey365": "ok"

Register with your MCP client

One command writes the correct config for you, merging into any existing file:

node dist/index.js install copilot-cli        # GitHub Copilot CLI
node dist/index.js install vscode             # VS Code (GitHub Copilot)
node dist/index.js install claude-code        # Claude Code
node dist/index.js install claude-desktop     # Claude Desktop
node dist/index.js install codex              # OpenAI Codex CLI
node dist/index.js install cursor             # Cursor
node dist/index.js install windsurf           # Windsurf
node dist/index.js install scout              # Scout

node dist/index.js install --all              # every client above
node dist/index.js install codex --dry-run    # preview without writing
node dist/index.js install cursor --path ./.cursor/mcp.json

Most clients (~/.copilot/mcp-config.json, ~/.claude.json, ~/.cursor/mcp.json, …):

{
  "mcpServers": {
    "hey365": {
      "command": "node",
      "args": ["/absolute/path/to/hey365/dist/index.js", "mcp"]
    }
  }
}

VS Code (.vscode/mcp.json):

{
  "servers": {
    "hey365": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/hey365/dist/index.js", "mcp"]
    }
  }
}

Codex CLI (~/.codex/config.toml):

[mcp_servers.hey365]
command = "node"
args = ["/absolute/path/to/hey365/dist/index.js", "mcp"]

Usage

Just talk to your assistant.

You say

What happens

Hey365

Triage the last 36 hours and draft replies

Hey365 24時間 / Hey365 last 12 hours

Change the window

Hey365 メールだけ / Teams only

Limit the sources

1をもう少し柔らかく

Rewrite draft #1 in a softer tone

3を英語で

Rewrite draft #3 in English

1を送って / 1と3を送って / 全部送って

Send those replies (only when you say so)

Hey365 session <会議名>

Summarise a meeting or conversation with decisions, action items and open questions

The numbering survives client restarts, so you can triage now and send later.

From the terminal

node dist/index.js triage --hours 36 --limit 10
node dist/index.js triage --no-drafts
node dist/index.js session "Fabric 定例"
node dist/index.js health --deep

Tools

Tool

Input

Purpose

hey365

hours, sources, limit, includeDrafts

Alias of hey365_triage, the entry point for "Hey365"

hey365_triage

hours (default 36), sources (outlook/teams/meetings), limit, includeDrafts

Scan, triage and draft

hey365_session

sessionId, includeDraft

Summarise one meeting/thread: decisions, action items, open questions

hey365_draft

itemId, instruction

Rewrite a draft ("softer", "shorter", "in English")

hey365_send

itemIds, confirm

Send approved replies into the original thread

hey365_health

deep

Connection, authentication, read/write status

hey365_setup

interactive

Install + authenticate Work IQ

hey365_install

clients, dryRun

Register Hey365 with other MCP clients

Safety

  • Send is a separate, explicit step. Triage and drafting never send anything.

  • What you saw is what is sent. Each draft carries a hash; hey365_send refuses to send text you have not seen.

  • Replies stay in the thread. Sending uses reply, so Hey365 never starts a new conversation or adds new recipients.

  • Drafts never invent facts. If the thread lacks the information needed to answer, the draft says so and asks you to decide.

  • Nothing leaves your machine except through Microsoft Graph. No third-party API, no telemetry. Logs go to stderr with tokens redacted, and local state (~/.hey365/state.json) is written with 0600.

Environment variables

Variable

Default

Purpose

HEY365_TIMEZONE

Asia/Tokyo

Display timezone

HEY365_VIP

Comma-separated addresses that get an importance boost

HEY365_WORKIQ_COMMAND

auto

Override how the Work IQ CLI is launched

HEY365_WORKIQ_ACCOUNT

Account to use when several are signed in

HEY365_WORKIQ_TIMEOUT_MS

120000

Per-call timeout

HEY365_LOG_LEVEL

info

silent/error/warn/info/debug

HEY365_STATE_FILE

~/.hey365/state.json

Where drafts are persisted

Troubleshooting

Run node dist/index.js health first. Every failure maps to a code with a concrete next step:

Code

Fix

WORKIQ_NOT_INSTALLED

node dist/index.js setup, or npm i -g @microsoft/workiq

WORKIQ_NOT_AUTHENTICATED / WORKIQ_AUTH_EXPIRED

node dist/index.js setup and sign in through the browser

WORKIQ_EULA_REQUIRED

npx @microsoft/workiq accept-eula

WORKIQ_ADMIN_CONSENT_REQUIRED

Ask a tenant admin to run npx @microsoft/workiq auth consent

WORKIQ_CONNECTION_ERROR

Check the network, then retry

WORKIQ_PERMISSION_DENIED

Some sources are not readable; Hey365 continues with the rest

WORKIQ_WRITE_DISABLED

Triage and drafts work, sending is blocked by policy

SESSION_NOT_FOUND

Re-run hey365_session with a subject keyword or date

DRAFT_MISMATCH

The draft changed after you saw it — review and send again

On Windows, sign-in can fail inside the broker (WAM). setup disables it automatically (workiq config set disableBrokeredAuth=true) and falls back to browser authentication.

Development

npm run typecheck     # tsc --noEmit
npm test              # vitest
npm run build         # tsc
npm run smoke         # MCP handshake against the built server

License

MIT

Available Tools

8 tools
hey365Hey365 triageB

過去N時間(既定36)の Outlook / Teams / 会議を調査し、自分が返信・対応すべき用件だけを抽出して返信案を作成する。送信はしない。

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo何時間前までを対象にするか(既定 36)
limitNo最大件数
sourcesNo対象ソース。未指定なら全て
includeDraftsNo返信案も生成するか

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose a key non-obvious behavior—no sending—as well as the time window and the filtering rule. But it leaves ambiguous whether the generated drafts are returned to the caller or persisted somewhere, and it does not mention permissions or other side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence that front-loads the investigation scope and closes with an important limitation. Every clause carries useful information, and there is no repetition of the tool name or empty filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should clarify what the caller actually receives. It says it 'creates draft replies' but does not state whether those drafts are returned as data, saved into Outlook/Teams, or both. This is a meaningful gap for an agent that needs to know how to use the tool's result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The JSON schema already documents all four parameters with descriptions and defaults, so schema description coverage is 100%. The description mostly restates the default time window and the source names without adding deeper parameter semantics. This meets the baseline but does not go beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action scope: it investigates Outlook, Teams, and meetings over a past time window and extracts only items requiring the user's reply. It also ends with '送信はしない', explicitly distinguishing it from sending tools. However, it does not differentiate itself from sibling tools like 'hey365_triage' or 'hey365_draft', so it is clear but not sibling-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '送信はしない' gives an explicit non-goal, which helps rule out sending workflows. It does not, however, explain when to prefer this tool over 'hey365_triage' or 'hey365_draft', and no alternative tool names are mentioned. Usage context is implied rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_draftHey365 refine draftA

既に提示した返信案を自然言語の指示で修正する(柔らかく / 英語に / 短く など)。

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYes返信案の番号(例 "1")または item id
instructionYes修正指示(例「もう少し柔らかく」「英語にして」「短く」)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It states the core mutation (modifying an existing draft) but does not disclose what the tool returns, whether the refinement persists, or whether the original draft is replaced. For a mutating refinement tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence states verb, resource, and mode, with parenthetical examples that clarify the instruction format. Every element earns its place and there is zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with full schema coverage, the description is nearly sufficient. However, with no output schema and no annotations, it fails to state what the agent should expect back (the refined draft text) or that a draft must already exist in the session. The workflow relationship to sibling tools is only implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both itemId and instruction have clear Japanese descriptions, so the baseline of 3 applies. The tool description adds only marginal value by framing instruction as natural-language editing examples, partially overlapping with the schema's own examples. No parameter is left undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (修正する/modify), a specific resource (既に提示した返信案, the already-presented reply draft), and the method (natural language instructions), with concrete examples (柔らかく/英語に/短く). The 'already presented' qualifier implicitly differentiates it from sibling draft-creation tools like hey365. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '既に提示した返信案' implies the tool is only for refining a draft that already exists in the conversation, which is useful context. However, it names no alternatives (e.g., hey365 to create a draft, hey365_send to send) and gives no explicit when-not-to-use guidance. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_healthHey365 health checkA

Work IQ 接続・認証・読み取り/書き込み権限・タイムゾーンを確認する。

ParametersJSON Schema
NameRequiredDescriptionDefault
deepNoOutlook / Teams / Calendar の到達性も確認する

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. The verb '確認する' implies a read-only diagnostic, and the listed checks add useful behavioral context. However, it does not explicitly state that no data is modified, whether external services are contacted, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence that states the tool's entire purpose with no filler. Every word contributes meaning, and the optional parameter detail is left to the schema where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional boolean parameter, the definition is reasonable. Still, with no output schema and no annotations, it does not explain the return shape, success/failure indicators, or that the check is non-mutating, leaving some ambiguity for an agent invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single optional 'deep' parameter is fully documented in the schema, including its effect on Outlook/Teams/Calendar reachability. The tool description adds nothing beyond this, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('確認する' / check) and names the exact resource scope: Work IQ connection, authentication, read/write permissions, and timezone. This clearly distinguishes it from sibling tools like hey365_send or hey365_setup, making the health-check purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The health-check purpose makes it inferable when to use the tool: when verifying connectivity, auth, permissions, or timezone. However, there is no explicit guidance about when not to use it or which sibling tool (e.g., hey365_setup) should be used instead, so routing is left mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_installHey365 client installB

GitHub Copilot / Claude Code / Codex / Cursor / Windsurf / Scout などの MCP 設定に Hey365 を登録する。

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoファイルに書かず内容だけ表示する
clientsNo設定を書き込む MCP クライアント。未指定なら設定内容を表示のみ

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

注釈が一切ないため、説明が動作特性を説明する責任を負うが、設定ファイルの変更や上書き、必要な権限などの副作用が開示されていない。dryRun パラメータが書き込み動作を暗示するが、本体説明には明記されていない。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

1文で目的が完結しており、冗長な表現や無関係な情報がない。対象クライアントの列挙も具体的で、情報が前寄せされている。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

2つの任意パラメータはスキーマで完全に説明されており、ツール自体は単純。ただし、出力スキーマも注釈もないため、実行結果や成功・失敗時の挙動、ファイル変更の具体的な影響についての説明が欠けており、完全とは言えない。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

スキーマの説明カバレッジは 100% であり、dryRun と clients の意味はスキーマが十分に説明している。ツール説明自体はパラメータの追加情報をほぼ提供していないため、ベースラインの 3 が妥当。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

説明は「Hey365 を MCP 設定に登録する」という具体的な動詞と対象を示し、対象クライアントも列挙されているため、何をするツールかは明確。ただし、兄弟ツールの hey365_setup との使い分けが明示されておらず、5 には届かない。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

説明は動作内容のみで、どのような場面で使うべきか、または hey365_setup など代替ツールとどう使い分けるかが一切書かれていない。エージェントはツール名と文脈から推測するしかない。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_sendHey365 send repliesA

ユーザーが明示的に指示した返信案だけを、元のスレッドへの返信として送信する。新規スレッドは作らない。

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoユーザーが明示的に送信を指示した場合のみ true にしてください
itemIdsYes送信する番号の配列。例 ["1","3"]。全件送信は ["all"]

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of disclosing behavior. It explicitly states that it only sends user-approved reply drafts as replies to original threads and does not create new threads, adding important behavioral context beyond the input schema. It does not mention irreversibility or failure behavior, but the core side effects are clearly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence front-loads the critical constraint ('only explicitly instructed reply drafts') before stating the action and the new-thread exclusion. There is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two fully documented parameters, and the core behavior is clearly described, including what it does not do. With no output schema, it leaves the agent to infer the return value and error behavior, but this is a minor gap for a low-complexity send tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; both itemIds and confirm are already documented with concrete examples and intent. The tool description reinforces the confirm semantics but does not add substantial parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('sent reply drafts') and clearly defines the scope: only explicitly instructed reply drafts, sent as replies to original threads, with no new thread creation. This distinguishes it from sibling tools like hey365_draft and from general send operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states an explicit precondition: send only when the user has explicitly instructed a reply draft to be sent, which tells the agent when to invoke it. It does not name alternatives such as hey365_draft nor provide direct when-not-to-use guidance beyond the no-new-thread note, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_sessionHey365 session summaryA

会議 / Teams スレッド / Outlook 会話を要約し、決定事項・Action Items・自分の宿題・未解決事項・返信要否を出力する。

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes会議 ID / Teams thread ID / Outlook conversation ID / 会議名
includeDraftNo返信が必要な場合に返信案も生成するか

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the outputs (decisions, action items, etc.) and implies a read-only summarization operation, but it doesn't explicitly state whether it modifies anything, requires specific permissions, or has any side effects. It also doesn't mention the behavior of includeDraft beyond what the schema says. It's transparent about outputs but not about the operation's side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately states the action (summarize) and then enumerates the outputs. It is efficient with no wasted words and clearly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists all key output categories (decisions, action items, homework, unresolved items, reply need) and the optional draft generation is captured by the schema. No output schema exists, so the description adequately specifies the expected return content. It could mention prerequisites like authentication, but given the sibling suite, setup likely handles that. Overall, it's sufficiently complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (sessionId and includeDraft), so the schema already documents them well. The tool description does not add extra parameter semantics beyond what the schema provides; it only references the output categories. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it summarizes meetings/Teams threads/Outlook conversations and lists the specific outputs (decisions, action items, homework, unresolved items, reply need). This is a specific verb+resource combination and distinguishes it from sibling tools like hey365_draft or hey365_send, though it doesn't explicitly name them. It's not a tautology and provides clear intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: if you need a summary of a session, use this tool. However, it doesn't explicitly state when to use it versus siblings like hey365_triage or hey365_draft, nor does it provide exclusions or alternative conditions. The context is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_setupHey365 setup / auth recoveryA

Work IQ が未インストール・未認証・WAM 認証失敗の場合に、インストールと Broker 無効化+ブラウザ認証を実行して復旧する。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo接続済みでも再セットアップする
interactiveNotrue の場合、必要に応じてブラウザ認証を開始します

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the actions (installation, Broker disablement, browser authentication) but does not disclose side effects, required privileges, reversibility, or impact on existing settings. For a recovery/mutation tool, this is a significant gap; the agent cannot assess risks or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence in Japanese that front-loads the trigger conditions and clearly states the recovery actions. Every clause serves a purpose, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a two-boolean-parameter tool with no output schema, but it lacks information about expected outcomes, return values, or side effects. Given no annotations and no output schema, an agent may not know what to expect after invoking it. It explains 'what' and 'when' but not 'what happens after' or potential pitfalls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (force and interactive), and the schema already explains their meaning. The description adds no additional semantic value beyond what the schema provides. Baseline 3 is appropriate since the schema covers the parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific purpose: recover Work IQ when it is uninstalled, unauthenticated, or WAM auth fails, by performing installation, Broker disabling, and browser authentication. The verb '復旧する' (recover) plus the resource (Work IQ) and explicit conditions clearly distinguish it from siblings like hey365_install, which likely only handles installation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit conditions for use: '未インストール・未認証・WAM 認証失敗の場合' (when not installed, not authenticated, or WAM auth fails). It does not explicitly mention alternatives or exclusions, but the condition is specific enough to guide selection among siblings. Lacks a clear statement of when not to use it, such as when only installation is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hey365_triageHey365 triage (alias)C

hey365 と同じ。過去N時間の M365 を調査して対応が必要な項目を抽出する。

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo何時間前までを対象にするか(既定 36)
limitNo最大件数
sourcesNo対象ソース。未指定なら全て
includeDraftsNo返信案も生成するか

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must disclose behavioral traits. It only states that the tool investigates and extracts items, but does not mention potential side effects like draft generation (implied by includeDrafts), permission requirements, or whether it mutates data. The parameter includeDrafts suggests the tool may create drafts, but this is not disclosed in the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two brief sentences, front-loading the alias relationship and then stating the core function. It contains no redundant words and is appropriately sized for a simple alias tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks critical information such as return value format, behavioral side effects, and usage distinctions. Without an output schema or annotations, the agent needs more detail about what the tool returns and whether it has write-side effects. The includeDrafts parameter is particularly ambiguous without explanation in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description need not repeat schema details. It adds the phrase 'past N hours' which maps to the hours parameter, but this is already in the schema description. No additional meaning is provided for limit, sources, or includeDrafts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it is the same as hey365 and provides the action 'investigate M365 for the past N hours and extract items requiring action.' This is a specific verb-resource pair and distinguishes it from other siblings like hey365_health or hey365_setup. However, since hey365 is a sibling, the description relies on the alias relationship rather than fully independent differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only says 'same as hey365' and gives no conditions for when to use this tool over alternatives. It does not mention when-not-to-use or name alternative tools for comparison. An agent cannot tell whether to call this or hey365, as both appear to serve identical purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedhey365
    • First observedhey365_draft
    • First observedhey365_health
    • First observedhey365_install
    • First observedhey365_send
    • First observedhey365_session
    • First observedhey365_setup
    • First observedhey365_triage

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation2/5

hey365 and hey365_triage are explicitly described as doing the same thing, creating a clear duplicate. hey365_session also overlaps in scanning Outlook/Teams/meetings, though its output differs enough to be partially distinguishable.

Naming Consistency4/5

Seven of eight tools follow the consistent hey365_<action> pattern, which is predictable and readable. The unprefixed base tool hey365 is a minor deviation but does not create real confusion.

Tool Count5/5

Eight tools is well-scoped for a personal M365 assistant covering triage, summarization, drafting, sending, health checks, setup, and installation. Each tool has a clear role in the workflow.

Completeness4/5

The workflow from triage through drafting, revising, and sending is fully covered, plus health/setup/install support. Minor gaps exist, such as no explicit way to dismiss or ignore items, but agents can generally complete the core task.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    B
    maintenance
    MCP server providing AI assistants with full access to Microsoft Outlook email and calendar via the Microsoft Graph API, featuring 26 tools for mail, calendar, contacts, and scheduling with delegated authentication.
    29
    -