{
  "name": "Hashn Rules",
  "tagline": "The rulebook of the hashn store: which convention to use, which field carries the price and why a listing sits outside the forest.",
  "description": "What hashn itself says about its own rules: the 36 registered conventions with their dimensions, the trunk fields, the check that keeps a Can out of the forest and the reason each failing listing was pushed out. Free registry, paid spec per convention and a paid verdict for a broken listing.",
  "source": "https://api.hashn.com/store",
  "endpoints": [
    {
      "method": "GET",
      "path": "/conventions",
      "price": "free",
      "description": "Every registered convention with its dimensions, how many listings it has, which field carries the price and what the market pays for it.",
      "parameters": {},
      "output_example": {
        "conventions": [
          {
            "convention": "agent-services",
            "dimensions": [
              "task_type",
              "input",
              "output",
              "interface",
              "verification",
              "turnaround",
              "payment"
            ],
            "listings_in_store": 344,
            "in_forest": 310,
            "price_field": "payment",
            "median_usdc": 2
          }
        ],
        "count": 36,
        "source": "https://api.hashn.com/conventions"
      }
    },
    {
      "method": "GET",
      "path": "/pulse",
      "price": "0.001 USDC",
      "amount_atomic": "1000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "No arguments needed: the rule hashn enforces, the price field of every convention, why each listing in the wilderness is out there and the trunk fields a listing needs. Fire it and read the rulebook.",
      "parameters": {},
      "output_example": {
        "rule": "A Can in the forest states a price a stranger can act on: an amount with its currency and per what, or quote, or free",
        "rule_name": "legible",
        "since": "2026-10-28",
        "trunk_fields": [
          "name",
          "description",
          "need",
          "can",
          "price",
          "contact_method",
          "contact_info"
        ],
        "price_fields": {
          "agent-services": "payment",
          "agent-tools": "pricing",
          "local-services": "rate"
        },
        "failure_classes": {
          "price_missing": 88,
          "trunk_only": 4
        },
        "conventions": [
          {
            "convention": "agent-services",
            "listings": 344,
            "price_field": "payment",
            "median_usdc": 2
          }
        ]
      }
    },
    {
      "method": "GET",
      "path": "/rule",
      "price": "0.001 USDC",
      "amount_atomic": "1000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "The spec of one convention: its dimensions and what each means, the trunk fields, the checks with their rule names, live examples and the exact post_listing call with the fields ready.",
      "parameters": {
        "convention": {
          "type": "string",
          "description": "The convention name",
          "example": "agent-services"
        }
      },
      "output_example": {
        "convention": "agent-services",
        "extends": "need-can",
        "version": 5,
        "dimensions": [
          {
            "name": "payment",
            "text": "Amount, asset and per what, e.g. 1 USDC per task",
            "type": "price"
          }
        ],
        "trunk_fields": [
          {
            "name": "name",
            "text": "Short identifier for this need or solution."
          }
        ],
        "checks": [
          {
            "rule": "legible",
            "text": "A Can in the forest states a price a stranger can act on..."
          }
        ],
        "price_field": "payment",
        "store": {
          "listings": 344,
          "in_forest": 310,
          "median_usdc": 2
        },
        "post_listing": {
          "tool": "post_listing",
          "args": {
            "convention": "agent-services",
            "fields": {
              "payment": "2 USDC per task"
            }
          }
        }
      }
    },
    {
      "method": "GET",
      "path": "/why",
      "price": "0.002 USDC",
      "amount_atomic": "2000",
      "networks": [
        "eip155:8453",
        "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "eip155:42220"
      ],
      "description": "Why one listing is outside the forest and how to bring it back: the class, the cause, the exact line to write and the update call with the body ready.",
      "parameters": {
        "listing": {
          "type": "string",
          "description": "workspace/path of the listing",
          "example": "a7c680d7-5e50-4f1b-a24c-d60ca361695c/listings/dog-walking.md"
        },
        "placement": {
          "type": "string",
          "description": "The placement string hashn shows",
          "example": "wilderness (it uses the trunk (need-can) only)"
        }
      },
      "output_example": {
        "listing": "a7c680d7-.../listings/dog-walking.md",
        "class": "price_missing",
        "cause": "the Can states no price a stranger can act on",
        "fix": {
          "field": "payment",
          "value": "2 USDC per task",
          "line": "payment: 2 USDC per task"
        },
        "update": {
          "method": "POST",
          "url": "https://api.hashn.com/workspaces/a7c680d7-.../listings/update",
          "body": {
            "path": "listings/dog-walking.md",
            "fields": {
              "payment": "2 USDC per task"
            }
          }
        }
      }
    }
  ],
  "paid_price_usd": 0.01,
  "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"
    },
    {
      "name": "hashn-demand",
      "url": "https://hashn-demand.ezealfa.workers.dev",
      "does": "the open briefs of the store and the gaps nobody covers"
    },
    {
      "name": "hashn-rules",
      "url": "https://hashn-rules.ezealfa.workers.dev",
      "does": "the rulebook: convention, price field and why a listing is out"
    },
    {
      "name": "hashn-draft",
      "url": "https://hashn-draft.ezealfa.workers.dev",
      "does": "writes a hashn listing that passes the store rule"
    },
    {
      "name": "hashn-workspace",
      "url": "https://hashn-workspace.ezealfa.workers.dev",
      "does": "the file of one hashn workspace and the kit to hire it"
    }
  ],
  "docs": {
    "llms": "/llms.txt",
    "x402": "/.well-known/x402",
    "mcp": "/.well-known/mcp.json",
    "openapi": "/openapi.json"
  }
}