Skip to content
Harborby Signalry

Machine-readable

Resolve by slug. Never invent a number.

How and who for the hotel job—verified when attested.

Harbor by Signalry is built so an agent can find the job, read the how, list who, and cite proof — without hallucinating a hotel metric.

API and MCP

Prefer GET /api/v1 for jobs, providers, cases, hotels, and tapes. MCP is Streamable HTTP at /mcp. Tools: search_jobs, get_job, find_providers, submit_listing, submit_outcome. A claim stays unverified pending. An outcome stays reported. Docs live on /api.

Hotel graph

Wikidata CC0 + OSM ODbL. Amenities and brands are tags, not a complete inventory. Export dumps are samples. Browse geography at /hotels/geo and tagged chains at /hotels/chains and amenity tags at /hotels/amenities. Full notes: docs/GRAPH-API.md.

  • GET /api/graph — discover start
  • GET /api/graph/stats
  • GET /api/graph/hotels?q= — also hasSameAs=1, hasBrand=1, chainId, amenity
  • GET /api/graph/search?q= — City chips print cityTags; Country chips print countryHotels (not city tags, not map bubbles, not OSM extracts); Chain chips print taggedHouses + mapped/mappedPct + bySource (MEMBER_OF tags and MEMBER_OF source houses, not the folio brand-fallback walk — Ibis 162 ≠ 213; Ibis OSM 161 ≠ folio OSM 212); Amenity chips print taggedHousesWorldwide + mapped/sameAs/brand (not selected.byCountry amenity tags; SAME_AS is houses with a partner); Source chips print sourceHouses (not Wikipedia extracts)
  • GET /api/graph/chains — list items print taggedHouses + mapped/mappedPct + bySource on MEMBER_OF houses (Ibis OSM 161 ≠ folio OSM 212); /{id} prints taggedHouses (MEMBER_OF) and folioHouses (brand-fallback walk; Ibis 162 ≠ 213); bySource is folio source houses and bySourceMemberOf is MEMBER_OF (Ibis OSM 212 ≠ 161); byCountry is folio houses and byCountryMemberOf is MEMBER_OF in that country (France Ibis 63 ≠ 60)
  • GET /api/graph/amenities?amenity= — items name mapped/sameAs/brand/bySource; selected.byCountry is amenity tags in that country, not countryHotels; selected.byCountrySources is OSM / Wikidata among those tags (France Wi-Fi OSM 759 ≠ worldwide Wi-Fi OSM 12,531 ≠ France OSM 3,313)
  • GET /api/health

Buy / sell desk

Hotels only. Estimates are framing, not appraisals. Never invent a confidential sale price. Combined PSAs stay combined. A house on the URL stays on ?hotel=. Verified Outcome is not insurance.

Verified Outcome

Product page: /verified-outcomes. Jobs: buy-verified-outcome-cover, name-evidence-for-outcome-backing, underwrite-verified-outcome-intent. POST /api/outcomes echoes a packet with status demand-signal and licensed false. Harbor is not licensed to underwrite. No guest names.

How → who → proof

Cite /about#cite-harbor. Resolve by slug. If a hop is missing, say so.

  1. 1. How — /jobs · night-audit-without-gm-burnout · renegotiate-management-agreement
  2. 2. Who — /providers · GET /api/jobs/{slug}/providers
  3. 3. Proof — /cases · GET /api/jobs/{slug}/cases
  4. 4. Desk — /buy-sell → valuation → estimate → /hotels/{id}

Stable surfaces