{
  "tool": {
    "slug": "csv-phone-clean",
    "title": "CSV Phone Clean",
    "category": "Data Cleaning",
    "description": "Extract and normalize phone numbers from CSV text into E.164-like strings with validation flags.",
    "buyerIntent": "Use when an agent has scraped or imported contact CSV rows and needs a structured cleanup pass.",
    "tokenValue": "Avoids spending model tokens on repetitive phone-number normalization.",
    "method": "POST",
    "rawBlueprintSlug": "secure-csv-phone-sanitizer",
    "priceUSDC": 0.008,
    "latencyTargetMs": 220,
    "status": "live-preview",
    "tags": [
      "csv",
      "phone",
      "data-cleaning",
      "validation"
    ],
    "requestSchema": {
      "oneOf": [
        {
          "type": "string",
          "format": "csv"
        },
        {
          "type": "object",
          "required": [
            "csvText"
          ],
          "properties": {
            "csvText": {
              "type": "string",
              "format": "csv"
            }
          }
        }
      ]
    },
    "responseSchema": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "raw": {
                "type": "string"
              },
              "clean": {
                "type": "string"
              },
              "isValid": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "sampleRequest": {
      "csvText": "name,phone\nAlice,+1 (555) 019-2834\nBob,123-456"
    },
    "sampleResponse": {
      "results": [
        {
          "raw": "+1 (555) 019-2834",
          "clean": "+15550192834",
          "isValid": true
        },
        {
          "raw": "123-456",
          "clean": "+123456",
          "isValid": false
        }
      ]
    },
    "endpoint": "/api/v1/agent-tools/csv-phone-clean/",
    "absoluteEndpoint": "https://elpa.space/api/v1/agent-tools/csv-phone-clean/",
    "pageUrl": "https://elpa.space/agent-tools/#csv-phone-clean",
    "rawBlueprintUrl": "https://elpa.space/raw/secure-csv-phone-sanitizer",
    "priceLabel": "0.008 USDC"
  },
  "payment": {
    "protocol": "x402",
    "implementation": "x402 v2 exact EVM facilitator with legacy Base USDC transaction-hash fallback",
    "network": "Base",
    "networkCaip2": "eip155:8453",
    "currency": "USDC",
    "tokenContract": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
    "recipientAddress": "0xd9d6ae1d5a2128fea511460fac8e4dea58baf153",
    "paymentHeaders": [
      "PAYMENT-SIGNATURE",
      "X-PAYMENT",
      "x402-tx-hash (legacy)"
    ],
    "challengeHeader": "PAYMENT-REQUIRED",
    "responseHeader": "PAYMENT-RESPONSE",
    "facilitatorEnv": [
      "X402_FACILITATOR_URL",
      "X402_FACILITATOR_AUTHORIZATION"
    ],
    "maxTimeoutSeconds": 120,
    "priceUSDC": 0.008,
    "x402": {
      "x402Version": 2,
      "resource": {
        "url": "https://elpa.space/api/v1/agent-tools/csv-phone-clean/",
        "description": "Extract and normalize phone numbers from CSV text into E.164-like strings with validation flags.",
        "mimeType": "application/json",
        "serviceName": "ELPA Agent Tools",
        "tags": [
          "csv",
          "phone",
          "data-cleaning",
          "validation"
        ],
        "iconUrl": "https://elpa.space/logo.svg"
      },
      "accepts": [
        {
          "scheme": "exact",
          "network": "eip155:8453",
          "amount": "8000",
          "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
          "payTo": "0xd9d6ae1d5a2128fea511460fac8e4dea58baf153",
          "maxTimeoutSeconds": 120,
          "extra": {
            "name": "USDC",
            "version": "2",
            "decimals": 6
          }
        }
      ],
      "paymentRequired": {
        "x402Version": 2,
        "error": "PAYMENT-SIGNATURE header is required",
        "resource": {
          "url": "https://elpa.space/api/v1/agent-tools/csv-phone-clean/",
          "description": "Extract and normalize phone numbers from CSV text into E.164-like strings with validation flags.",
          "mimeType": "application/json",
          "serviceName": "ELPA Agent Tools",
          "tags": [
            "csv",
            "phone",
            "data-cleaning",
            "validation"
          ],
          "iconUrl": "https://elpa.space/logo.svg"
        },
        "accepts": [
          {
            "scheme": "exact",
            "network": "eip155:8453",
            "amount": "8000",
            "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
            "payTo": "0xd9d6ae1d5a2128fea511460fac8e4dea58baf153",
            "maxTimeoutSeconds": 120,
            "extra": {
              "name": "USDC",
              "version": "2",
              "decimals": 6
            }
          }
        ],
        "extensions": {
          "bazaar": {
            "info": {
              "discoverable": true,
              "category": "Data Cleaning",
              "tags": [
                "csv",
                "phone",
                "data-cleaning",
                "validation"
              ],
              "input": {
                "csvText": "name,phone\nAlice,+1 (555) 019-2834\nBob,123-456"
              },
              "output": {
                "results": [
                  {
                    "raw": "+1 (555) 019-2834",
                    "clean": "+15550192834",
                    "isValid": true
                  },
                  {
                    "raw": "123-456",
                    "clean": "+123456",
                    "isValid": false
                  }
                ]
              }
            },
            "schema": {
              "type": "object",
              "properties": {
                "discoverable": {
                  "type": "boolean"
                },
                "category": {
                  "type": "string"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "input": {
                  "oneOf": [
                    {
                      "type": "string",
                      "format": "csv"
                    },
                    {
                      "type": "object",
                      "required": [
                        "csvText"
                      ],
                      "properties": {
                        "csvText": {
                          "type": "string",
                          "format": "csv"
                        }
                      }
                    }
                  ]
                },
                "output": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "raw": {
                            "type": "string"
                          },
                          "clean": {
                            "type": "string"
                          },
                          "isValid": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "paymentRequiredBase64": "eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQQVlNRU5ULVNJR05BVFVSRSBoZWFkZXIgaXMgcmVxdWlyZWQiLCJyZXNvdXJjZSI6eyJ1cmwiOiJodHRwczovL2VscGEuc3BhY2UvYXBpL3YxL2FnZW50LXRvb2xzL2Nzdi1waG9uZS1jbGVhbi8iLCJkZXNjcmlwdGlvbiI6IkV4dHJhY3QgYW5kIG5vcm1hbGl6ZSBwaG9uZSBudW1iZXJzIGZyb20gQ1NWIHRleHQgaW50byBFLjE2NC1saWtlIHN0cmluZ3Mgd2l0aCB2YWxpZGF0aW9uIGZsYWdzLiIsIm1pbWVUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInNlcnZpY2VOYW1lIjoiRUxQQSBBZ2VudCBUb29scyIsInRhZ3MiOlsiY3N2IiwicGhvbmUiLCJkYXRhLWNsZWFuaW5nIiwidmFsaWRhdGlvbiJdLCJpY29uVXJsIjoiaHR0cHM6Ly9lbHBhLnNwYWNlL2xvZ28uc3ZnIn0sImFjY2VwdHMiOlt7InNjaGVtZSI6ImV4YWN0IiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwiYW1vdW50IjoiODAwMCIsImFzc2V0IjoiMHg4MzM1ODlmY2Q2ZWRiNmUwOGY0YzdjMzJkNGY3MWI1NGJkYTAyOTEzIiwicGF5VG8iOiIweGQ5ZDZhZTFkNWEyMTI4ZmVhNTExNDYwZmFjOGU0ZGVhNThiYWYxNTMiLCJtYXhUaW1lb3V0U2Vjb25kcyI6MTIwLCJleHRyYSI6eyJuYW1lIjoiVVNEQyIsInZlcnNpb24iOiIyIiwiZGVjaW1hbHMiOjZ9fV0sImV4dGVuc2lvbnMiOnsiYmF6YWFyIjp7ImluZm8iOnsiZGlzY292ZXJhYmxlIjp0cnVlLCJjYXRlZ29yeSI6IkRhdGEgQ2xlYW5pbmciLCJ0YWdzIjpbImNzdiIsInBob25lIiwiZGF0YS1jbGVhbmluZyIsInZhbGlkYXRpb24iXSwiaW5wdXQiOnsiY3N2VGV4dCI6Im5hbWUscGhvbmVcbkFsaWNlLCsxICg1NTUpIDAxOS0yODM0XG5Cb2IsMTIzLTQ1NiJ9LCJvdXRwdXQiOnsicmVzdWx0cyI6W3sicmF3IjoiKzEgKDU1NSkgMDE5LTI4MzQiLCJjbGVhbiI6IisxNTU1MDE5MjgzNCIsImlzVmFsaWQiOnRydWV9LHsicmF3IjoiMTIzLTQ1NiIsImNsZWFuIjoiKzEyMzQ1NiIsImlzVmFsaWQiOmZhbHNlfV19fSwic2NoZW1hIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImRpc2NvdmVyYWJsZSI6eyJ0eXBlIjoiYm9vbGVhbiJ9LCJjYXRlZ29yeSI6eyJ0eXBlIjoic3RyaW5nIn0sInRhZ3MiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwiaW5wdXQiOnsib25lT2YiOlt7InR5cGUiOiJzdHJpbmciLCJmb3JtYXQiOiJjc3YifSx7InR5cGUiOiJvYmplY3QiLCJyZXF1aXJlZCI6WyJjc3ZUZXh0Il0sInByb3BlcnRpZXMiOnsiY3N2VGV4dCI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoiY3N2In19fV19LCJvdXRwdXQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicmVzdWx0cyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJyYXciOnsidHlwZSI6InN0cmluZyJ9LCJjbGVhbiI6eyJ0eXBlIjoic3RyaW5nIn0sImlzVmFsaWQiOnsidHlwZSI6ImJvb2xlYW4ifX19fX19fX19fX0=",
      "facilitator": {
        "url": "https://api.cdp.coinbase.com/platform/v2/x402",
        "verify": "/verify",
        "settle": "/settle"
      },
      "legacy": {
        "enabled": true,
        "header": "x402-tx-hash",
        "note": "Legacy Base USDC transaction-hash receipts remain accepted for manual testing, but PAYMENT-SIGNATURE is the primary x402 path."
      }
    }
  }
}