← Files OrbitARCHIVED FILE
skills/orbit-person-research/references/directories.md
5.38 KB · Oct 8, 2026 · 06:28 UTC
# Directory workflows Use directory tools only for the user's requested organization and collection. Start with `list_directory_organizations` and `list_directories` to obtain IDs; use `get_directory` before changes. If more than one organization or directory fits, ask which one. Never assume the first organization is the intended target. Directory tools require a connected user and the relevant `directories.read` or `directories.write` permission. Follow an authentication challenge to reconnect; never request credentials in chat. Write permission does not imply read permission. The backend still enforces the user's organization role and directory grants. Do not bypass a denial using another organization or global search. A directory login can expire before the search connection expires. ## Organize and research - Create a private directory with `create_directory` unless the user explicitly chooses public visibility. Confirm the target and visibility. Use `check_directory_slug` when a public slug is needed. - Use `update_directory` for requested changes. Preserve unrelated metadata: it can hold directory settings, so read before replacing it. - Use `list_directory_people` to browse members; it supports name filtering, not natural-language search. Follow returned pagination. - Use `search_directory` for natural-language research confined to that directory. Do not silently run `search_people` globally instead. - For a request like "create a directory of Wonderworks employees and find ten engineering standouts," resolve the company, confirm the private directory and population scope, then track readiness before searching. Request ten matches about concrete engineering accomplishments. Read the returned profiles and cite supporting evidence; result order is not proof of an objective top-ten ranking or complete employee coverage. Do not invent people, photos, accomplishments, or numerical impact to fill a widget. ChatGPT displays the returned directory matches inline; explain missing or pending results accurately instead of substituting a fabricated table. - Read a member with `get_directory_person`; use its returned Orbit profile ID with `get_profile` before substantive person research. Directory-person IDs and Orbit profile IDs are different identifiers. - Use `add_directory_person` with a resolved profile ID. Check membership with `check_directory_membership` when importing supplied identities. - Confirm specific member IDs before `remove_directory_person` or `remove_directory_people`. Save removal source IDs and restoration deadlines; use `restore_directory_people` only within the backend's supported window. - `archive_directory` archives; it does not permanently erase the directory. Confirm the exact target. `leave_directory` removes only the user's membership. ## Import and populate Use `infer_directory_csv_mapping` for supplied headers if mapping is unclear. Review the mapping and confirm the destination before `upload_directory_csv`. Provide the user's CSV text unchanged; do not invent rows or fill unknown cells from memory. Keep the same UUID `idempotency_key` and content on a retry. The tool accepts at most 512 KiB of UTF-8 CSV text. Use the Orbit dashboard for larger files or image uploads; do not invent upload URLs or silently truncate. For known company or school IDs, use `populate_directory_from_entities` with explicit AND/OR filters after confirming scope and research costs. Do not guess entity IDs from company names. Read the source returned by the operation. Track imports using `list_directory_sources`, `get_directory_source`, `get_directory_source_status`, `list_pending_directory_people`, and `get_directory_readiness`. Source reads can recover pending processing; they are not strictly read-only. Report accepted, queued, importing, failed, and completed accurately. Preserve partial successes and surface validation errors. Do not call `update_directory_source_status` to make a failed import appear successful. Use it only for an explicitly requested administrative correction supported by actual processing evidence. Removing source members requires confirmation before `remove_directory_source_people`. ## Share and follow changes Read `list_directory_grants` before sharing. Confirm recipient type, exact ID, and permissions (`search`, `upload`, `manage`) before `grant_directory_access`. Use the returned grant ID for `revoke_directory_access`. Do not widen access just because a search or import was denied. For one-time research refreshes, confirm either specific directory-person IDs or everyone, including organization credit usage. Call `refresh_directory_profiles` with one selection and a stable UUID `request_id`. Track `list_directory_refreshes`; acceptance is not completion. `resync_directory_people` instead rematerializes existing data and is not equivalent to researching profiles again. For ongoing updates, read `list_directory_watchers`, then confirm member Orbit profile IDs, interval, phases, and recurring credits before `create_directory_watchers` or `update_directory_watcher`. Stop selected watchers with `delete_directory_watcher` after confirmation. Read updates with `list_directory_activity`. Do not schedule updates during ordinary research. Never blindly retry a timed-out mutation: it might already have succeeded. Inspect the relevant list/status first. Honor rate limits and stop on denied access, terminal failure, or an unresolved target.
SHA-256: de784a763e587b68e0f6d7b038259c3b7e515c2f12fa8f3c61e6972e1e8c5486