Skip to content

microsoft-365 outlook.mail.send promises message-id that Graph sendMail cannot return #507

Description

@pawellisowski

Problem

microsoft-365@1.0.0 manifest version 0.2.0 declares this output for outlook.mail.send:

outputs:
  type: single
  schema:
    message-id: string

The command documentation says it calls Microsoft Graph POST /me/sendMail (or /users/{from}/sendMail). Microsoft documents a successful call as 202 Accepted with no response body. The installed agent package contains no alternate contract explaining how a durable message id is produced.

This makes the declared output unprovable and prevents an at-most-once consumer from distinguishing a confirmed provider acceptance from an ambiguous run.

Reproduction

$env:AWARE_HOME='<empty temp directory>'
aware agent install microsoft-365@1.0.0
aware agent describe microsoft-365 --json

Inspect <AWARE_HOME>/agents/microsoft-365/manifest.yaml and commands/outlook.mail.send.md:

  • the manifest requires message-id: string
  • the implementation note names Graph sendMail
  • Graph's documented success response is empty 202 Accepted

Reference: https://learn.microsoft.com/en-us/graph/api/user-sendmail?view=graph-rest-1.0

Expected

The runtime command should have a truthful, testable success contract suitable for durable side-effect recording. One of:

  1. create a draft first, capture its Graph message id, then send it and return that id;
  2. return a clearly named bounded acceptance receipt that the transport can actually prove; or
  3. change the schema to express that no message id is available and document how consumers must classify successful-but-unidentified sends.

The manifest, command docs, implementation, dry-run output, and real output must agree.

Observed

The published manifest requires message-id, while the named provider endpoint cannot supply it in the success response. A consumer that requires the declared field will classify every successful Outlook send as indeterminate; a consumer that ignores it loses the durable acceptance evidence the schema promises.

Related downstream work

FloLess RFI connected-mailbox delivery: pawellisowski/floless.app#1090. Gmail's users.messages.send does return a message resource/id, so this mismatch is specific to the Outlook path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    qa-readyFixed and merged — awaiting QA verification

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions