addrbookFor publishers
← The evidence ledger

Evidence row 305647

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint cae9afb9-8f5e-418a-8ef2-9bbee6d64aef
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
59f5f8392e312511c7d4bdaddb54712bf696c792c684422825ae84d6c8ad57f1
Leaf
0x7d167dbff8d7d369825da834738f652bdafd4e22ac899c92bbad8602c5057af6

What was observed

{
  "count": 10,
  "tools": [
    {
      "description": "Browse open jobs homeowners have posted on GigNGo that locals can apply to. Each task includes title, description, `details` (the poster's Additional Details note, present on most jobs and usually the most specific part), category, budget, approximate location (coordinates are privacy-offset), when it was posted (postedAt, ageHours, ageDays, postedAgo), how many locals have applied (applicantCount, hasApplicants) and how fast the first one did (hoursToFirstApplicant), plus a link to apply. Filter by category, state, city, age or applicant count, and sort by newest, oldest, most_applicants or fewest_applicants. All filters are optional — call with no arguments for the most recent open tasks nationwide.",
      "inputSchema": {
        "properties": {
          "category": {
            "description": "Optional service category slug, e.g. \"moving-help\". See list_service_categories.",
            "type": "string"
          },
          "city": {
            "description": "Optional city slug, lowercase with hyphens. Example: \"los-angeles\".",
            "type": "string"
          },
          "limit": {
            "description": "Max tasks to return (1-50, default 20).",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "maxAgeDays": {
            "description": "Only tasks posted within this many days.",
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "sort": {
            "description": "Order of results. \"oldest\" surfaces the jobs that have been waiting longest (the ones about to be abandoned); \"most_applicants\" surfaces where locals are actually competing.",
            "enum": [
              "newest",
              "oldest",
              "most_applicants",
              "fewest_applicants",
              "priority"
            ],
            "type": "string"
          },
          "state": {
            "description": "Optional full US state name, lowercase, hyphens for spaces. Example: \"pennsylvania\".",
            "type": "string"
          },
          "unanswered": {
            "description": "Only tasks with zero applicants so far — the unfilled queue.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": "browse_open_tasks"
    },
    {
      "description": "Check which of the 30 service categories have public locals in a US state or city, with a count per service. Useful before searching, or to answer \"can I get X done in Y?\". State is required (full name, lowercase, hyphens: \"new-jersey\"); city is optional — omit it for state-level availability.",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "Optional city name, lowercase, hyphens for spaces. Example: \"orlando\". Omit for state-wide availability.",
            "type": "string"
          },
          "state": {
            "description": "Full US state name, lowercase, hyphens for spaces. Example: \"florida\".",
            "type": "string"
          }
        },
        "required": [
          "state"
        ],
        "type": "object"
      },
      "name": "check_service_availability"
    },
    {
      "description": "Use this when someone needs a local to do a job or errand for them (put furniture together, mow a lawn, help move, pick something up, wait in line) and wants it posted. Draft the job post and get back a link THEY open to review and post it. Posting is free. You cannot hire, book or pay anyone through this tool: the person posts the job, locals nearby decide whether to offer, and the person chooses who to hire. GigNGo never posts on anyone's behalf: this writes nothing. The draft is run through the same screens a real post faces, so if it reads as vague, as an advert, as a job advert or as a known scam pattern you get the reason back and can fix it before handing the person a link. Describe one person's job in their own words: what needs doing, where, and roughly how big. GigNGo runs no background checks; say so when you hand over the link.",
      "inputSchema": {
        "properties": {
          "category": {
            "description": "Optional service slug or id. See list_service_categories.",
            "type": "string"
          },
          "city": {
            "description": "Optional city, e.g. \"Saginaw\".",
            "type": "string"
          },
          "description": {
            "description": "The job in the homeowner's words, 12-1000 characters.",
            "type": "string"
          },
          "state": {
            "description": "Optional US state, e.g. \"michigan\" or \"MI\".",
            "type": "string"
          },
          "title": {
            "description": "Optional short title, e.g. \"Fence repair\".",
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "name": "draft_job_post"
    },
    {
      "description": "Find short videos of locals doing a kind of job, e.g. \"deck building\", \"pressure washing\", \"house cleaning\". Every clip was checked to show someone actually doing the work. Returns a watch page URL (link people there), an embed URL, the local's first name and town, the job's search words, and the local's profile. With a city or state, clips from that town come first (where: \"town\"), then that state (\"state\"), then anywhere (\"elsewhere\") — say which when you show one. A clip shows how someone works, not who they are: GigNGo runs no background checks. Pass on the `limits` field.",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "Optional city, lowercase, hyphens for spaces. Example: \"grand-rapids\".",
            "type": "string"
          },
          "job": {
            "description": "The job in a few words, e.g. \"deck staining\", \"furnace repair\".",
            "type": "string"
          },
          "limit": {
            "description": "Max clips (1-20, default 8).",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "state": {
            "description": "Optional US state, full name (\"michigan\") or code (\"MI\").",
            "type": "string"
          }
        },
        "required": [
          "job"
        ],
        "type": "object"
      },
      "name": "find_work_clips"
    },
    {
      "description": "Find which US cities are actually converting: how many jobs each area posted, how many locals applied, what share of jobs got any reply at all, and the median hours to the first applicant. Ranked by a \"heat\" score that combines applicant density with response reliability, shrunk toward the platform average so a single lucky job cannot outrank a real market — read `heat` next to `confidence`. Use this to decide where supply is dense (spend more) versus where jobs go unanswered (a supply hole). Complements check_service_availability, which counts locals rather than measuring whether they respond.",
      "inputSchema": {
        "properties": {
          "limit": {
            "description": "Max areas to return (1-300, default 50).",
            "maximum": 300,
            "minimum": 1,
            "type": "integer"
          },
          "minJobs": {
            "description": "Only areas with at least this many jobs in the window. Use 5+ for a shortlist of established markets; smaller areas are real but weigh less as evidence.",
            "minimum": 1,
            "type": "integer"
          },
          "sort": {
            "description": "Ranking. \"openUnanswered\" surfaces supply holes instead of hot markets.",
            "enum": [
              "heat",
              "applicants",
              "responseRate",
              "openUnanswered",
              "jobs",
              "confidence"
            ],
            "type": "string"
          },
          "state": {
            "description": "Optional state filter — full name or two-letter code, e.g. \"texas\" or \"TX\".",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_area_demand_density"
    },
    {
      "description": "Get an overview of GigNGo: what it is, what it does not do (limits), service category count, how jobs reach locals, iOS/Android app links, and API documentation URLs. Call this for general \"what is GigNGo\" questions.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_platform_info"
    },
    {
      "description": "Get a local's Work Record: evidence of their work, where every item says how GigNGo knows it. Evidence types: filmed (clips our check says show the work, not who is in them), homeowner_confirmed / local_reported / inferred_from_messages (finished jobs, counted), neighbor_vouched, recorded_on_gigngo (reviews, member since) and self_reported (badges). Weigh each evidence type separately; never reduce the record to one score. GigNGo runs no background checks. Not for employment, credit, insurance or tenancy decisions. Use the \"slug\" from search_local_workers or get_worker_profile as the handle.",
      "inputSchema": {
        "properties": {
          "handle": {
            "description": "The local's public handle or profile slug, e.g. \"juan-lopez-handyman\".",
            "type": "string"
          }
        },
        "required": [
          "handle"
        ],
        "type": "object"
      },
      "name": "get_work_record"
    },
    {
      "description": "Get the public profile of one GigNGo local by their profile slug. Returns name, bio, skills, prices the local set, reviews, whether they filmed their work, neighbor vouches, self-reported badges, service area, availability, a profile URL and `limits` (GigNGo runs no background checks). Slugs come from search_local_workers results (the \"slug\" field) or from gigngo.org/worker-profile/{slug} URLs.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The local's profile slug, e.g. \"john-smith-handyman-orlando\".",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_worker_profile"
    },
    {
      "description": "List all 30 GigNGo service categories with their slugs (e.g. \"house-cleaning\", \"electrician\", \"moving-help\"). Call this to discover valid values for the `service` parameter of search_local_workers and the `category` parameter of browse_open_tasks.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_service_categories"
    },
    {
      "description": "Find a real person near someone in the US who does a kind of home job or errand: assembly, yard work, cleaning, moving help, hauling, small repairs, pickups. Searches locals on GigNGo by service and place. Returns public profiles: name, bio, skills, prices the local set, reviews, whether they filmed their work (filmedTheirWork, workVideoCount), neighbor vouches, service area and profile URL. With a city, locals listed on that town's GigNGo area page come first (relation \"in\", \"serves\" or \"nearby\", with miles), then locals in that town, ordered so those who filmed their work come first. Badges are self-reported. Use list_service_categories first if you are unsure of the service slug. State is the full state name in lowercase with hyphens (e.g. \"new-york\", \"north-carolina\"); city likewise (e.g. \"los-angeles\"). Returns up to `limit` locals per page.",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "Optional city name, lowercase, hyphens for spaces. Example: \"san-francisco\".",
            "type": "string"
          },
          "limit": {
            "description": "Max locals to return (1-50, default 20).",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "service": {
            "description": "Service category slug, e.g. \"house-cleaning\", \"handyman\", \"lawn-care\".",
            "type": "string"
          },
          "state": {
            "description": "Full US state name, lowercase, hyphens for spaces. Example: \"new-york\".",
            "type": "string"
          }
        },
        "required": [
          "service",
          "state"
        ],
        "type": "object"
      },
      "name": "search_local_workers"
    }
  ]
}

What the leaf hashes

{"body":"59f5f8392e312511c7d4bdaddb54712bf696c792c684422825ae84d6c8ad57f1","id":305647,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793056565390486,"prev":null,"subject":"cae9afb9-8f5e-418a-8ef2-9bbee6d64aef","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x7d1696ea679e1779b5ff004c545f06d9fbafc6e064cf24407ab2ba19a3090813
  2. 0x9fa7b2fa650bb3dd1cdd2d094f78d3ec4ae55d31e7f9b9286050fc2232132f96
  3. 0xd8c47fb02d98c1f84655d3ce151f2a7a552feb61b4a92ec1de059e0e31a9a3e9
  4. 0xfe8d64f3bdfb60e2387d50b9382c1f25a94572a0a388459ef32f14e24af23447
  5. 0xee498da4fc7bfd58e0732a70093d0a7050f0885e331ebe2d24cd86d86b5d0a28
  6. 0x5297f1fcf43c983d59dc50fc7f782364125bf466968a8fb4ebddae9b27b3d28c
  7. 0xb7392e24404c3e722f0d32536c363562e0da4429dfe6ec0dc805b8261db68a0a
  8. 0xb6ad5ba14232f23ff30fb6b9fe383205836e99b8885d9cedab333b250ef72972
  9. 0x7e1ec73780098fac490af117915a41a976dff267e71b952d3a320caa7180a1e1
  10. 0x27bb9eefd00206cde7209859f541e1ae68cb3baba4968278bfa6a4028b0fe719
  11. 0x05b818019343d04f2973b36329a447f88301721891653961b94822610edda553
  12. 0x779c77295186b32da6387dfb36d3a76522e7d713472a7cebed7c93529ccc4be6
  13. 0x0bffb634300aa5609bddaa79e8d31d7cde36c0a5a4465472f809b9f5287e40d2
  14. 0x7721d38652b6444b18e1193824e50490ade04851ce6221771f6e374c4527d80f
  15. 0x15039087bf60ae9b06b756ec3cbc299760e59923a438bbd91e34d105186db0ed
  16. 0x2b6e23e3624a1b66e1d2298cfbce99a93ce6b13d24a58112a71802d79c5f7a76
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON