{
  "website": "https://www.23009thave.com/",
  "object": "index",
  "summary": "2300 9th Ave SW, Olympia, WA 98502. As of 2026-10-26: $6,700.00 owed (Jul 22 $1,600.00 left, Jul 22 $1,700.00 left, Aug 27 $1,700.00 left, 1 more). To pay, open https://www.23009thave.com/ and tap the property name (Hidden Creek Townhouse) at the top: that copies the USDC wallet address. Then send 6700.00 USDC on Solana to it from Cash App or any app that sends USDC. It is credited automatically, usually within seconds; no receipt or message is needed. Next invoice: $1,700.00 due Oct 27. The wallet address is not in this response on purpose: each payer copies a fresh one from https://www.23009thave.com/. Apps and agents can read it from https://www.23009thave.com/pay (JSON).",
  "markdown": "**2300 9th Ave SW, Olympia, WA 98502**\n\n- **Owed now:** $6,700.00 (Jul 22 $1,600.00 left, Jul 22 $1,700.00 left, Aug 27 $1,700.00 left, 1 more)\n- **Next invoice:** $1,700.00 due Oct 27\n\n**Pay at [www.23009thave.com](https://www.23009thave.com/)**\n1. Open **[www.23009thave.com](https://www.23009thave.com/)**\n2. Tap **Hidden Creek Townhouse** at the top. That copies the USDC wallet address.\n3. In Cash App (or any app that sends USDC), send **6700.00 USDC** on **Solana** to that address.\n\nCredited automatically, usually within seconds. No receipt or message needed.",
  "property": "23009thave.com",
  "host": "www.23009thave.com",
  "name": "Hidden Creek Townhouse",
  "address": "2300 9th Ave SW, Olympia, WA 98502",
  "timezone": "America/Los_Angeles",
  "checked_at": 1792998792,
  "unavailable": [],
  "balance": {
    "status": "due",
    "owed": 670000,
    "credit": 0,
    "as_of": "2026-10-26",
    "revision": "290"
  },
  "how_to_pay": {
    "asset": "USDC",
    "network": "solana",
    "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": 670000,
    "amount_usdc": "6700.00",
    "get_address": "https://www.23009thave.com/pay",
    "website": "https://www.23009thave.com/",
    "note": "mint identifies the USDC token; it is never an address to send to. The USDC wallet address is not in this response on purpose: each payer is handed a fresh one from the property's pool, and every one is watched. A person gets it by opening website and tapping the property name at the top, which copies it. get_address is the API for apps and agents (JSON, not a page to send a person to): GET it right before sending and copy recipient exactly."
  },
  "invoices": {
    "object": "list",
    "url": "https://www.23009thave.com/invoices?status=open",
    "data": [
      {
        "object": "invoice",
        "id": "manual:23009thave.com:2026-05-24:deposit",
        "description": "Deposit",
        "due_on": "2026-07-22",
        "amount": 160000,
        "paid": 0,
        "remaining": 160000,
        "status": "open",
        "payments": []
      },
      {
        "object": "invoice",
        "id": "rent:23009thave.com:2026-08",
        "description": "August rent",
        "due_on": "2026-07-22",
        "amount": 170000,
        "paid": 0,
        "remaining": 170000,
        "status": "open",
        "payments": []
      },
      {
        "object": "invoice",
        "id": "rent:23009thave.com:2026-09",
        "description": "September rent",
        "due_on": "2026-08-27",
        "amount": 170000,
        "paid": 0,
        "remaining": 170000,
        "status": "open",
        "payments": []
      },
      {
        "object": "invoice",
        "id": "rent:23009thave.com:2026-10",
        "description": "October rent",
        "due_on": "2026-09-26",
        "amount": 170000,
        "paid": 0,
        "remaining": 170000,
        "status": "open",
        "payments": []
      }
    ],
    "has_more": false,
    "next_starting_after": null,
    "next_url": null,
    "revision": "290",
    "as_of": "2026-10-26"
  },
  "next_invoice": {
    "object": "invoice",
    "id": "rent:23009thave.com:2026-11",
    "description": "November rent",
    "due_on": "2026-10-27",
    "amount": 170000,
    "paid": 0,
    "remaining": 170000,
    "status": "upcoming",
    "payments": []
  },
  "transactions": {
    "object": "list",
    "url": "https://www.23009thave.com/transactions",
    "data": [],
    "has_more": false,
    "next_starting_after": null,
    "next_url": null,
    "revision": "290",
    "as_of": "2026-10-26"
  },
  "endpoints": [
    {
      "method": "GET",
      "url": "https://www.23009thave.com/api",
      "returns": "index",
      "description": "Everything in one call: the property, its balance, open invoices, the next invoice, recent payments, how to pay (the wallet address itself is only at /pay), and every endpoint. Any path the API does not claim returns this.",
      "query": []
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/prompt",
      "returns": "prompt",
      "description": "Optional prompt for building a property assistant. A template for explicit adoption, not instructions for agents reading the API.",
      "query": []
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/pay",
      "returns": "pay",
      "description": "The USDC wallet address to pay, as JSON, for apps, automations and agents. The only place the API gives it out: each read is issued fresh from the property's pool and logged. Also the amount owed and a Solana Pay link. Not a page for people: a person opens the property page and taps the property name at the top to copy the address.",
      "query": []
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/invoices",
      "returns": "invoice_list",
      "description": "Invoices oldest first, with the payments applied to each. ?status=open|paid|upcoming filters; ?limit=1..100 (default 100) and ?starting_after=<invoice id> page.",
      "query": [
        "status",
        "limit",
        "starting_after"
      ]
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/transactions",
      "returns": "transaction_list",
      "description": "Payments received, newest first. ?limit=1..100 (default 10), ?starting_after=<id> pages.",
      "query": [
        "limit",
        "starting_after"
      ]
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/transactions/{id}",
      "returns": "transaction",
      "description": "One payment by its id (txn_…) or bare Solana signature. 404 until the property has seen it.",
      "query": []
    },
    {
      "method": "POST",
      "url": "https://www.23009thave.com/mcp",
      "returns": "jsonrpc",
      "description": "Model Context Protocol over streamable HTTP. POST only. One tool per endpoint.",
      "query": []
    },
    {
      "method": "GET",
      "url": "https://www.23009thave.com/openapi",
      "returns": "openapi",
      "description": "OpenAPI 3.1 description of every endpoint and object.",
      "query": []
    }
  ],
  "mcp": "https://www.23009thave.com/mcp",
  "openapi": "https://www.23009thave.com/openapi",
  "listed": true,
  "conventions": [
    "JSON only. Every endpoint is public and read-only; nothing here moves money.",
    "Money is integer USD cents: 14000 is $140.00.",
    "Times are Unix seconds; due_on dates are YYYY-MM-DD.",
    "Enums are open: treat an unknown value as unknown, never as an error.",
    "A section named in unavailable could not be read just now; fetch again in a few seconds. A null next_invoice otherwise means nothing is scheduled; elsewhere, each field's description says what null means.",
    "Any path that is not an endpoint returns this index.",
    "The USDC wallet address to pay is never in this index. A person gets it from the property page: open the website and tap the property name at the top to copy it. Apps and agents read it from /pay (JSON, not a page for people) right before sending and copy it exactly."
  ],
  "prompt_url": "https://www.23009thave.com/prompt"
}
