← ShippoCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Shippo
Snapshot Sep 30, 2026 · 22:48 UTC · version 2.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "address-validation",
"description": "Validate, parse, and standardize shipping addresses via the Shippo API",
"included_files": [],
"skill_md_contents": "---\nname: address-validation\ndescription: Validate, parse, and standardize shipping addresses via the Shippo API\nmetadata:\n version: \"1.5.2\"\n---\n\n# Address Validation\n\n## Address Field Format\n\nThe Shippo API uses **v1 field names** for address components in most endpoints (including `CreateShipment`). Always use:\n\n| Field | Description | Example |\n|---|---|---|\n| `name` | Full name | `Jane Smith` |\n| `street1` | Street address line 1 | `731 Market St` |\n| `street2` | Street address line 2 (optional) | `Suite 200` |\n| `city` | City | `San Francisco` |\n| `state` | State or province | `CA` |\n| `zip` | Postal code | `94103` |\n| `country` | ISO 3166-1 alpha-2 country code | `US` |\n| `email` | Email (required for international senders) | `jane@example.com` |\n| `phone` | Phone (required for international senders) | `+1-555-123-4567` |\n\nNote: `CreateAddress` and `ValidateAddress` take the v2 field names (`address_line_1`, `city_locality`, `state_province`, `postal_code`), but when passing addresses inline to `CreateShipment`, you must use the v1 names above.\n\n---\n\n## Validate a Structured Address\n\n1. Collect at minimum: `street1`, `city`, `state`, `zip`, `country` (ISO 3166-1 alpha-2).\n2. Call `CreateAddress` with the address fields. This creates the address and returns an object ID.\n3. Call `ValidateAddress` with the address fields to get validation results. Note: this endpoint takes address fields as query parameters, not an object ID.\n4. Check `analysis.validation_result.value` in the response. Values: `\"valid\"`, `\"invalid\"`, or `\"partially_valid\"` (address found with corrections applied). Check `analysis.validation_result.reasons` for details.\n5. Report the standardized address back. Highlight any corrected fields (listed in `changed_attributes`). Note `analysis.address_type` (`\"residential\"`, `\"commercial\"`, or `\"unknown\"`) -- residential classification affects carrier surcharges.\n6. If invalid: relay the reason descriptions. If the API returns a `recommended_address`, present it to the user.\n7. If `partially_valid`: show what was corrected and ask the user to confirm the corrections are acceptable.\n\n---\n\n## Parse a Freeform Address\n\n1. Call `ParseAddress` with the raw string (e.g., \"123 Main St, Springfield IL 62704\").\n2. Review the structured output for completeness. The parse response uses v2 field names: `address_line_1`, `city_locality`, `state_province`, `postal_code`.\n3. Note: the parse response does not include `country`. You must ask the user for the country or infer it, then add it before proceeding.\n4. Validate the parsed result by passing the fields to `CreateAddress` then `ValidateAddress` (follow the structured address workflow above from step 2).\n\n---\n\n## International Addresses\n\n- Always require the `country` field. Do not guess.\n- Pass non-Latin characters as-is; the API handles encoding.\n- Validation depth varies by country. US, CA, GB, AU, and major EU countries have deep validation. Others may only confirm structural completeness. Inform the user of this limitation.\n\n---\n\n## Bulk Address Validation\n\nThere is no batch validation endpoint. Call `CreateAddress` per address. Track results (row number, valid/invalid, corrections, errors, residential classification) and report a summary when done. For 50+ addresses, set expectations about processing time and provide progress updates.\n\n---\n\n## Re-validate an Existing Address\n\nCall `ValidateAddress` with the address fields. This endpoint validates by address fields, not by object ID.\n\n---\n\n## Duplicate Addresses\n\nIf `CreateAddress` returns a \"Duplicate address\" error, the address already exists in the account. Retrieve it via `ListAddresses` or proceed directly to validation.\n\n---\n\n## Quick Reference\n\n**Validate an address:**\n`CreateAddress` (saves address) + `ValidateAddress` (validates with same fields)\n\n**Parse then validate:**\n`ParseAddress` -> add country -> `CreateAddress` + `ValidateAddress`\n"
}SHA-256: 6bc95f183513d6c81db60b5700baf31b69f14f256de2782f619c115f7ab9c8f3