No. Resend returns a send response with an email id when it accepts the request. The email then holds one of 12 states. Provely proves accepted, bounced, delivered and sent as separate promises.

Skill facts from the signed manifest.
FactValue
Skill version0.1.0
CertificationCommunity (score 49 of 100)
Last conformance run2026-09-05T12:00:00Z: 58 of 60 cases passed, 0 critical false VERIFIED
Provider API versions1.5.1
Default provider API version1.5.1
Compiled2026-09-05T12:00:00Z by compiler 0.1.0
Manifest hashbb3243d9753c7608
Manifest hash checkthe document hashes to the value the manifest states
Signaturevalid, key provely-test-key-1, not in the trusted key map of this build

What does this page prove?

ClaimProven byEvidenceStatus
The accepted level proves that Resend holds an email record for the request. It does not prove that the message left the provider.resend.email.acceptedE2proven
The bounced level proves the bounced state on the email record and the email.bounced event. Use it when the intent is to confirm a rejection, for example before a suppression.resend.email.bouncedE2 + E3proven
The delivered level proves the delivered state on the email record and the email.delivered event. It does not prove that a person read the message. This level needs the email.delivered webhook.resend.email.deliveredE2 + E3proven
The sent level proves the email.sent event of this email. It does not prove that the recipient mail server accepted the message. This level needs the email.sent webhook.resend.email.sentE2 + E3proven
An outcome outside Resend, such as a bank credit or a person who read a messagenot provenno E5 channelnot proven
The agent report that the action workednever countsE0not proven

Which completion levels does the Resend 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.

LevelContractPromiseEvidenceCertification
acceptedresend.email.accepted v1.0.0The accepted level proves that Resend holds an email record for the request. It does not prove that the message left the provider.E2Community
bouncedresend.email.bounced v1.0.0The bounced level proves the bounced state on the email record and the email.bounced event. Use it when the intent is to confirm a rejection, for example before a suppression.E2 + E3Community
deliveredresend.email.delivered v1.0.0The delivered level proves the delivered state on the email record and the email.delivered event. It does not prove that a person read the message. This level needs the email.delivered webhook.E2 + E3Community
sentresend.email.sent v1.0.0The sent level proves the email.sent event of this email. It does not prove that the recipient mail server accepted the message. This level needs the email.sent webhook.E2 + E3Community

What is the Resend lifecycle?

Which states can a resend.email be in?

StateClassVerdictMeaningSource
queuedtransitionalPENDINGResend accepted the message and holds it in its queue.resend.openapi
scheduledtransitionalPENDINGThe message waits for its scheduled send time.resend.openapi
senttransitionalPENDINGResend handed the message to its sending infrastructure and attempts delivery.resend.openapi
delivery_delayedtransitionalPENDINGThe recipient mail server did not accept the message yet. Resend retries.resend.openapi
deliveredterminal successVERIFIEDThe recipient mail server accepted the message.resend.openapi
openedterminal successVERIFIEDThe recipient opened the message. Delivery happened before.resend.openapi
clickedterminal successVERIFIEDThe recipient clicked a link in the message. Delivery happened before.resend.openapi
complainedterminal neutralFAILEDThe message was delivered, and the recipient marked it as spam.resend.openapi
bouncedterminal failureFAILEDThe recipient mail server rejected the message.resend.openapi
failedterminal failureFAILEDResend could not send the message.resend.openapi
suppressedterminal failureFAILEDResend suppressed the message because the recipient address is on a suppression list.resend.openapi
canceledterminal neutralFAILEDThe schedule of the message was canceled before the send.resend.openapi

In resend.email under provider API version 1.5.1, delivered, opened and clicked are the only states that mean terminal success. Every other state gives PENDING, FAILED, or UNVERIFIABLE.

Source: resend.openapi · retrieved 2026-09-05

How does Provely tie the evidence to this exact operation?

A matching state that already existed must not verify. Every contract names the correlation keys that bind the evidence to the operation, and the idempotency key that stops a duplicate side effect.

StrategyAssuranceKeysRequiredWindow
resource_idstrongemail_id from $action.result.idyesnone
idempotency_keystrongidempotency_key from $operation.idnonone
fingerprintweakto from $input.to; subject from $input.subjectno600000 ms

Which evidence channels does the skill read?

The runtime prefers the channel that is more independent from the action path. Read the evidence level definition. An acknowledgement from Resend is E1 and never terminal success.

ChannelLevelIndependenceVerifierDeterministicTypical latency
email_action_responseE1same responseaction_resultyesnot stated
bounced_eventsE3provider eventwebhookno5000 ms
delivered_eventsE3provider eventwebhookno5000 ms
sent_eventsE3provider eventwebhookno5000 ms
sent_events_by_intentE3provider eventwebhookno5000 ms
email_readbackE2provider readbackhttpyes300 ms

Which ways can a Resend action look done and not be?

ContractCaseRuleVerdict
resend.email.acceptedwrong subjectThe message went to a different recipient.CONTRADICTED
resend.email.acceptedpre existing stateThe provider record is older than the operation. It proves nothing.CONTRADICTED
resend.email.acceptedpartial completionThe record lists more than one recipient. This contract proves the outcome for one recipient. Use one operation per recipient.CONTRADICTED
resend.email.acceptedduplicate side effectResend sent more than one email for this recipient and subject since the operation started. Do not retry.CONTRADICTED
resend.email.acceptedobserved stateThe provider reports that the message failed, bounced, or was suppressed.FAILED
resend.email.acceptedobserved stateThe schedule of the message was canceled. The provider will not send it.CONTRADICTED
resend.email.bouncedwrong subjectThe message went to a different recipient.CONTRADICTED
resend.email.bouncedpre existing stateThe provider record is older than the operation. It proves nothing.CONTRADICTED
resend.email.bouncedpartial completionThe record lists more than one recipient. This contract proves the outcome for one recipient. Use one operation per recipient.CONTRADICTED
resend.email.bouncedduplicate side effectResend sent more than one email for this recipient and subject since the operation started. Do not retry.CONTRADICTED
resend.email.bouncedobserved stateThe provider reports that the message failed, bounced, or was suppressed.FAILED
resend.email.bouncedobserved stateThe message is on the way. The runtime observes again later.PENDING
resend.email.bouncedobserved stateThe schedule of the message was canceled. The provider will not send it.CONTRADICTED
resend.email.bouncedobserved stateThe recipient mail server accepted the message. It did not bounce.CONTRADICTED
resend.email.deliveredwrong subjectThe message went to a different recipient.CONTRADICTED
resend.email.deliveredpre existing stateThe provider record is older than the operation. It proves nothing.CONTRADICTED
resend.email.deliveredpartial completionThe record lists more than one recipient. This contract proves the outcome for one recipient. Use one operation per recipient.CONTRADICTED
resend.email.deliveredduplicate side effectResend sent more than one email for this recipient and subject since the operation started. Do not retry.CONTRADICTED
resend.email.deliveredobserved stateThe provider reports that the message failed, bounced, or was suppressed.FAILED
resend.email.deliveredobserved stateThe message is on the way. The runtime observes again later.PENDING
resend.email.deliveredobserved stateThe schedule of the message was canceled. The provider will not send it.CONTRADICTED
resend.email.deliveredobserved stateThe recipient marked the message as spam. The record no longer states the delivery state.UNVERIFIABLE
resend.email.sentwrong subjectThe message went to a different recipient.CONTRADICTED
resend.email.sentpre existing stateThe provider record is older than the operation. It proves nothing.CONTRADICTED
resend.email.sentpartial completionThe record lists more than one recipient. This contract proves the outcome for one recipient. Use one operation per recipient.CONTRADICTED
resend.email.sentduplicate side effectResend sent more than one email for this recipient and subject since the operation started. Do not retry.CONTRADICTED
resend.email.sentobserved stateThe provider reports that the message failed, bounced, or was suppressed.FAILED
resend.email.sentobserved stateThe message is on the way. The runtime observes again later.PENDING
resend.email.sentobserved stateThe schedule of the message was canceled. The provider will not send it.CONTRADICTED

What did the last conformance run show?

The six confidence dimensions of the signed manifest.
DimensionScoreMaximum
Documentation1420
Schema alignment12.3115
Lifecycle certainty2020
Evidence strength1220
Causal correlation1515
Sandbox conformance9.6710
Raw score82.98100
Score after the caps49100

The raw score is 82.98. 2 hard caps apply, so the score is 49 and the level is Community.

The hard caps the compiler applied.
GateCapReason
uncertainty_caps492 uncertainty records are open. The lowest cap is 49.
conformance_threshold892 conformance cases failed.

The last conformance run on 2026-09-05T12:00:00Z passed 58 of 60 cases with 0 critical false VERIFIED. One critical false VERIFIED rejects a skill.

The conformance result by case class.
Case classPassedTotal
duplicate side effect44
error after execution44
error before execution44
evidence unavailable44
idempotent retry34
pre existing state44
stale readback44
still transitional44
terminal failure44
terminal success34
timeout after commit44
version mismatch44
webhook duplicate44
webhook out of order44
wrong subject44

The conformance artifact digest is 9e6ec913dfe29cd9. The harness signs the run, so a reader can check that these numbers come from that run.

What remains uncertain?

Open questions remain. 2 uncertainty records are open. The lowest cap is 49. The published manifest states the cap and its reason. The questions themselves stay in the compiler review bundle, which no customer receives.

This is why the level is Community and not higher. Unknown means unknown. The compiler does not infer an undocumented rule.

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.

SourceKindRetrievedExcerpt
resend.docs.idempotencydocs2026-09-05authored
resend.docs.webhooksdocs2026-09-05authored
resend.openapiopenapi2026-09-05trimmed

How do I verify a Resend action?

Verify a Resend action with Provely

  1. Begin the operation.Call begin with the contract resend.email.accepted and the input. Keep the operation id and the idempotency key.
  2. Make the Resend call you make today.Send the Idempotency-Key header with the key that begin returned. A retry then cannot create a second side effect.
  3. Submit the acknowledgement.Call action_result with the Resend response. This is evidence level E1. It is not completion.
  4. Verify.Call verify. The runtime reads email_action_response, bounced_events, delivered_events, sent_events, sent_events_by_intent and email_readback and evaluates the contract.
  5. 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 accepted level prove the sent level?

No. The accepted level proves that Resend holds an email record for the request. It does not prove that the message left the provider. The sent level proves the email.sent event of this email. It does not prove that the recipient mail server accepted the message. This level needs the email.sent webhook. Use resend.email.sent to prove sent.

What does the agent say while Resend reports queued, scheduled, sent and delivery_delayed?

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 Resend API versions does the skill support?

1.5.1. An operation on another version returns UNVERIFIABLE with the reason version_unsupported. The runtime never guesses.

Does Provely need write access to Resend?

No. The agent keeps its write key. The verifier reads with a separate read-only credential where Resend permits it, and it never shares that credential with the agent.