Invoke one Athlete Assistant tool
Server-to-server gateway used by mogl-ai-service. The path accepts exactly nine Laravel tools: get_portfolio, search_deals, get_deal, get_timeline, get_deal_folder, get_brand_conversation, find_deals, propose_brand_draft, and propose_support. search_kb is Python-local and is rejected here. Auth: both X-API-KEY and X-Mogl-Turn-Token are required; athlete identity is derived from the turn token and is never accepted in the body. HTTP 200 carries successful results and expected domain/tool errors (ok=false). HTTP 401 is reserved for missing or invalid credentials. HTTP 422 returns invalid_params. HTTP 503 returns unavailable. Unknown, deleted, unauthorized, and cross-athlete records use not_found. Cross-conversation, malformed, missing, stale orphan, wrong group id, and otherwise unresolvable discussed-group refs use that same not_found envelope. They do not return a success discussed_group and do not reveal header existence. coverage=unavailable is only a success shape when an in-scope header resolves but its member snapshot is internally inconsistent or temporarily unavailable. get_portfolio list rows with total_count at most three may include next_work_item for remaining Deal Folder or completion work; next_work_item.deadline belongs to that same deliverable. next_due_* remains the compact calendar label. Compact lists of four or more omit next_work_item. Count and overview actions do not load folder work and may return discussed_groups while deals is empty and returned_count is zero. discussed_group_page is exclusive of live query fields and pages a captured snapshot at most 20 rows. Truncated live lists require a nonempty continuation_cursor even when discussed_groups is present. Truncated snapshot_capture_order pages keep continuation_cursor null and continue with discussed_group_page offset. Page results set requested_segment=all. Captured original segment stays on discussed_groups[].segment. summary_counts is the current histogram over reauthorized snapshot members. total_count and returned_count describe current authorized snapshot membership and page, not a live filter. Discussed-group references are identifiers, not credentials. get_deal_folder is a live read-only Deal Folder read for one host-bound standard job. Fan requests return fan_deal_not_allowed. Optional file_id must already appear as deal_folder_file: on a successful current-turn result. File states are awaiting_upload, awaiting_brand_review, revision_requested, approved, voided, and unknown; legacy submitted is rejected. Empty non-voided rows are awaiting_upload even when not applicable. approved requires a real approved file. unknown is non-actionable. remaining_upload_slots is capacity, not outstanding work. Ordinary latest_brand_comment is optional context. Formal revision reasons come only from active_revision_request. Focused comments include kind=comment|revision_request. File approval of an In-Progress deliverable continues through completion_mode and proof_of_work_required. Comments and files are bounded. The tool never marks comments read or changes folder state. get_brand_conversation reads every athlete-brand messages record ordered by stored send time then chat id; sort is sent_at_desc (default) or sent_at_asc, page_size defaults to 1 (max 20), and next_cursor is bound to the same athlete, deal, and sort. Messages within a page are listed oldest to newest. read_by_recipient appears only when the request carried sort, and the tool never marks messages read. get_deal.deal_folder is compatibility data only. Brand drafts are athlete to brand. Support drafts are athlete to MOGL Support. The tappable support phrase remains pre-filled in email here. Selected-deal focus (selected_deal_id) is host-derived on the AI loop result consumed by Laravel; it is not a field on this tool response and is not exposed on public athlete chat/history items.
Authorizations
Server-to-Server API Key for internal/lambda/cron calls
Signed short-lived AI turn token. The gateway derives athlete identity from this header; athlete IDs are never accepted in the tool body.
Headers
Server-to-server API key.
Signed short-lived turn token. Supplies athlete identity.
Path Parameters
Laravel Athlete Assistant tool name. Nine values are accepted. Nine Laravel Athlete Assistant tools. search_kb is Python-local and is not accepted on this path. find_deals searches eligible standard deals.
get_portfolio, search_deals, get_deal, get_timeline, get_deal_folder, get_brand_conversation, find_deals, propose_brand_draft, propose_support "find_deals"
Body
Closed per-tool input. Extra properties are rejected. get_deal_folder requires deal_id; deal_type defaults to job; file_id is optional and must already be trusted on the current turn.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
Host-bound authorized standard job ID.
x >= 14821
job, fan_req "job"
Optional focused file. Must already appear as deal_folder_file:{id} on a successful current-turn result.
x >= 1901