No. Twilio SendGrid Mail API returns a success response when it accepts the request. Provely proves bounced, delivered and processed as separate promises.
| Fact | Value |
|---|---|
| Skill version | 0.1.0 |
| Publisher | Built and signed by Provely. |
| Certification | Provisional |
| Last conformance run | 2026-09-05T12:00:00Z: 43 of 43 cases passed, 0 critical false VERIFIED |
| Provider API versions | v3 |
| Default provider API version | v3 |
| Compiled | 2026-09-05 |
| Manifest hash | 19c7a63280020153 |
| Manifest hash check | the document hashes to the value the manifest states |
| Signature | valid, key provely-skill-2026-09, trusted by this build |
What does this page prove?
| Claim | Proven by | Evidence | Status |
|---|---|---|---|
| A bounce event with the type bounce states it. A block states the type blocked, and a block never satisfies this level. | sendgrid.email.bounced | E3 | proven |
| The delivered event of this message states it. It is the first event that a system outside Twilio SendGrid decides. | sendgrid.email.delivered | E3 | proven |
| The processed event of this message states it. The 202 response does not: it carries no identifier and no promise. | sendgrid.email.processed | E3 | proven |
| An outcome outside Twilio SendGrid Mail API, such as a bank credit or a person who read a message | not proven | no E5 channel | not proven |
| The agent report that the action worked | never counts | E0 | not proven |
Which completion levels does the Twilio SendGrid Mail API skill expose?
Each level is one promise with one contract. An agent picks the level that matches the promise it makes. It cannot upgrade a level. Read the completion level definition.
| Level | Contract | Promise | Evidence | Certification |
|---|---|---|---|---|
bounced | sendgrid.email.bounced v1.0.0 | A bounce event with the type bounce states it. A block states the type blocked, and a block never satisfies this level. | E3 | Provisional |
delivered | sendgrid.email.delivered v1.0.0 | The delivered event of this message states it. It is the first event that a system outside Twilio SendGrid decides. | E3 | Provisional |
processed | sendgrid.email.processed v1.0.0 | The processed event of this message states it. The 202 response does not: it carries no identifier and no promise. | E3 | Provisional |
Which ways can a Twilio SendGrid Mail API action look done and not be?
| Contract | Case | Verdict |
|---|---|---|
| sendgrid.email.bounced | duplicate side effect | CONTRADICTED |
| sendgrid.email.bounced | pre existing state | CONTRADICTED |
| sendgrid.email.bounced | wrong subject | CONTRADICTED |
| sendgrid.email.delivered | duplicate side effect | CONTRADICTED |
| sendgrid.email.delivered | pre existing state | CONTRADICTED |
| sendgrid.email.delivered | wrong subject | CONTRADICTED |
| sendgrid.email.processed | duplicate side effect | CONTRADICTED |
| sendgrid.email.processed | pre existing state | CONTRADICTED |
| sendgrid.email.processed | wrong subject | CONTRADICTED |
What did the last conformance run show?
The last conformance run on 2026-09-05T12:00:00Z passed 43 of 43 cases with 0 critical false VERIFIED. One critical false VERIFIED rejects a skill.
| Contract | Certification |
|---|---|
sendgrid.email.bounced | Provisional |
sendgrid.email.delivered | Provisional |
sendgrid.email.processed | Provisional |
The weakest contract is sendgrid.email.bounced. It reaches Provisional. The package level is Provisional, because a package level never rises above its weakest contract. Read the level of the contract you use.
| Case class | Passed | Total |
|---|---|---|
| duplicate side effect | 3 | 3 |
| error after execution | 3 | 3 |
| error before execution | 3 | 3 |
| evidence unavailable | 3 | 3 |
| pre existing state | 3 | 3 |
| stale readback | 3 | 3 |
| still transitional | 3 | 3 |
| terminal failure | 3 | 3 |
| terminal success | 3 | 3 |
| timeout after commit | 3 | 3 |
| version mismatch | 3 | 3 |
| webhook duplicate | 3 | 3 |
| webhook out of order | 3 | 3 |
| wrong subject | 3 | 3 |
| wrong terminal state | 1 | 1 |
The conformance artifact digest is c5e289cd43907f74. The harness signs the run, so a reader can check that these numbers come from that run.
What remains uncertain?
The level is Provisional because of it. Provely does not guess a rule that a source does not state.
Where do these facts come from?
Every claim above cites a source assertion in the skill provenance. The compiler records the source, its hash, and the retrieval date. A page never states a provider rule without one.
| Source | Kind | Retrieved | Excerpt |
|---|---|---|---|
| sendgrid.activity | openapi | 2026-09-08 | trimmed |
| sendgrid.docs.activity | docs | 2026-09-08 | authored |
| sendgrid.docs.events | docs | 2026-09-08 | authored |
| sendgrid.docs.mail | docs | 2026-09-08 | authored |
| sendgrid.docs.webhook | docs | 2026-09-08 | authored |
| sendgrid.events | event sample | 2026-09-08 | authored |
| sendgrid.openapi | openapi | 2026-09-08 | trimmed |
How do I verify a Twilio SendGrid Mail API action?
Verify a Twilio SendGrid Mail API action with Provely
- Begin the operation.Call
beginwith the contractsendgrid.email.bouncedand the input. Keep the operation id. - Make the Twilio SendGrid Mail API call you make today.Send the request with the correlation metadata that
beginreturned. - Submit the acknowledgement.Call
action_resultwith the Twilio SendGrid Mail API response. This is evidence level E1. It is not completion. - Verify.Call
verify. The runtime reads the evidence that the contract names, from Twilio SendGrid Mail API and not from the agent, and evaluates the contract. - Report the verdict exactly as returned.VERIFIED comes with a signed receipt. PENDING comes with the operation id. CONTRADICTED and UNVERIFIABLE are not success.
Questions developers ask
Does the bounced level prove the processed level?
No. A bounce event with the type bounce states it. A block states the type blocked, and a block never satisfies this level. The processed event of this message states it. The 202 response does not: it carries no identifier and no promise. Use sendgrid.email.processed to prove processed.
What does the agent say while the Twilio SendGrid Mail API action is still in progress?
It says: "The action is accepted but not yet verified. Operation: <id>." The verdict is PENDING. The runtime observes again on the contract timing policy.
Which Twilio SendGrid Mail API API versions does the skill support?
v3. An operation on another version returns UNVERIFIABLE with the reason version_unsupported. The runtime never guesses.
Does Provely need write access to Twilio SendGrid Mail API?
No. The agent keeps its write key. The verifier reads with a separate read-only credential where Twilio SendGrid Mail API permits it, and it never shares that credential with the agent.