Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Query land ownership, leases, landlord info, and land payments. Write operations for payment management and lease renewals.
Query land ownership, leases, landlord info, and land payments. Write operations for payment management and lease renewals.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
Track owned and leased land, lease terms, landlord relationships, payments, and annual land costs.
NEVER use partial or truncated data. These rules are non-negotiable: NEVER use /api/integration/dashboard — it truncates results to 5 items. Partial payment data is worse than no data because it creates a false sense of completeness. ALWAYS use the /all endpoints listed below for complete data. If an endpoint returns an error or empty results, REPORT THE FAILURE to the user. Do not silently fall back to a different endpoint or present partial data. ALWAYS state the total count of records returned so the user knows the data is complete. Example: "Found 11 payments due in March totaling $175,058." If you cannot get complete data, say so explicitly. "I was unable to retrieve complete payment data" is infinitely better than showing 5 of 11 payments.
"When do our leases expire?" "What's the rent on the Smith ground?" "Total land costs this year?" "Show overdue payments" "Landlord contact info" "Cost per acre by parcel" "List all leased parcels" "What payments are due in March?" "Cash requirements for next month" "Mark payment [X] as paid" "Mark all March payments paid" "Renew the Smith lease" "Preview lease renewals"
Lease terms, rent amounts, and landlord info are sensitive business data. Restrict to admin or manager roles only. Role mapping: Check the sender's role in ~/.openclaw/farmos-users.json. If the user is not admin or manager, tell them they don't have access to land portfolio data.
http://100.102.77.110:8009
IMPORTANT: Use auth endpoints for WRITE operations (mark-paid, renewals). Use integration /all endpoints for READ operations (listing payments, leases, landlords).
GET /api/integration/payments/all Returns ALL payments with full details — parcel names, landlord names, overdue status Query parameters: status — pending, paid, overdue, scheduled payment_type — rent, mortgage, property_tax, insurance, improvement, other parcel_id — filter by specific parcel due_date_from — YYYY-MM-DD range start due_date_to — YYYY-MM-DD range end crop_year — filter by crop year Examples: All overdue: /api/integration/payments/all?status=overdue March 2026 payments: /api/integration/payments/all?due_date_from=2026-03-01&due_date_to=2026-03-31 All rent payments: /api/integration/payments/all?payment_type=rent
GET /api/integration/payments/upcoming?days=30 Returns ALL upcoming payments within N days (no truncation) Use days=60 or days=90 for longer lookahead
GET /api/integration/leases/all Returns ALL leases with landlord contact info, rent terms, expiration status Query parameters: status — active, expired landlord_id — filter by landlord
GET /api/integration/leases/expiring?days=90 Returns ALL leases expiring within N days
GET /api/integration/landlords/all Returns ALL landlords with contact info, active lease count, total acres, total rent
GET /api/integration/parcels Returns ALL parcels with ownership type, acres, county Query parameter: ownership_type — owned, leased
GET /api/integration/summary Total acres, owned/leased breakdown, parcel/lease/landlord counts, annual cost
GET /api/integration/finance/costs?year=2026 Monthly cost breakdown by category (rent, mortgage, tax, insurance) Entity breakdown Query parameters: year, entity_id
GET /api/integration/finance/cost-per-field?year=2026 Land costs allocated to production fields Query parameters: year, entity_id
GET /api/integration/tasks/overdue All overdue payments and reminders — high priority items
GET /api/integration/tasks/actionable?days_ahead=30 Upcoming payments, expiring leases, pending reminders
These require JWT auth. See Authentication section below.
This skill accesses protected FarmOS endpoints that require a JWT token. To get a token: Run the auth helper with the appropriate role: TOKEN=$(~/clawd/scripts/farmos-auth.sh admin) To use the token: Include it as a Bearer token: curl -H "Authorization: Bearer $TOKEN" http://100.102.77.110:8009/api/endpoint Token expiry: Tokens last 15 minutes. If you get a 401 response, request a new token.
POST /api/payments/{id}/mark-paid Authorization: Bearer {token} Content-Type: application/json Body: { "paid_date": "2026-02-15", "notes": "Check #1234" }
POST /api/payments/bulk/mark-paid Authorization: Bearer {token} Content-Type: application/json Body: { "payment_ids": [12, 34, 56], "paid_date": "2026-02-15", "notes": "Batch check run" }
POST /api/payments/bulk/mark-paid-by-date Authorization: Bearer {token} Content-Type: application/json Body: { "due_date_from": "2026-03-01", "due_date_to": "2026-03-31", "paid_date": "2026-02-15", "payment_type": "rent", "notes": "March rent payments" } Use this when the user says "mark all March payments as paid" or similar bulk date-based operations.
POST /api/leases/renewal-preview Authorization: Bearer {token} Content-Type: application/json Body: { "lease_ids": [5, 12], "new_start_date": "2027-03-01", "rent_increase_percent": 3.0 } Returns: Preview of what the renewed leases would look like, including new payment schedules. Use this BEFORE executing bulk renewals so the user can confirm.
POST /api/leases/bulk-renew Authorization: Bearer {token} Content-Type: application/json Body: { "lease_ids": [5, 12], "new_start_date": "2027-03-01", "new_end_date": "2028-02-28", "new_rent_amount": 52000.00, "rent_increase_percent": 3.0, "notes": "Annual renewal with 3% increase" } IMPORTANT: Always preview first, confirm with user, then execute.
POST /api/payments/year-end-rollover/preview Authorization: Bearer {token} Content-Type: application/json Body: { "from_year": 2026, "to_year": 2027 } Returns: Preview of payment schedules that would be created for the new crop year.
POST /api/payments/year-end-rollover/execute Authorization: Bearer {token} Content-Type: application/json Body: { "from_year": 2026, "to_year": 2027, "apply_rent_increase": true, "rent_increase_percent": 2.5 } IMPORTANT: This creates next year's payment schedules based on current year leases. Always preview first.
EndpointWhyGET /api/integration/dashboardTruncates to 5 items. NEVER use this.
Parcel: A land unit — either owned or leased. Lease types: Cash rent, crop share, flex rent. Lease expiration: Critical to track — approaching expirations need proactive attention. Land payments: Rent, mortgage, property tax, insurance — each with due dates.
Lease expiration tracking is the highest-value query — always flag leases expiring within 6 months. Payment status (due/overdue) is critical — flag overdue payments immediately. Cost per acre analysis helps compare owned vs leased economics. Landlord contact info is private — never share outside admin/manager channels. When asked about "cash requirements" or "what do we owe", always use /api/integration/payments/all with date filtering to get the COMPLETE picture. For financial planning questions, combine /api/integration/payments/all with /api/integration/finance/costs for the full view. Write operations: Always use authenticated endpoints for marking payments paid or renewing leases. Preview first when doing bulk operations. Bulk payment marking: When user says "mark all March payments paid", use the bulk-by-date endpoint rather than individual calls.
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.