Files
zeekay 1b367e2b62 chore: rebase the tree onto upstream master
The tree was a debranded snapshot of upstream taken around 2026-02-20, and
upstream has moved about five months since. This replaces it with upstream
master, mechanically re-derived: bin/debrand does the rename, and the
pipeline and squashed migrations are restored from the shipped tree.

Not a merge. The previous import replaced the tree wholesale in a single
commit, so there is no shared content history to merge against. Reproducing
the rename on the new tree is what actually converges.

What survives: .hanzo/workflows, the Dockerfiles and bin/docker* entrypoints,
compose files, LLM.md, and insights/migrations. The squashed initial
migration is load-bearing — the live database records it by name, so
upstream's ~918 individual migrations cannot come back.

Nine products are dropped as unreferenced. Twenty-one more that we do not run
are kept anyway because the core app still imports them; unpicking those is a
refactor and does not belong in a rebase.

This base does not build yet, and the reasons are not in the rename:
upstream now wants Python 3.13.13 against our 3.12.12 and Django 5.2 against
our 4.2, and the dependency manifests still name upstream packages that we
republish under our own names. Those are decisions, not renames.
2026-08-01 15:44:40 -07:00

188 lines
6.2 KiB
YAML

# MCP tool definition — tool entries are scaffolded from the OpenAPI schema.
# The tool list and operation IDs are kept in sync automatically:
# pnpm --filter=@hanzo/mcp run scaffold-yaml -- --sync-all
#
# To enable a tool, set enabled: true and add required scopes + annotations.
# All other fields (title, description, enrich_url, etc.) are yours to configure.
category: Persons
feature: persons
url_prefix: /persons
ui_apps: {}
tools:
persons-activity-retrieve:
operation: persons_activity_retrieve
enabled: false
persons-all-activity-retrieve:
operation: persons_all_activity_retrieve
enabled: false
persons-batch-by-distinct-ids-create:
operation: persons_batch_by_distinct_ids_create
enabled: false
persons-batch-by-uuids-create:
operation: persons_batch_by_uuids_create
enabled: false
persons-bulk-delete:
operation: persons_bulk_delete_create
enabled: true
scopes:
- person:write
annotations:
readOnly: false
destructive: true
idempotent: false
title: Bulk delete persons
description: >
Delete up to 1000 persons by Insights person UUIDs or distinct IDs. Optionally delete associated events and
recordings. Pass either `ids` (person UUIDs) or `distinct_ids`. Returns 202 Accepted. This operation is
irreversible.
exclude_params:
- format
persons-cohorts-retrieve:
operation: persons_cohorts_retrieve
enabled: true
scopes:
- person:read
- cohort:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: Get person cohorts
description: |
Get all cohorts that a specific person belongs to. Requires the person_id query parameter.
exclude_params:
- format
persons-deletion-status-list:
operation: persons_deletion_status_list
enabled: false
persons-emails-list:
operation: persons_emails_list
enabled: false
persons-list:
operation: persons_list
enabled: true
scopes:
- person:read
annotations:
readOnly: true
destructive: false
idempotent: true
list: true
title: List persons
description: >
List persons in the current project. Supports search by email (full text) or distinct ID (exact match), and
filtering by email or distinct_id query parameters. Returns paginated results with person properties and
distinct IDs.
exclude_params:
- format
- properties
param_overrides:
limit:
cast: string-int
offset:
cast: string-int
response:
include:
- id
- uuid
- name
- distinct_ids
- properties.email
- properties.$email
- properties.$geoip_country_code
- created_at
- last_seen_at
persons-partial-update:
operation: persons_partial_update
enabled: false
persons-properties-at-time-retrieve:
operation: persons_properties_at_time_retrieve
enabled: false
persons-properties-timeline-retrieve:
operation: persons_properties_timeline_retrieve
enabled: false
persons-property-delete:
operation: persons_delete_property_create
enabled: true
scopes:
- person:write
annotations:
readOnly: false
destructive: false
idempotent: true
title: Delete person property
description: >
Remove a single property from a person by key. The property is deleted asynchronously via the event pipeline
($unset).
exclude_params:
- format
rename_params:
$unset: unset
persons-property-set:
operation: persons_update_property_create
enabled: true
scopes:
- person:write
annotations:
readOnly: false
destructive: false
idempotent: true
title: Set person property
description: >
Set a single property on a person. The property is updated asynchronously via the event pipeline ($set).
Returns 202 Accepted.
exclude_params:
- format
persons-push-notifications-list:
operation: persons_push_notifications_list
enabled: false
persons-reset-person-distinct-id-create:
operation: persons_reset_person_distinct_id_create
enabled: false
persons-retrieve:
operation: persons_retrieve
enabled: true
scopes:
- person:read
annotations:
readOnly: true
destructive: false
idempotent: true
enrich_url: '{id}'
title: Get person
description: |
Retrieve a single person by numeric ID or UUID. Returns the person's properties, distinct IDs, and metadata.
exclude_params:
- format
response:
include:
- id
- uuid
- name
- properties
- distinct_ids
- created_at
- last_seen_at
persons-split-create:
operation: persons_split_create
enabled: false
persons-update:
operation: persons_update
enabled: false
persons-values-retrieve:
operation: persons_values_retrieve
enabled: true
scopes:
- person:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: Get person property values
description: >
Get distinct values for a person property key. Useful for discovering what values exist for properties like
'plan', 'role', or 'company'. Provide the property key and optionally a search value to filter results.
exclude_params:
- format
- force_refresh