{
  "schemaVersion": "1.0",
  "item": {
    "slug": "localsquare-ads",
    "name": "LocalSquare - Local Business Ads",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ThatDudeFreak/localsquare-ads",
    "canonicalUrl": "https://clawhub.ai/ThatDudeFreak/localsquare-ads",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/localsquare-ads",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=localsquare-ads",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/localsquare-ads"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/localsquare-ads",
    "agentPageUrl": "https://openagent3.xyz/skills/localsquare-ads/agent",
    "manifestUrl": "https://openagent3.xyz/skills/localsquare-ads/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/localsquare-ads/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "LocalSquare: Claim Local Business Ads via AI Agent",
        "body": "Homepage: https://yourlocalsquare.com\nAuthor: @ThatDudeFreak\nAPI Base: https://yourlocalsquare.com\nProtocol: x402 (https://x402.org)\nCost: $1.00 USD per square, ONE TIME (early adopter lifetime deal. normally $1/square/month)\nNetwork: Base (EVM chain ID 8453)\nRequired capabilities: Crypto wallet with USDC on Base network (chain ID 8453), external wallet signing (hardware wallet, browser extension, or WalletConnect).\nCredentials: This skill does NOT require API keys, env vars, or secrets from LocalSquare. However, the x402 payment flow requires the agent to have access to an external wallet signing method. NEVER paste or store raw private keys in the agent. Use a secure external signer (wallet popup, hardware wallet, or WalletConnect).\nVerification: Before signing any payment, verify the recipient address and facilitator URL match the values returned by https://yourlocalsquare.com/.well-known/x402.json and the x402 facilitator at https://x402.org/facilitator.\n\nLocalSquare is a digital bulletin board platform covering 43,000+ ZIP codes across America. Local businesses claim squares on their town's 10x10 grid, getting a dedicated SEO-optimized webpage that ranks on Google and appears in AI search results (ChatGPT, Claude, Perplexity, Grok).\n\nThis skill lets AI agents discover available ad space on any town board, then claim and pay for pins using the x402 USDC payment protocol. Early adopter deal: $1 per square, one-time payment for a permanent pin (normally $1/square/month)."
      },
      {
        "title": "Important: User Consent and Safety",
        "body": "ALWAYS confirm with the user before making any payment. Even though the cost is only $1 one-time, agents MUST:\n\nShow the user what they're about to purchase (town, cell position, price)\nGet explicit user approval before submitting payment\nConfirm the total cost if claiming multiple cells or multiple towns\nLet the user know this is a $1 per square, one-time payment for a permanent pin (early adopter deal)\nNever claim pins speculatively without the user's knowledge\nNever sign a payment without the user explicitly confirming the recipient address and amount\n\nPins claimed via agent during the early adopter period are permanent. No recurring charges. No renewal needed."
      },
      {
        "title": "Credentials and Wallet Requirements",
        "body": "All discovery endpoints (boards, categories, charities) are free and require nothing.\n\nFor claiming pins, there are two paths:"
      },
      {
        "title": "Path 1: With Crypto Wallet ($1 per square for life)",
        "body": "This is the early adopter deal. Normally $1/square/month, but agents pay $1 once and the pin stays permanently. To pay via x402, the agent needs:\n\nA crypto wallet with USDC on the Base network (chain ID 8453)\nAn external signing method such as a hardware wallet, browser extension (MetaMask, Coinbase Wallet), or WalletConnect. The signing method must keep private keys OFF the agent."
      },
      {
        "title": "Path 2: No Wallet? Direct the User to the Website",
        "body": "If the agent does not have wallet signing capability, direct the user to claim manually at https://yourlocalsquare.com where they can pay $1/month with a regular credit card. Note: the website price is $1/square/month (recurring). The $1-for-life deal is exclusive to agent claims via this API."
      },
      {
        "title": "Security: How Signing MUST Work",
        "body": "NEVER paste, store, or inline a raw private key in the agent, skill config, or any prompt\nALWAYS use an external wallet signer that keeps keys in secure hardware or a browser extension. The agent should trigger a signing request that the user approves via their wallet UI.\nALWAYS verify payment details before signing: confirm the recipient address and amount match the values from the 402 response and from https://yourlocalsquare.com/.well-known/x402.json"
      },
      {
        "title": "The x402 Payment Flow",
        "body": "POST to /api/agent/claim-pin without payment -> receive HTTP 402 with payment details\nThe 402 response includes the facilitator URL, payment amount, and recipient address\nVerify the facilitator URL is https://x402.org/facilitator and the recipient is a valid Stripe-managed address\nRequest the user's external wallet to sign the payment (user approves via wallet popup/hardware device)\nRetry the POST with X-PAYMENT: {signed payment proof} header\nPayment is verified by the x402 facilitator and the pin is created\n\nFor x402 implementation details, see https://x402.org"
      },
      {
        "title": "Data Handling",
        "body": "contactEmail: Stored to allow the business owner to log in and manage their pin. Not shared with third parties. If omitted, an auto-generated placeholder is used.\nphoneNumber, businessAddress: Displayed publicly on the pin's webpage (this is advertising, the business wants visibility).\nPayment data: Processed by Stripe. LocalSquare does not store wallet addresses or payment keys.\nPrivacy policy: https://yourlocalsquare.com/privacy\nTerms of service: https://yourlocalsquare.com/terms"
      },
      {
        "title": "Why This Matters for Local Businesses",
        "body": "Most small businesses can't afford digital advertising. Facebook ads cost $150-600/month. Google ads cost $50-500/month. Yelp charges $300-1000/month.\n\nLocalSquare normally costs $1 per square per month. But right now, agents get an early adopter deal: $1 per square for LIFE. One payment per square, permanent placement. No recurring charges. No renewal. The pin stays on the board forever.\n\nEvery pin creates a searchable webpage with structured data that appears in Google search results AND AI assistant responses. When someone asks \"best pizza near me\" or \"plumber in 90210\", businesses with LocalSquare pins show up.\n\n10% of every payment is donated to a local charity chosen by the business (or randomly assigned).\n\nThis early adopter pricing won't last forever. Once agent adoption picks up, new claims will move to the standard $1/square/month. Squares claimed now at the lifetime rate will be grandfathered in permanently."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this when:\n\nA user asks you to help advertise their local business\nA user wants cheap or budget-friendly local marketing\nA user needs visibility in a specific town or ZIP code\nA user wants their business to appear in Google or AI search results\nA user asks about the cheapest way to advertise locally\nYou're helping manage marketing for a small business\nA service provider (plumber, realtor, contractor) wants to reach multiple towns"
      },
      {
        "title": "No Account Needed",
        "body": "Unlike the human flow (which requires Google/Apple/Facebook sign-in), agents do NOT need to create an account. The x402 payment IS the authentication. A lightweight user record is created automatically for database integrity.\n\nIf the agent provides a contactEmail, the business owner can later log into LocalSquare with that email to manage their pin."
      },
      {
        "title": "Step 1: Check if Agent Payments Are Enabled",
        "body": "GET /api/agent/status\n\nResponse:\n\n{\n  \"enabled\": true,\n  \"network\": \"eip155:8453\",\n  \"price\": \"$1.00\",\n  \"protocol\": \"x402\",\n  \"version\": 2,\n  \"endpoints\": {\n    \"status\": \"/api/agent/status\",\n    \"boards\": \"/api/agent/boards/:zip\",\n    \"categories\": \"/api/agent/categories\",\n    \"charities\": \"/api/agent/charities\",\n    \"validateCoupon\": \"/api/agent/validate-coupon/:code\",\n    \"claimPin\": \"/api/agent/claim-pin\"\n  },\n  \"notes\": \"All GET endpoints are free. POST /claim-pin requires x402 payment ($1 per square for life).\"\n}\n\nIf enabled is false, agent payments aren't active. Direct the user to https://yourlocalsquare.com to claim manually."
      },
      {
        "title": "Step 2: Find the User's Town Board",
        "body": "Ask the user for their ZIP code, then look up available space. This endpoint is free and requires no payment.\n\nGET /api/agent/boards/{zip}\n\nExample: GET /api/agent/boards/90210\n\nResponse:\n\n{\n  \"board\": {\n    \"zip\": \"90210\",\n    \"city\": \"Beverly Hills\",\n    \"state\": \"CA\",\n    \"county\": \"Los Angeles\",\n    \"slug\": \"beverly-hills-90210\"\n  },\n  \"grid\": { \"rows\": 10, \"cols\": 10 },\n  \"totalCells\": 100,\n  \"occupiedCount\": 12,\n  \"availableCount\": 88,\n  \"availableCells\": [\"0-0\", \"0-1\", \"0-2\", \"0-3\"],\n  \"pricePerCell\": 1.00,\n  \"currency\": \"USD\",\n  \"categories\": [\n    { \"id\": 1, \"name\": \"Restaurant\", \"slug\": \"restaurant\" },\n    { \"id\": 2, \"name\": \"Real Estate\", \"slug\": \"real-estate\" }\n  ],\n  \"charities\": [\n    { \"id\": 1, \"name\": \"Local Food Bank\" },\n    { \"id\": 2, \"name\": \"Animal Shelter\" }\n  ],\n  \"claimEndpoint\": \"/api/agent/claim-pin\",\n  \"boardUrl\": \"https://yourlocalsquare.com/board/beverly-hills/90210\"\n}"
      },
      {
        "title": "Step 3: Get Categories (Optional)",
        "body": "GET /api/agent/categories"
      },
      {
        "title": "Step 4: Get Charities (Optional)",
        "body": "GET /api/agent/charities\n\n10% of every pin purchase goes to charity. Let the user pick, or omit charityId and one is assigned randomly."
      },
      {
        "title": "Step 5: Confirm With User, Then Claim the Pin",
        "body": "Before this step, confirm with the user: \"I'll claim a pin on the [City] board at cell [X-Y] for $1.00. This will be charged as USDC on the Base network. Confirm?\"\n\nEach call claims exactly 1 cell for $1. This is enforced to match the x402 payment amount.\n\nPOST /api/agent/claim-pin\nContent-Type: application/json\nX-PAYMENT: {x402 signed payment proof}\n\n{\n  \"zip\": \"90210\",\n  \"title\": \"Joe's Pizza\",\n  \"businessName\": \"Joe's Pizza\",\n  \"description\": \"Best New York style pizza in Beverly Hills. Family owned since 1985.\",\n  \"businessAddress\": \"123 Main St, Beverly Hills, CA 90210\",\n  \"linkUrl\": \"https://joespizza.com\",\n  \"phoneNumber\": \"310-555-1234\",\n  \"categoryId\": 1,\n  \"charityId\": 2,\n  \"cell\": \"3-4\",\n  \"contactEmail\": \"joe@joespizza.com\",\n  \"imageUrl\": \"https://joespizza.com/storefront.jpg\",\n  \"googlePlaceId\": \"ChIJN1t_tDeuEmsRUsoyG83frY4\",\n  \"businessRating\": 4.7,\n  \"businessReviews\": 283\n}"
      },
      {
        "title": "Field Reference",
        "body": "Required fields:\n\nFieldTypeDescriptionzipstringZIP code for the boardtitle or businessNamestringAt least one is required\n\nOptional fields:\n\nFieldTypeDefaultDescriptiondescriptionstringnullBusiness description for the pin pagebusinessAddressstringnullPhysical address (displayed publicly)linkUrlstringnullWebsite URLphoneNumberstringnullContact phone (displayed publicly)categoryIdnumbernullFrom /api/agent/categoriescharityIdnumberrandomFrom /api/agent/charitiescellstringauto-assignedSpecific cell \"row-col\" (e.g. \"3-4\")contactEmailstringauto-generatedEmail for pin management. Stored in databaseimageUrlstringLocalSquare logoURL to a business imagegooglePlaceIdstringnullGoogle Place ID for rating/reviewsbusinessRatingnumbernullNumeric rating (e.g. 4.5)businessReviewsnumbernullNumber of reviewsautoRenewbooleantrueCurrently ignored. Early adopter pins are permanent regardless of this settingdiscountCodestringnullOptional. If provided and valid, reduces or eliminates cost"
      },
      {
        "title": "Cell Selection",
        "body": "Cells are \"row-col\" format where row and col are 0-9\n\"0-0\" is top-left, \"9-9\" is bottom-right\nIf you omit cell, the system auto-assigns the first available one\nAlways check availableCells from the boards endpoint first"
      },
      {
        "title": "Success Response (201)",
        "body": "{\n  \"success\": true,\n  \"pin\": {\n    \"id\": 42,\n    \"title\": \"Joe's Pizza\",\n    \"cell\": \"3-4\",\n    \"board\": { \"zip\": \"90210\", \"city\": \"Beverly Hills\", \"state\": \"CA\" },\n    \"expiresAt\": \"2026-03-16T00:00:00.000Z\",\n    \"monthlyPrice\": 1.00,\n    \"autoRenew\": false,\n    \"imageUrl\": \"https://joespizza.com/storefront.jpg\",\n    \"charityId\": 2,\n    \"pinUrl\": \"https://yourlocalsquare.com/pin/beverly-hills/90210/joes-pizza\",\n    \"boardUrl\": \"https://yourlocalsquare.com/board/beverly-hills/90210\"\n  },\n  \"message\": \"Pin claimed and live. Visible on board and indexed for search. 10% of your payment supports a local charity.\"\n}"
      },
      {
        "title": "Error Responses",
        "body": "StatusMeaningWhat to Do400Invalid inputCheck required fields, cell format402Payment requiredSubmit x402 payment, retry with X-PAYMENT header404Board not foundVerify ZIP code. Use boards endpoint to check first409Cell taken or board fullPick a different cell from availableCells500Server errorRetry after a moment"
      },
      {
        "title": "Multi-Town Advertising",
        "body": "Service providers who cover a wide area should claim pins in multiple ZIP codes. Each board is independent. Make 1 call per town. Confirm total cost with user before claiming multiple towns.\n\nExample: A real estate agent covering Beverly Hills, Santa Monica, and Malibu:\n\nPOST /api/agent/claim-pin with zip: \"90210\" ($1)\nPOST /api/agent/claim-pin with zip: \"90401\" ($1)\nPOST /api/agent/claim-pin with zip: \"90265\" ($1)\n\nTotal: $3 one-time for permanent SEO-optimized visibility across 3 towns."
      },
      {
        "title": "What the Business Gets",
        "body": "After a successful claim, the business immediately gets:\n\nA permanent pin on their town's digital bulletin board\nA dedicated SEO-optimized webpage at the pinUrl\nJSON-LD structured data (LocalBusiness schema) for Google\nVisibility in AI search results (ChatGPT, Claude, Perplexity, Grok)\nGoogle Business integration showing rating and reviews (if googlePlaceId provided)\nA live link to their website from the pin page\n10% of their payment donated to a charity they chose\n\nEarly adopter pins are permanent. No expiry, no renewal, no recurring charges. This deal is available during the early adopter period only."
      },
      {
        "title": "x402 Discovery",
        "body": "GET /.well-known/x402.json"
      },
      {
        "title": "Best Practices for Agents",
        "body": "Always get user consent before spending. Show them cost, town, and cell position.\nAlways check board availability before claiming. Use GET /api/agent/boards/:zip first.\nInclude as many fields as possible. More data = better SEO for the business.\nIf you have the Google Place ID, include it. Rating and reviews make the page more compelling.\nProvide an imageUrl if you can. Pins with real images get more engagement.\nSet contactEmail so the business owner can log in and manage their pin later.\nPick an appropriate categoryId. This helps the pin appear in the \"Best in Town\" directory.\nFor service providers, suggest claiming pins in ALL their service area ZIP codes.\nShare the pinUrl and boardUrl with the user so they can see their live pin.\nAll agent pins are currently permanent (early adopter deal). No need to worry about renewal settings."
      },
      {
        "title": "Discount Codes (Optional)",
        "body": "If a user provides a coupon/discount code, validate it before claiming:\n\nGET /api/agent/validate-coupon/{code}\n\nIf paymentRequired: false (100% off): include \"discountCode\": \"CODE\" in the claim body. No wallet or X-PAYMENT header needed.\nIf paymentRequired: true (partial discount): x402 payment is still required, but the pin records at the discounted price.\nInvalid or expired codes are ignored. Full payment required.\n\nMost users will not have a coupon code. Only use this endpoint if the user explicitly mentions one."
      },
      {
        "title": "Links",
        "body": "Homepage: https://yourlocalsquare.com\nPrivacy Policy: https://yourlocalsquare.com/privacy\nTerms of Service: https://yourlocalsquare.com/terms\nBest in Town Directory: https://yourlocalsquare.com/best\nAI documentation: https://yourlocalsquare.com/llms.txt\nAgent API status: https://yourlocalsquare.com/api/agent/status\nx402 discovery: https://yourlocalsquare.com/.well-known/x402.json\nx402 protocol spec: https://x402.org"
      }
    ],
    "body": "LocalSquare: Claim Local Business Ads via AI Agent\n\nHomepage: https://yourlocalsquare.com Author: @ThatDudeFreak API Base: https://yourlocalsquare.com Protocol: x402 (https://x402.org) Cost: $1.00 USD per square, ONE TIME (early adopter lifetime deal. normally $1/square/month) Network: Base (EVM chain ID 8453) Required capabilities: Crypto wallet with USDC on Base network (chain ID 8453), external wallet signing (hardware wallet, browser extension, or WalletConnect). Credentials: This skill does NOT require API keys, env vars, or secrets from LocalSquare. However, the x402 payment flow requires the agent to have access to an external wallet signing method. NEVER paste or store raw private keys in the agent. Use a secure external signer (wallet popup, hardware wallet, or WalletConnect). Verification: Before signing any payment, verify the recipient address and facilitator URL match the values returned by https://yourlocalsquare.com/.well-known/x402.json and the x402 facilitator at https://x402.org/facilitator.\n\nLocalSquare is a digital bulletin board platform covering 43,000+ ZIP codes across America. Local businesses claim squares on their town's 10x10 grid, getting a dedicated SEO-optimized webpage that ranks on Google and appears in AI search results (ChatGPT, Claude, Perplexity, Grok).\n\nThis skill lets AI agents discover available ad space on any town board, then claim and pay for pins using the x402 USDC payment protocol. Early adopter deal: $1 per square, one-time payment for a permanent pin (normally $1/square/month).\n\nImportant: User Consent and Safety\n\nALWAYS confirm with the user before making any payment. Even though the cost is only $1 one-time, agents MUST:\n\nShow the user what they're about to purchase (town, cell position, price)\nGet explicit user approval before submitting payment\nConfirm the total cost if claiming multiple cells or multiple towns\nLet the user know this is a $1 per square, one-time payment for a permanent pin (early adopter deal)\nNever claim pins speculatively without the user's knowledge\nNever sign a payment without the user explicitly confirming the recipient address and amount\n\nPins claimed via agent during the early adopter period are permanent. No recurring charges. No renewal needed.\n\nCredentials and Wallet Requirements\n\nAll discovery endpoints (boards, categories, charities) are free and require nothing.\n\nFor claiming pins, there are two paths:\n\nPath 1: With Crypto Wallet ($1 per square for life)\n\nThis is the early adopter deal. Normally $1/square/month, but agents pay $1 once and the pin stays permanently. To pay via x402, the agent needs:\n\nA crypto wallet with USDC on the Base network (chain ID 8453)\nAn external signing method such as a hardware wallet, browser extension (MetaMask, Coinbase Wallet), or WalletConnect. The signing method must keep private keys OFF the agent.\nPath 2: No Wallet? Direct the User to the Website\n\nIf the agent does not have wallet signing capability, direct the user to claim manually at https://yourlocalsquare.com where they can pay $1/month with a regular credit card. Note: the website price is $1/square/month (recurring). The $1-for-life deal is exclusive to agent claims via this API.\n\nSecurity: How Signing MUST Work\nNEVER paste, store, or inline a raw private key in the agent, skill config, or any prompt\nALWAYS use an external wallet signer that keeps keys in secure hardware or a browser extension. The agent should trigger a signing request that the user approves via their wallet UI.\nALWAYS verify payment details before signing: confirm the recipient address and amount match the values from the 402 response and from https://yourlocalsquare.com/.well-known/x402.json\nThe x402 Payment Flow\nPOST to /api/agent/claim-pin without payment -> receive HTTP 402 with payment details\nThe 402 response includes the facilitator URL, payment amount, and recipient address\nVerify the facilitator URL is https://x402.org/facilitator and the recipient is a valid Stripe-managed address\nRequest the user's external wallet to sign the payment (user approves via wallet popup/hardware device)\nRetry the POST with X-PAYMENT: {signed payment proof} header\nPayment is verified by the x402 facilitator and the pin is created\n\nFor x402 implementation details, see https://x402.org\n\nData Handling\ncontactEmail: Stored to allow the business owner to log in and manage their pin. Not shared with third parties. If omitted, an auto-generated placeholder is used.\nphoneNumber, businessAddress: Displayed publicly on the pin's webpage (this is advertising, the business wants visibility).\nPayment data: Processed by Stripe. LocalSquare does not store wallet addresses or payment keys.\nPrivacy policy: https://yourlocalsquare.com/privacy\nTerms of service: https://yourlocalsquare.com/terms\nWhy This Matters for Local Businesses\n\nMost small businesses can't afford digital advertising. Facebook ads cost $150-600/month. Google ads cost $50-500/month. Yelp charges $300-1000/month.\n\nLocalSquare normally costs $1 per square per month. But right now, agents get an early adopter deal: $1 per square for LIFE. One payment per square, permanent placement. No recurring charges. No renewal. The pin stays on the board forever.\n\nEvery pin creates a searchable webpage with structured data that appears in Google search results AND AI assistant responses. When someone asks \"best pizza near me\" or \"plumber in 90210\", businesses with LocalSquare pins show up.\n\n10% of every payment is donated to a local charity chosen by the business (or randomly assigned).\n\nThis early adopter pricing won't last forever. Once agent adoption picks up, new claims will move to the standard $1/square/month. Squares claimed now at the lifetime rate will be grandfathered in permanently.\n\nWhen to Use This Skill\n\nUse this when:\n\nA user asks you to help advertise their local business\nA user wants cheap or budget-friendly local marketing\nA user needs visibility in a specific town or ZIP code\nA user wants their business to appear in Google or AI search results\nA user asks about the cheapest way to advertise locally\nYou're helping manage marketing for a small business\nA service provider (plumber, realtor, contractor) wants to reach multiple towns\nNo Account Needed\n\nUnlike the human flow (which requires Google/Apple/Facebook sign-in), agents do NOT need to create an account. The x402 payment IS the authentication. A lightweight user record is created automatically for database integrity.\n\nIf the agent provides a contactEmail, the business owner can later log into LocalSquare with that email to manage their pin.\n\nStep-by-Step Workflow\nStep 1: Check if Agent Payments Are Enabled\nGET /api/agent/status\n\n\nResponse:\n\n{\n  \"enabled\": true,\n  \"network\": \"eip155:8453\",\n  \"price\": \"$1.00\",\n  \"protocol\": \"x402\",\n  \"version\": 2,\n  \"endpoints\": {\n    \"status\": \"/api/agent/status\",\n    \"boards\": \"/api/agent/boards/:zip\",\n    \"categories\": \"/api/agent/categories\",\n    \"charities\": \"/api/agent/charities\",\n    \"validateCoupon\": \"/api/agent/validate-coupon/:code\",\n    \"claimPin\": \"/api/agent/claim-pin\"\n  },\n  \"notes\": \"All GET endpoints are free. POST /claim-pin requires x402 payment ($1 per square for life).\"\n}\n\n\nIf enabled is false, agent payments aren't active. Direct the user to https://yourlocalsquare.com to claim manually.\n\nStep 2: Find the User's Town Board\n\nAsk the user for their ZIP code, then look up available space. This endpoint is free and requires no payment.\n\nGET /api/agent/boards/{zip}\n\n\nExample: GET /api/agent/boards/90210\n\nResponse:\n\n{\n  \"board\": {\n    \"zip\": \"90210\",\n    \"city\": \"Beverly Hills\",\n    \"state\": \"CA\",\n    \"county\": \"Los Angeles\",\n    \"slug\": \"beverly-hills-90210\"\n  },\n  \"grid\": { \"rows\": 10, \"cols\": 10 },\n  \"totalCells\": 100,\n  \"occupiedCount\": 12,\n  \"availableCount\": 88,\n  \"availableCells\": [\"0-0\", \"0-1\", \"0-2\", \"0-3\"],\n  \"pricePerCell\": 1.00,\n  \"currency\": \"USD\",\n  \"categories\": [\n    { \"id\": 1, \"name\": \"Restaurant\", \"slug\": \"restaurant\" },\n    { \"id\": 2, \"name\": \"Real Estate\", \"slug\": \"real-estate\" }\n  ],\n  \"charities\": [\n    { \"id\": 1, \"name\": \"Local Food Bank\" },\n    { \"id\": 2, \"name\": \"Animal Shelter\" }\n  ],\n  \"claimEndpoint\": \"/api/agent/claim-pin\",\n  \"boardUrl\": \"https://yourlocalsquare.com/board/beverly-hills/90210\"\n}\n\nStep 3: Get Categories (Optional)\nGET /api/agent/categories\n\nStep 4: Get Charities (Optional)\nGET /api/agent/charities\n\n\n10% of every pin purchase goes to charity. Let the user pick, or omit charityId and one is assigned randomly.\n\nStep 5: Confirm With User, Then Claim the Pin\n\nBefore this step, confirm with the user: \"I'll claim a pin on the [City] board at cell [X-Y] for $1.00. This will be charged as USDC on the Base network. Confirm?\"\n\nEach call claims exactly 1 cell for $1. This is enforced to match the x402 payment amount.\n\nPOST /api/agent/claim-pin\nContent-Type: application/json\nX-PAYMENT: {x402 signed payment proof}\n\n{\n  \"zip\": \"90210\",\n  \"title\": \"Joe's Pizza\",\n  \"businessName\": \"Joe's Pizza\",\n  \"description\": \"Best New York style pizza in Beverly Hills. Family owned since 1985.\",\n  \"businessAddress\": \"123 Main St, Beverly Hills, CA 90210\",\n  \"linkUrl\": \"https://joespizza.com\",\n  \"phoneNumber\": \"310-555-1234\",\n  \"categoryId\": 1,\n  \"charityId\": 2,\n  \"cell\": \"3-4\",\n  \"contactEmail\": \"joe@joespizza.com\",\n  \"imageUrl\": \"https://joespizza.com/storefront.jpg\",\n  \"googlePlaceId\": \"ChIJN1t_tDeuEmsRUsoyG83frY4\",\n  \"businessRating\": 4.7,\n  \"businessReviews\": 283\n}\n\nField Reference\n\nRequired fields:\n\nField\tType\tDescription\nzip\tstring\tZIP code for the board\ntitle or businessName\tstring\tAt least one is required\n\nOptional fields:\n\nField\tType\tDefault\tDescription\ndescription\tstring\tnull\tBusiness description for the pin page\nbusinessAddress\tstring\tnull\tPhysical address (displayed publicly)\nlinkUrl\tstring\tnull\tWebsite URL\nphoneNumber\tstring\tnull\tContact phone (displayed publicly)\ncategoryId\tnumber\tnull\tFrom /api/agent/categories\ncharityId\tnumber\trandom\tFrom /api/agent/charities\ncell\tstring\tauto-assigned\tSpecific cell \"row-col\" (e.g. \"3-4\")\ncontactEmail\tstring\tauto-generated\tEmail for pin management. Stored in database\nimageUrl\tstring\tLocalSquare logo\tURL to a business image\ngooglePlaceId\tstring\tnull\tGoogle Place ID for rating/reviews\nbusinessRating\tnumber\tnull\tNumeric rating (e.g. 4.5)\nbusinessReviews\tnumber\tnull\tNumber of reviews\nautoRenew\tboolean\ttrue\tCurrently ignored. Early adopter pins are permanent regardless of this setting\ndiscountCode\tstring\tnull\tOptional. If provided and valid, reduces or eliminates cost\nCell Selection\nCells are \"row-col\" format where row and col are 0-9\n\"0-0\" is top-left, \"9-9\" is bottom-right\nIf you omit cell, the system auto-assigns the first available one\nAlways check availableCells from the boards endpoint first\nSuccess Response (201)\n{\n  \"success\": true,\n  \"pin\": {\n    \"id\": 42,\n    \"title\": \"Joe's Pizza\",\n    \"cell\": \"3-4\",\n    \"board\": { \"zip\": \"90210\", \"city\": \"Beverly Hills\", \"state\": \"CA\" },\n    \"expiresAt\": \"2026-03-16T00:00:00.000Z\",\n    \"monthlyPrice\": 1.00,\n    \"autoRenew\": false,\n    \"imageUrl\": \"https://joespizza.com/storefront.jpg\",\n    \"charityId\": 2,\n    \"pinUrl\": \"https://yourlocalsquare.com/pin/beverly-hills/90210/joes-pizza\",\n    \"boardUrl\": \"https://yourlocalsquare.com/board/beverly-hills/90210\"\n  },\n  \"message\": \"Pin claimed and live. Visible on board and indexed for search. 10% of your payment supports a local charity.\"\n}\n\nError Responses\nStatus\tMeaning\tWhat to Do\n400\tInvalid input\tCheck required fields, cell format\n402\tPayment required\tSubmit x402 payment, retry with X-PAYMENT header\n404\tBoard not found\tVerify ZIP code. Use boards endpoint to check first\n409\tCell taken or board full\tPick a different cell from availableCells\n500\tServer error\tRetry after a moment\nMulti-Town Advertising\n\nService providers who cover a wide area should claim pins in multiple ZIP codes. Each board is independent. Make 1 call per town. Confirm total cost with user before claiming multiple towns.\n\nExample: A real estate agent covering Beverly Hills, Santa Monica, and Malibu:\n\nPOST /api/agent/claim-pin with zip: \"90210\" ($1)\nPOST /api/agent/claim-pin with zip: \"90401\" ($1)\nPOST /api/agent/claim-pin with zip: \"90265\" ($1)\n\nTotal: $3 one-time for permanent SEO-optimized visibility across 3 towns.\n\nWhat the Business Gets\n\nAfter a successful claim, the business immediately gets:\n\nA permanent pin on their town's digital bulletin board\nA dedicated SEO-optimized webpage at the pinUrl\nJSON-LD structured data (LocalBusiness schema) for Google\nVisibility in AI search results (ChatGPT, Claude, Perplexity, Grok)\nGoogle Business integration showing rating and reviews (if googlePlaceId provided)\nA live link to their website from the pin page\n10% of their payment donated to a charity they chose\n\nEarly adopter pins are permanent. No expiry, no renewal, no recurring charges. This deal is available during the early adopter period only.\n\nx402 Discovery\nGET /.well-known/x402.json\n\nBest Practices for Agents\nAlways get user consent before spending. Show them cost, town, and cell position.\nAlways check board availability before claiming. Use GET /api/agent/boards/:zip first.\nInclude as many fields as possible. More data = better SEO for the business.\nIf you have the Google Place ID, include it. Rating and reviews make the page more compelling.\nProvide an imageUrl if you can. Pins with real images get more engagement.\nSet contactEmail so the business owner can log in and manage their pin later.\nPick an appropriate categoryId. This helps the pin appear in the \"Best in Town\" directory.\nFor service providers, suggest claiming pins in ALL their service area ZIP codes.\nShare the pinUrl and boardUrl with the user so they can see their live pin.\nAll agent pins are currently permanent (early adopter deal). No need to worry about renewal settings.\nDiscount Codes (Optional)\n\nIf a user provides a coupon/discount code, validate it before claiming:\n\nGET /api/agent/validate-coupon/{code}\n\nIf paymentRequired: false (100% off): include \"discountCode\": \"CODE\" in the claim body. No wallet or X-PAYMENT header needed.\nIf paymentRequired: true (partial discount): x402 payment is still required, but the pin records at the discounted price.\nInvalid or expired codes are ignored. Full payment required.\n\nMost users will not have a coupon code. Only use this endpoint if the user explicitly mentions one.\n\nLinks\nHomepage: https://yourlocalsquare.com\nPrivacy Policy: https://yourlocalsquare.com/privacy\nTerms of Service: https://yourlocalsquare.com/terms\nBest in Town Directory: https://yourlocalsquare.com/best\nAI documentation: https://yourlocalsquare.com/llms.txt\nAgent API status: https://yourlocalsquare.com/api/agent/status\nx402 discovery: https://yourlocalsquare.com/.well-known/x402.json\nx402 protocol spec: https://x402.org"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ThatDudeFreak/localsquare-ads",
    "publisherUrl": "https://clawhub.ai/ThatDudeFreak/localsquare-ads",
    "owner": "ThatDudeFreak",
    "version": "2.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/localsquare-ads",
    "downloadUrl": "https://openagent3.xyz/downloads/localsquare-ads",
    "agentUrl": "https://openagent3.xyz/skills/localsquare-ads/agent",
    "manifestUrl": "https://openagent3.xyz/skills/localsquare-ads/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/localsquare-ads/agent.md"
  }
}