Connect neighbors who have tools gathering dust with those who need them for a weekend project.
# Tool Lending Shelf: Borrow What You Need Nearby
## The Problem
Most households own tools they use once or twice a year—ladders, tile saws, pressure washers—while their neighbors drive to hardware stores to buy the exact same items for single weekend projects. This creates duplicated spending, wasted resources, and garages full of rarely-used equipment. Meanwhile, neighbors who could easily help each other never connect because there's no simple way to say "I have a thing you need."
## Who Uses It
**The Weekend Warrior**: Sarah needs a power washer to clean her deck before a graduation party. She'll use it once and doesn't want to spend $300 or deal with a rental company's hours and deposits.
**The Tool Collector**: Marcus has a garage full of specialty tools from past projects—a miter saw, an engine hoist, a carpet cleaner. They sit unused 360 days a year. He'd happily lend them to neighbors but has no way to broadcast availability.
**The New Homeowner**: Alex just bought their first house and faces a dozen fix-up projects. Buying every tool new would cost thousands. They need to know what's already available on their block.
**The Community Builder**: Rita doesn't need tools right now, but she loves the idea of neighbors knowing each other better. She lists her extension ladder and leaf blower because lending creates relationships.
## Core Features
1. **One-click tool listing**: Anyone can add a tool to the neighborhood shelf by snapping a photo, writing a one-line description, and specifying "porch pickup" or "text me first." No account required to browse; simple signup to list or borrow.
2. **Walking-distance matching**: Tools display with approximate distance ("3 blocks away," "same street"). The app prioritizes hyperlocal results—if someone on your block has a drill, you see that before someone across town.
3. **Borrow request flow**: Click "Request to Borrow," propose dates, add a note ("I'm fixing my fence gate—should have it back by Sunday evening"). The lender gets a notification and can approve, suggest different dates, or decline with one tap.
4. **Reputation through reciprocity**: Users build trust by lending and returning. No star ratings—just a simple count: "Lent 12 tools · Borrowed 4 · All returned." The community can see who contributes.
5. **Pickup coordination via existing channels**: When a borrow is approved, both parties get each other's preferred contact (phone/text). No in-app messaging to build—leverage what people already use. Integration with `reach_number` enables privacy-preserving contact.
6. **Neighborhood tool census**: A public "What's Available" page shows aggregate stats: "Your neighborhood has 3 ladders, 2 pressure washers, 7 drills, 1 chainsaw." Encourages listing and shows gaps.
7. **Cross-post from free boards**: Import "free to borrow" listings from WellSpr.ing's existing free items feed to bootstrap inventory. Lenders can claim and enhance these listings.
## WellSpr.ing Integration Points
### MCP Tools (POST to `https://wellspr.ing/mcp` via JSON-RPC 2.0)
| Tool | Use Case |
|------|----------|
| `get_free_items` | Bootstrap the shelf by pulling existing "free/borrow" listings from the community. Filter for tool-like keywords to seed initial inventory |
| `reach_number` | Generate privacy-preserving contact relay when a borrow is approved, so neither party exposes their real phone number |
| `get_adjacent_nodes` | Show which neighboring communities have active Tool Shelves—encourage federation ("12 more tools available in Riverside neighborhood") |
| `get_federation` | Understand the network topology for future expansion. Display "Part of the WellSpr.ing network" credibility |
| `ask_ody` | Power a "What tool do I need?" helper—users describe their project ("I want to hang shelves on a brick wall") and get tool suggestions they can then search for locally |
| `submit_business` | Allow hardware stores or tool libraries to list themselves as backup resources when no neighbor has the right tool |
| `get_businesses` | Show nearby hardware stores as fallback: "No circular saw nearby—rent one from Ace Hardware (0.8 mi)" |
### REST Endpoints
| Endpoint | Use Case |
|----------|----------|
| `GET /api/geo/portals?area_code=NNN` | Scope tool listings to geographic boundaries. Use portal definitions to create "neighborhood" containers |
### WCIB Endpoints
| Endpoint | Use Case |
|----------|----------|
| `POST /api/wcib/ody-ask` | Alternative path to Ody for project-to-tool recommendations |
| `GET /api/wcib/ideas` | Link to related civic tech projects; show "Other ways to help your neighborhood" |
### Roadmap: Not Yet Live
- **Covenant Commerce for deposits**: A future payment rail could enable optional security deposits for high-value tools (table saws, generators). Not available today—design the UX but implement as "coming soon."
- **Merchant tool rental API**: Future integration could let local rental shops list overflow inventory. Design the slot but don't build the integration.
## Data Model
```
┌─────────────────────────────────────────────────────────────┐
│ USERS │
├─────────────────────────────────────────────────────────────┤
│ id · email · display_name · neighborhood_code · joined_at │
│ contact_preference (phone|text|email) · contact_value │
│ tools_lent_count · tools_borrowed_count · all_returned (bool)│
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ TOOLS │
├─────────────────────────────────────────────────────────────┤
│ id · owner_id → USERS · name · description · photo_url │
│ category (power|hand|garden|ladder|specialty) │
│ pickup_type (porch|coordinate) · pickup_instructions │
│ lat · lng · neighborhood_code · status (available|borrowed) │
│ created_at · last_borrowed_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ BORROW_REQUESTS │
├─────────────────────────────────────────────────────────────┤
│ id · tool_id → TOOLS · borrower_id → USERS │
│ requested_dates · note · status (pending|approved|declined| │
│ active|returned|overdue) · relay_number (from reach_number)│
│ created_at · approved_at · returned_at │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ NEIGHBORHOODS │
├─────────────────────────────────────────────────────────────┤
│ code · name · center_lat · center_lng · radius_meters │
│ tool_count · active_user_count │
└─────────────────────────────────────────────────────────────┘
```
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent
◎
This is your project thread with Ody. Ask questions, share screenshots, talk through the build. Anyone with this link can join the conversation.
Paste screenshots or upload images/PDFs · Shift+Enter for new line