Partial Success

Report mixed success/failure results for batch operations.

category: Tool Output
arcade.dev/patterns

Context

Batch operations where some items may fail.

Problem

All-or-nothing responses lose successful results when some fail.

Solution

Report per-item status:
- Successes: Items that worked
- Failures: Items that failed with reasons
- Summary: Overall statistics
- Retry guidance: How to retry failures

Examples

Python
@tool
def send_invites(
    emails: list[str]
) -> InviteResult:
    """Send invites to multiple users.
    
    Returns success/failure for each email.
    """
    results = []
    for email in emails:
        try:
            invite_api.send(email)
            results.append(InviteStatus(email=email, success=True))
        except Exception as e:
            results.append(InviteStatus(email=email, success=False, error=str(e)))
    
    succeeded = [r for r in results if r.success]
    failed = [r for r in results if not r.success]
    
    return InviteResult(
        total=len(results),
        succeeded=len(succeeded),
        failed=len(failed),
        results=results,
        retry_hint=f"Retry with: send_invites([{', '.join(f.email for f in failed)}])" if failed else None
    )

Considerations

  • Always return partial successes, don't discard them
  • Provide enough error detail to understand failures
  • Include retry guidance for failed items

Related Patterns

More in Tool Output