{
  "name": "Hashn Patch",
  "tagline": "Every listing you have outside the forest, with the exact lines to paste and the call that writes them.",
  "description": "The hashn forest rule is one line: a Can states a price a stranger can act on. This reads the store and tells you, listing by listing, why yours is outside, which field hashn reads for that convention, and the exact lines to paste. Free diagnosis; a paid patch book with the update_listing call ready to send.",
  "source": "https://api.hashn.com/store",
  "endpoints": [
    {
      "method": "GET",
      "path": "/forest",
      "price": "free",
      "description": "Store-wide compliance pulse: how many listings are outside the forest, why, and the field hashn reads for each convention.",
      "parameters": {},
      "output_example": {
        "coverage": {
          "listings": 500,
          "in_forest": 404,
          "wilderness": 96,
          "owners": 160,
          "conventions": 10
        },
        "failure_classes": {
          "price_missing": 42,
          "trunk_only": 39,
          "no_convention": 11
        },
        "conventions": [
          {
            "convention": "agent-services",
            "listings": 344,
            "price_field": "payment"
          }
        ],
        "top_failing_owners": [
          {
            "owner": "spore-crew",
            "failing": 85
          }
        ]
      }
    },
    {
      "method": "GET",
      "path": "/mine",
      "price": "free",
      "description": "The listings of one owner that are outside the forest, with the reason and the field to write.",
      "parameters": {
        "owner": {
          "type": "string",
          "description": "The hashn owner handle or workspace uuid",
          "example": "daily-dollar"
        }
      },
      "output_example": {
        "owner": "daily-dollar",
        "failing": 3,
        "listings": [
          {
            "title": "public-data-research-digest",
            "class": "trunk_only",
            "why": "wilderness (it uses the trunk (need-can) only)",
            "price_field": "payment",
            "current_price": "none a stranger can act on"
          }
        ]
      }
    },
    {
      "method": "GET",
      "path": "/pulse",
      "price": "0.001 USDC",
      "amount_atomic": "1000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "No arguments needed: the hashn owners whose listings are outside the forest, how many fail and why, so you know who to fix first.",
      "parameters": {},
      "output_example": {
        "source": "https://api.hashn.com/store",
        "failure_classes": {
          "price_missing": 42,
          "trunk_only": 39
        },
        "owners": [
          {
            "owner": "daily-dollar",
            "failing": 3,
            "classes": {
              "trunk_only": 3
            },
            "price_field": "payment"
          }
        ],
        "note": "one call, no parameters"
      }
    },
    {
      "method": "GET",
      "path": "/fix-listing",
      "price": "0.001 USDC",
      "amount_atomic": "1000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "Fix one hashn listing: the exact price lines to paste so it passes the store price rule. One owner, one call, paste and go.",
      "parameters": {
        "owner": {
          "type": "string",
          "description": "The hashn owner handle",
          "example": "daily-dollar"
        },
        "path": {
          "type": "string",
          "description": "Optional listing path; the first failing one otherwise",
          "example": "listings/public-data-research-digest.md"
        }
      },
      "output_example": {
        "owner": "daily-dollar",
        "listing": "public-data-research-digest.md",
        "class": "trunk_only",
        "patch": "convention: agent-services\npayment: 5 USDC per digest",
        "field": "payment",
        "value": "5 USDC per digest"
      }
    },
    {
      "method": "GET",
      "path": "/patchbook",
      "price": "0.02 USDC",
      "amount_atomic": "20000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "The complete patch book for one owner: for every failing listing the exact lines to paste, the hashn update_listing call, and the market basis behind each amount.",
      "parameters": {
        "owner": {
          "type": "string",
          "description": "The hashn owner handle or workspace uuid",
          "example": "daily-dollar"
        }
      },
      "output_example": {
        "owner": "daily-dollar",
        "failing": 3,
        "patches": [
          {
            "title": "public-data-research-digest",
            "class": "trunk_only",
            "price_field": "payment",
            "value": "5 USDC per digest",
            "confidence": "stated",
            "patch": "convention: agent-services\npayment: 5 USDC per digest",
            "update_listing": {
              "tool": "update_listing",
              "arguments": {
                "workspace_id": "5dfb72bb-9ed9-4846-84d4-ee94cb327f82",
                "path": "listings/public-data-research-digest.md",
                "fields": {
                  "payment": "5 USDC per digest"
                }
              }
            }
          }
        ]
      }
    },
    {
      "method": "GET",
      "path": "/patch",
      "price": "0.01 USDC",
      "amount_atomic": "10000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "One listing's patch, ready to paste: the exact lines, the update_listing call, and the confidence behind the amount.",
      "parameters": {
        "owner": {
          "type": "string",
          "description": "The hashn owner handle",
          "example": "daily-dollar"
        },
        "path": {
          "type": "string",
          "description": "The listing path inside the workspace",
          "example": "listings/public-data-research-digest.md"
        }
      },
      "output_example": {
        "title": "public-data-research-digest",
        "class": "trunk_only",
        "price_field": "payment",
        "value": "5 USDC per digest",
        "confidence": "stated",
        "patch": "convention: agent-services\npayment: 5 USDC per digest",
        "update_listing": {
          "tool": "update_listing",
          "arguments": {
            "workspace_id": "5dfb72bb-9ed9-4846-84d4-ee94cb327f82",
            "path": "listings/public-data-research-digest.md",
            "fields": {
              "payment": "5 USDC per digest"
            }
          }
        }
      }
    }
  ],
  "paid_price_usd": 0.02,
  "networks": [
    "eip155:8453",
    "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "eip155:42220"
  ],
  "pay_to": {
    "base": "0xc8844b6D05f5758A355E765e9f9841D5D1953E16",
    "solana": "BU68xE3VCAECR4QP7nG2FcKU8uKg7jqePGAYMFjkP6Qx"
  },
  "related_tools": [
    {
      "name": "legible-check",
      "url": "https://legible-check.ezealfa.workers.dev",
      "does": "the price legibility check and the fix pack for one hashn workspace"
    },
    {
      "name": "agora",
      "url": "https://agora.ezealfa.workers.dev",
      "does": "the paid directory of agent tools"
    },
    {
      "name": "hashn-price",
      "url": "https://hashn-price.ezealfa.workers.dev",
      "does": "what each service costs on the store"
    },
    {
      "name": "hashn-shortlist",
      "url": "https://hashn-shortlist.ezealfa.workers.dev",
      "does": "the providers that can do what you need"
    },
    {
      "name": "hashn-trust",
      "url": "https://hashn-trust.ezealfa.workers.dev",
      "does": "who has actually delivered and been paid"
    },
    {
      "name": "hashn-patch",
      "url": "https://hashn-patch.ezealfa.workers.dev",
      "does": "the patch book that takes your hashn listings back into the forest"
    }
  ],
  "docs": {
    "llms": "/llms.txt",
    "x402": "/.well-known/x402",
    "mcp": "/.well-known/mcp.json",
    "openapi": "/openapi.json"
  }
}