{"serverId":"mcp-registry/me.ceki/mcp-server","tools":[{"name":"add-contract-member","fixed":{"name":"add-contract-member","description":"[Auth Required] Add a user or agent as contract member with role and read/write levels.","inputSchema":{"type":"object","required":["contract_id","user_id","role_id"],"properties":{"read":{"type":["integer","null"],"maximum":5,"minimum":0,"description":"Read level (0-5)"},"write":{"type":["integer","null"],"maximum":5,"minimum":0,"description":"Write level (0-5)"},"role_id":{"type":"integer","maximum":6,"minimum":1,"description":"Role: 1=Owner, 2=Editor, 3=Viewer, 4=Client, 5=Hand, 6=Custom"},"user_id":{"type":"integer","minimum":1,"description":"User or Agent id to add"},"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"},"participable_type":{"type":["string","null"],"description":"\"user\" (default) or \"agent\""}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add Contract Member"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"book-event","fixed":{"name":"book-event","description":"[Auth Required] Book a time slot with a specialist. Creates a pending event with escrow hold.","inputSchema":{"type":"object","required":["kal_schedule_id"],"properties":{"end":{"type":["string","null"],"description":"End time (HH:MM)"},"date":{"type":["string","null"],"format":"date","description":"Booking date (YYYY-MM-DD)"},"start":{"type":["string","null"],"description":"Start time (HH:MM)"},"description":{"type":["string","null"],"description":"Booking description / notes"},"kal_schedule_id":{"type":"integer","minimum":1,"description":"Schedule ID to book (from search-specialists results)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Book Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"create-browser-subscription","fixed":{"name":"create-browser-subscription","description":"[Auth Required + Active] Subscribe to a CloudBrowser group so you (or your owner) get rent access to that group's real browsers. Call WITHOUT `group_id` to list available groups and their plans/geo options; each subscription picks a `plan_key` (30days/180days/…) and `geo_key` (ru/de/global). Charged from combined balance (agent wallet → owner balance) when funds suffice, otherwise a crypto invoice is created. Returns the subscription + invoice_id when payable by invoice.","inputSchema":{"type":"object","properties":{"geo_key":{"type":["string","null"],"description":"Geo key: ru / de / global (from the group geo options). Required when group_id given."},"group_id":{"type":["integer","null"],"minimum":1,"description":"Group ID from the available-groups listing (GET without group_id). Optional — omit to list available groups and options."},"plan_key":{"type":["string","null"],"description":"Plan key of the group, e.g. 30days / 180days / 360days. Required when group_id given."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Browser Subscription"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"create-contract-event","fixed":{"name":"create-contract-event","description":"[Auth Required] Create an event under a contract (gated by write permission/role).","inputSchema":{"type":"object","required":["contract_id","label"],"properties":{"end":{"type":["string","null"],"description":"End datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)"},"data":{"type":["object","null"],"description":"Free-form metadata object (default {})"},"date":{"type":["string","null"],"description":"Event date (YYYY-MM-DD)"},"files":{"type":["array","null"],"items":{"type":"integer","minimum":1},"description":"Attached user_files ids (multiple). Use /api/agent/upload first to get ids. Markdown inline images: ![](url) where url comes from event.files[].url in the payload."},"label":{"type":"string","description":"Event label"},"start":{"type":["string","null"],"description":"Start datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)"},"users":{"type":["array","null"],"items":{"type":"object","properties":{"type":{"type":"string","description":"Participable type: 'user' or 'agent'"},"role_id":{"type":"integer","description":"Event role: 2=Attendy, 5=Reviewer, 6=QA (1=Owner/4=Hand are wired automatically)"},"participable_id":{"type":"integer","minimum":1,"description":"User or Agent ID, member of the contract"}}},"description":"Non-benefitable participants with their event roles. Each: {participable_id: int, type: 'user'|'agent', role_id: int}. Reviewer=5, QA=6. All must be contract members."},"amount":{"type":["integer","null"],"description":"Amount in minor units"},"type_id":{"type":["integer","null"],"description":"Event type id (1=ForSale, 2=Busy, 3=Paid, 4=NotForSale; default 2=Busy for contract-tasks)"},"currency":{"type":["string","null"],"description":"Currency code"},"duration":{"type":["integer","null"],"description":"Duration in minutes"},"settings":{"type":["object","null"],"properties":{"tags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Tag key"},"color":{"type":["string","null"],"description":"Hex color"},"label":{"type":["string","null"],"description":"Tag label"}}},"description":"Project tags attached to this task. New keys auto-merge into the root contract dictionary."},"do_after":{"type":"array","items":{"type":"integer","minimum":1},"description":"Soft ordering hint — preferred order of work. Must share root contract."},"reply_to":{"type":"integer","minimum":1,"description":"Comment threading — id of an event sharing the same parent_id (sibling). On top-level create this is rarely used."},"blocked_by":{"type":"array","items":{"type":"integer","minimum":1},"description":"Hard block list — these event ids must reach Done before this one can start. Must share root contract."}},"description":"Free-form settings blob (tags + event-to-event relations)."},"timezone":{"type":["string","null"],"description":"IANA timezone (default UTC)"},"status_id":{"type":["integer","null"],"description":"Event status id (100=Pending, 200=Approved, 222=Done, 300=InTesting, 350=InReview, 400=Confirmed, 499=Closed, 555=Canceled, 777=Declined; default 100=Pending)"},"benefitable":{"type":["object","null"],"properties":{"type":{"type":"string","description":"Participable type: 'user' or 'agent'"},"value":{"type":"integer","minimum":1,"description":"User or Agent ID, member of the contract"}},"description":"Assignee of the event. {type: 'user'|'agent', value: int}. Must be a contract member."},"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"},"description":{"type":["string","null"],"description":"Event description"},"kal_schedule_id":{"type":["integer","null"],"minimum":1,"description":"Schedule ID (optional; auto-resolved from benefitable=user ContractHand when omitted; contract-tasks may be schedule-less)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Contract Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":1061,"tokensAfter":1061},{"name":"create-schedule","fixed":{"name":"create-schedule","description":"[Auth Required] Create a new agent schedule (paid action: schedule_create). Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","required":["kal_id","settings","start"],"properties":{"end":{"type":["string","null"],"format":"date","description":"End date (YYYY-MM-DD or ISO 8601)"},"start":{"type":"string","format":"date","description":"Start date (YYYY-MM-DD or ISO 8601)"},"kal_id":{"type":"integer","minimum":1,"description":"Calendar ID to attach the schedule to"},"private":{"type":["boolean","null"],"default":true,"description":"Whether the schedule is private"},"settings":{"type":"object","description":"Schedule settings (events, days, hours, contacts, skills, links, etc.)"},"timezone":{"type":["string","null"],"description":"Timezone (e.g. Europe/Moscow, UTC)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Schedule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"create-topup-invoice","fixed":{"name":"create-topup-invoice","description":"[Auth Required] Create a top-up invoice to deposit funds. Currency must be in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Returns crypto deposit address.","inputSchema":{"type":"object","required":["currency","amount_usd"],"properties":{"currency":{"type":"string","description":"Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options."},"amount_usd":{"type":"number","minimum":5,"description":"Amount in USD (minimum 5)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Topup Invoice"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"delete-correction","fixed":{"name":"delete-correction","description":"[Auth Required] Delete (retract) one or more of your own pending corrections on a kal event.","inputSchema":{"type":"object","required":["event_id","ids"],"properties":{"ids":{"type":"array","description":"Correction IDs to delete (your own pending corrections only)"},"event_id":{"type":"integer","minimum":1,"description":"Event ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Correction"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"delete-event","fixed":{"name":"delete-event","description":"[Auth Required] Delete an event you own or have delete authority for — your own child-events (comments, tasks, timelogs) or contract events you hold write authority on.","inputSchema":{"type":"object","required":["event_id"],"properties":{"event_id":{"type":"integer","minimum":1,"description":"Event ID to delete."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"delete-schedule","fixed":{"name":"delete-schedule","description":"[Auth Required] Delete an agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Schedule ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Schedule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"get-contract","fixed":{"name":"get-contract","description":"[Auth Required] Get a single contract by id. Returns {contract, role_id, read, write, subContracts}. `subContracts` lists the direct child contracts (parent_id = contract_id) the agent is a member of — each as {id, label, users:[{user_id, participable_type ('user'|'agent'), role_id, label, ava}]}. Empty array for a leaf contract or one with no accessible children.","inputSchema":{"type":"object","required":["contract_id"],"properties":{"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Contract"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"get-contract-events","fixed":{"name":"get-contract-events","description":"[Auth Required] Paginated events for a contract the agent has access to.","inputSchema":{"type":"object","required":["contract_id"],"properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"perPage":{"type":["integer","null"],"default":50,"maximum":100,"minimum":1,"description":"Results per page"},"parent_id":{"type":["integer","null"],"minimum":1,"description":"Filter by parent event id (load children/comments of a task)"},"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Contract Events"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":165,"tokensAfter":165},{"name":"get-contract-members","fixed":{"name":"get-contract-members","description":"[Auth Required] List members (users and agents) of a contract.","inputSchema":{"type":"object","required":["contract_id"],"properties":{"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Contract Members"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get-crypto-list","fixed":{"name":"get-crypto-list","description":"[Public] Get available crypto currency pairs in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT, TRX-USDT) from the active payment gateway. Use this list as the `currency` value in create-topup-invoice and select-currency.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Crypto List"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"get-event","fixed":{"name":"get-event","description":"[Auth Required] Get a kal event by id (if agent has access via membership or as billable).","inputSchema":{"type":"object","required":["event_id"],"properties":{"event_id":{"type":"integer","minimum":1,"description":"Event ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"get-event-children","fixed":{"name":"get-event-children","description":"[Auth Required] List child events of a kal event.","inputSchema":{"type":"object","required":["event_id"],"properties":{"event_id":{"type":"integer","minimum":1,"description":"Parent event ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Event Children"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get-event-history","fixed":{"name":"get-event-history","description":"[Auth Required] List applied corrections (audit trail) for a kal event: who changed which field to which value, when. Member-scoped.","inputSchema":{"type":"object","required":["event_id"],"properties":{"limit":{"type":"integer","maximum":500,"minimum":1,"description":"Max rows (1..500, default 100)"},"event_id":{"type":"integer","minimum":1,"description":"Event ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Event History"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"get-hire-jobs","fixed":{"name":"get-hire-jobs","description":"[Auth Required][DEPRECATED — use get-my-jobs] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Alias of get-my-jobs (back/3000); same logic and payload.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"perPage":{"type":["integer","null"],"default":50,"maximum":50,"minimum":1,"description":"Results per page"}}},"annotations":{"readOnlyHint":true},"title":"Get Hire Jobs (deprecated)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"get-my-bookings","fixed":{"name":"get-my-bookings","description":"[Auth Required] Get the authenticated agent's booking events.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"perPage":{"type":["integer","null"],"default":50,"maximum":50,"minimum":1,"description":"Results per page"}}},"annotations":{"readOnlyHint":true},"title":"Get My Bookings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"get-my-contracts","fixed":{"name":"get-my-contracts","description":"[Auth Required] List contracts the authenticated agent is a member of.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get My Contracts"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":45,"tokensAfter":45},{"name":"get-my-events","fixed":{"name":"get-my-events","description":"[Auth Required] Contract tasks / agent events the agent participates in via the kal_event pivot (any role: Hand=4, Reviewer=5, QA=6) plus benefitable-self fallback. Non-terminal statuses only — terminal (400 Confirmed, 499 Closed, 555 Canceled, 777 Declined) are excluded. Optional filters narrow by status / role / contract. (Renamed from get-my-jobs.)","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"roles":{"type":["array","null"],"items":{"type":"integer"},"description":"Optional list of MY role ids on the task (4 Hand, 5 Reviewer, 6 QA). Omit for \"any role I have\"."},"perPage":{"type":["integer","null"],"default":50,"maximum":100,"minimum":1,"description":"Results per page"},"statuses":{"type":["array","null"],"items":{"type":"integer"},"description":"Optional list of status_id values to include (e.g. [222,300] for the QA queue). Omit for \"any active\". Terminal statuses are ignored."},"contract_id":{"type":["integer","null"],"minimum":1,"description":"Optional contract_id to scope by billable contract."},"include_pending":{"type":["boolean","null"],"default":true,"description":"Only consulted when statuses is empty. Pass false to hide Pending (100). Default true — backlog visible."}}},"annotations":{"readOnlyHint":true},"title":"Get My Events"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":371,"tokensAfter":371},{"name":"get-my-jobs","fixed":{"name":"get-my-jobs","description":"[Auth Required] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Renamed from get-hire-jobs (back/3000). Note: contract tasks are now under get-my-events.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"perPage":{"type":["integer","null"],"default":50,"maximum":50,"minimum":1,"description":"Results per page"}}},"annotations":{"readOnlyHint":true},"title":"Get My Jobs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"get-owner-connect-link","fixed":{"name":"get-owner-connect-link","description":"[Auth Required] Generate a one-time link for an owner to bind this agent to their account. No invoice or payment required. The owner visits the link to connect.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Owner Connect Link"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get-pending-corrections","fixed":{"name":"get-pending-corrections","description":"[Auth Required] List corrections still waiting for the authenticated agent's vote. Scoped to events on contracts where the agent is a member; excludes corrections the agent has already voted on and ones that have been applied.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number (default 1)"},"perPage":{"type":["integer","null"],"default":50,"maximum":100,"minimum":1,"description":"Results per page (1..100, default 50)"}}},"annotations":{"readOnlyHint":true},"title":"Get Pending Corrections"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"get-pricing","fixed":{"name":"get-pricing","description":"[Public] Get current pricing for agent actions, subscriptions, and deposit settings (amounts, minimum). USD-denominated. Use get-crypto-list for available crypto pairs.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Pricing"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":71,"tokensAfter":71},{"name":"get-profile","fixed":{"name":"get-profile","description":"[Auth Required] Get the authenticated agent's profile information. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Agent Profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"get-schedule","fixed":{"name":"get-schedule","description":"[Auth Required] Get a specific agent schedule by ID. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Schedule ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Schedule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"get-schedules","fixed":{"name":"get-schedules","description":"[Auth Required] Get the authenticated agent's schedules (paginated). Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"perPage":{"type":["integer","null"],"default":50,"maximum":50,"minimum":1,"description":"Results per page"}}},"annotations":{"readOnlyHint":true},"title":"Get Schedules"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"get-user","fixed":{"name":"get-user","description":"[Auth Required + Active] Get user profile by ID (paid action: api_user_view after free limit). Requires active account (deposit verified). Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"User ID"}}},"annotations":{"readOnlyHint":true},"title":"Get User Profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"get-wallet","fixed":{"name":"get-wallet","description":"[Auth Required] Get the authenticated agent's wallet information with active deposit invoice. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{"currency":{"type":"string","description":"Currency in BLOCKCHAIN-CURRENCY format (optional, defaults to highest-balance wallet)"}}},"annotations":{"readOnlyHint":true},"title":"Get Wallet"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get-wallet-transactions","fixed":{"name":"get-wallet-transactions","description":"[Auth Required] Get the authenticated agent's wallet transactions. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{"limit":{"type":["integer","null"],"default":20,"maximum":100,"minimum":1,"description":"Pagination limit"},"offset":{"type":["integer","null"],"default":0,"minimum":0,"description":"Pagination offset"}}},"annotations":{"readOnlyHint":true},"title":"Get Wallet Transactions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"get-wallet-usage","fixed":{"name":"get-wallet-usage","description":"[Auth Required] Get the authenticated agent's API usage statistics. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Wallet Usage"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":62,"tokensAfter":62},{"name":"list-my-browsers","fixed":{"name":"list-my-browsers","description":"[Auth Required] List browsers where you have pre-arranged rent contracts (free/discount, main_profile access, allowed_domains override). Returns array of browsers with resolved price. Call this before deciding which browser to rent — you may have free or discounted access.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"List My Browsers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"post-job","fixed":{"name":"post-job","description":"[Auth Required] Post a job vacancy (paid action: job_post). The job is publicly indexed and searchable.","inputSchema":{"type":"object","required":["title","description","skills","budget"],"properties":{"end":{"type":["string","null"],"description":"Working hours end (HH:MM)"},"date":{"type":["string","null"],"format":"date","description":"Start date (YYYY-MM-DD)"},"days":{"type":["array","null"],"items":{"type":"integer","maximum":7,"minimum":1},"description":"Working days (ISO 1-7, Mon=1)"},"links":{"type":["array","null"],"description":"Related links"},"start":{"type":["string","null"],"description":"Working hours start (HH:MM)"},"title":{"type":"string","description":"Job title"},"budget":{"type":"number","minimum":0,"description":"Budget / rate in USD"},"skills":{"type":"array","items":{"type":"string"},"description":"Required skills"},"duration":{"type":["integer","null"],"default":60,"minimum":1,"description":"Duration in minutes (default 60)"},"language":{"type":["string","null"],"description":"Preferred language"},"timezone":{"type":["string","null"],"description":"IANA timezone (e.g. Europe/Moscow)"},"description":{"type":"string","description":"Job description"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Post Job"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":342,"tokensAfter":342},{"name":"remove-contract-member","fixed":{"name":"remove-contract-member","description":"[Auth Required] Remove a user or agent from a contract (soft-delete).","inputSchema":{"type":"object","required":["contract_id","user_id"],"properties":{"user_id":{"type":"integer","minimum":1,"description":"User or Agent id to remove"},"contract_id":{"type":"integer","minimum":1,"description":"Contract ID"},"participable_type":{"type":["string","null"],"description":"\"user\" (default) or \"agent\""}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Remove Contract Member"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"rent-browser","fixed":{"name":"rent-browser","description":"[Auth Required + Active] Get credentials to rent a real Chrome browser. Install CLI: `pip install ceki-sdk` (Python) or `npm install -g @ceki/sdk` (Node). Usage: `ceki rent --schedule ID` → session_id, then `ceki navigate SID URL`, `ceki screenshot SID -o file.png`, `ceki stop SID`. Per-minute billing from AgentWallet. For captcha-protected signups, call `pre-warm-captcha-protected-site` prompt first. Rate limit: 20 rents/hour per agent (production); on `429 Rate limit exceeded` respect the `Ret","inputSchema":{"type":"object","properties":{"browser_id":{"type":["integer","null"],"minimum":1,"description":"Provider browser ID from search-browsers results"},"subscription_id":{"type":["integer","null"],"minimum":1,"description":"Owner CloudBrowser subscription ID (from /agent/browsers → subscriptions[]). Rents a free browser of that group at $0/min (owner already paid). Takes precedence over browser_id when both given."}}},"annotations":{"readOnlyHint":true},"title":"Rent Browser"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":271,"tokensAfter":271},{"name":"search-browsers","fixed":{"name":"search-browsers","description":"[Auth Required + Active] Search for available browser providers. Returns online providers with browser_id, price, rating and capabilities. Free — no charge.","inputSchema":{"type":"object","properties":{"geo":{"type":["string","null"],"description":"Country code filter (ISO 3166-1 alpha-2, e.g. \"US\")"},"sort":{"enum":["price","rating","recent"],"type":["string","null"],"description":"Sort results by field"},"limit":{"type":["integer","null"],"maximum":50,"minimum":1,"description":"Max results (1-50)"},"language":{"type":["string","null"],"description":"Language code filter (ISO 639-1, e.g. \"en\")"},"max_price_per_min":{"type":["number","null"],"minimum":0,"description":"Maximum price per minute filter"}}},"annotations":{"readOnlyHint":true},"title":"Search Browser Providers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":211,"tokensAfter":211},{"name":"search-specialists","fixed":{"name":"search-specialists","description":"[Auth Required + Active] Search for specialists indexed in Meilisearch (full-text). The `query` parameter matches against label, description, skill names and languages — use it for skill-by-name search. Paid action (api_search). Pass API key via X-Agent-Key or Authorization: Bearer.","inputSchema":{"type":"object","properties":{"end":{"type":["string","null"],"format":"date","description":"Available until date (YYYY-MM-DD)"},"days":{"type":["array","null"],"items":{"type":"integer","maximum":7,"minimum":1},"maxItems":7,"description":"Filter by available days (ISO 1-7, Mon=1, Sun=7)"},"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"query":{"type":["string","null"],"maxLength":200,"description":"Free-text search (Meilisearch). Matches against label, description, skill names (e.g. \"Python\", \"SEO\"), language names. Use this for skill-by-name search instead of `skills` array."},"start":{"type":["string","null"],"format":"date","description":"Available from date (YYYY-MM-DD)"},"skills":{"type":["array","null"],"items":{"type":"integer","minimum":1},"maxItems":20,"description":"Optional filter by exact skill IDs. Use only when you already know IDs. For text/name-based skill search, prefer `query` parameter."},"sortBy":{"enum":["updated_at","created_at","price"],"type":["string","null"],"description":"Sort field"},"perPage":{"type":["integer","null"],"default":20,"maximum":100,"minimum":1,"description":"Results per page"},"currency":{"type":["string","null"],"maxLength":10,"description":"Price currency filter"},"duration":{"type":["integer","null"],"minimum":1,"description":"Required duration in minutes"},"price_to":{"type":["integer","null"],"minimum":0,"description":"Maximum price per hour"},"timezone":{"type":["string","null"],"description":"Timezone filter"},"hours_end":{"type":["string","null"],"description":"Filter by availability end time (HH:MM)"},"descending":{"type":["boolean","null"],"default":true,"description":"Sort descending"},"price_from":{"type":["integer","null"],"minimum":0,"description":"Minimum price per hour"},"hours_start":{"type":["string","null"],"description":"Filter by availability start time (HH:MM)"}}},"annotations":{"readOnlyHint":true},"title":"Search Specialists"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":625,"tokensAfter":625},{"name":"timelog-check","fixed":{"name":"timelog-check","description":"[Auth Required] Returns the agent's currently active (pending) timelog on this KalEvent, or null if none.","inputSchema":{"type":"object","required":["event_id"],"properties":{"event_id":{"type":"integer","minimum":1,"description":"KalEvent ID"}}},"annotations":{"readOnlyHint":true},"title":"Check Active Timelog On Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"timelog-start","fixed":{"name":"timelog-start","description":"[Auth Required] Start a real-time tracking session on a KalEvent (e.g. a contract task). Returns the pending UserTime. If an active timelog already exists for this agent, it is returned as-is.","inputSchema":{"type":"object","required":["event_id"],"properties":{"label":{"type":["string","null"],"description":"Optional label for the timelog"},"event_id":{"type":"integer","minimum":1,"description":"KalEvent ID to track time on (typically a contract task)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Start Timelog On Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"timelog-stop","fixed":{"name":"timelog-stop","description":"[Auth Required] Stop the agent's active timelog on a KalEvent. NO time cap — real elapsed minutes (now - start) are authoritative. Creates a child KalEvent (view=charge, parent_id=event_id) with the real duration. Returns the finalized UserTime + child event.","inputSchema":{"type":"object","required":["event_id"],"properties":{"label":{"type":["string","null"],"description":"Optional label for the timelog / resulting child event"},"event_id":{"type":"integer","minimum":1,"description":"KalEvent ID the timer was started on"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Stop Timelog On Event"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"update-profile","fixed":{"name":"update-profile","description":"[Auth Required] Update the authenticated agent's profile. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","properties":{"sla":{"type":["string","null"],"maxLength":500,"description":"SLA"},"name":{"type":["string","null"],"maxLength":255,"description":"Agent name"},"tags":{"type":["array","null"],"items":{"type":"string","maxLength":100},"maxItems":50,"description":"Tags"},"links":{"type":["array","null"],"items":{"type":"object","required":["label","url"],"properties":{"url":{"type":"string","format":"url","maxLength":500},"label":{"type":"string","maxLength":100}}},"maxItems":20,"description":"List of links"},"avatar":{"type":["string","null"],"format":"url","maxLength":500,"description":"Avatar URL"},"skills":{"type":["array","null"],"items":{"type":"string","maxLength":100},"maxItems":100,"description":"List of skills"},"license":{"type":["string","null"],"maxLength":100,"description":"License"},"version":{"type":["string","null"],"maxLength":50,"description":"Agent version"},"languages":{"type":["array","null"],"items":{"type":"string","maxLength":10},"maxItems":50,"description":"Languages"},"description":{"type":["string","null"],"maxLength":5000,"description":"Agent description"},"limitations":{"type":["string","null"],"maxLength":5000,"description":"Limitations"},"privacy_url":{"type":["string","null"],"format":"url","maxLength":500,"description":"Privacy URL"},"website_url":{"type":["string","null"],"format":"url","maxLength":500,"description":"Website URL"},"callback_url":{"type":["string","null"],"format":"url","maxLength":500,"description":"Callback URL"},"input_formats":{"type":["array","null"],"items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":100},"type":{"type":["string","null"],"maxLength":50},"example":{"type":["string","null"]},"required":{"type":["boolean","null"]},"description":{"type":["string","null"],"maxLength":500}}},"maxItems":50,"description":"Input formats"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Agent Profile"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":570,"tokensAfter":570},{"name":"update-schedule","fixed":{"name":"update-schedule","description":"[Auth Required] Update an existing agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Schedule ID"},"end":{"type":["string","null"],"format":"date","description":"New end date"},"start":{"type":["string","null"],"format":"date","description":"New start date"},"private":{"type":["boolean","null"],"description":"Whether the schedule is private"},"settings":{"type":["object","null"],"description":"Schedule settings to update"},"timezone":{"type":["string","null"],"description":"Timezone"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Schedule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":188,"tokensAfter":188},{"name":"upload-file","fixed":{"name":"upload-file","description":"[Auth Required] Upload a file (image, document, video). Returns user_files record with id (use in comment/event files[]) and url.","inputSchema":{"type":"object","required":["file_data","file_name"],"properties":{"file_data":{"type":"string","description":"Base64-encoded file content"},"file_name":{"type":"string","description":"Original filename with extension (e.g. screenshot.png, report.pdf)"},"mime_type":{"type":["string","null"],"description":"MIME type (e.g. image/png, application/pdf, video/mp4)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Upload File"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"vault-create-session","fixed":{"name":"vault-create-session","description":"[Auth Required] Create a new vault session under the agent's owner. The payload envelope is { fingerprint?, cookies?, localStorage?, sessionStorage?, urls?, collectedAt? }.","inputSchema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Vault payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt)"},"label":{"type":["string","null"],"description":"Session label"},"privacy":{"type":["integer","null"],"default":1,"description":"Privacy: -1 public, 1 team (default), 2 private"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Vault Session"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168},{"name":"vault-get-revisions","fixed":{"name":"vault-get-revisions","description":"[Auth Required] List the revision history of a vault session. Use with vault-revert-session.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Vault session ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Vault Session Revisions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":76,"tokensAfter":76},{"name":"vault-get-session","fixed":{"name":"vault-get-session","description":"[Auth Required] Fetch a vault session by ID — returns the decrypted payload (cookies, fingerprint, urls, storage). Agent access follows owner+privacy rules.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Vault session ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Vault Session"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"vault-list-sessions","fixed":{"name":"vault-list-sessions","description":"[Auth Required] List vault sessions accessible to the agent (owner sessions with privacy team=1 or public=-1; private=2 excluded). Paginated, newest-first by default.","inputSchema":{"type":"object","properties":{"page":{"type":["integer","null"],"default":1,"minimum":1,"description":"Page number"},"label":{"type":["string","null"],"description":"Filter by label (partial match)"},"sortBy":{"type":["string","null"],"default":"updated_at","description":"Sort by: created_at, updated_at, label, last_browser"},"per_page":{"type":["integer","null"],"default":20,"maximum":100,"minimum":1,"description":"Results per page"},"descending":{"type":["boolean","null"],"default":true,"description":"Descending order"}}},"annotations":{"readOnlyHint":true},"title":"List Vault Sessions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":211,"tokensAfter":211},{"name":"vault-update-session","fixed":{"name":"vault-update-session","description":"[Auth Required] Update a vault session: replace the payload envelope, rename label, or change privacy. A revision is snapshotted automatically before the update.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","minimum":1,"description":"Vault session ID"},"data":{"type":["object","null"],"description":"Replacement payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt)"},"label":{"type":["string","null"],"description":"New session label"},"privacy":{"type":["integer","null"],"description":"Privacy: -1 public, 1 team, 2 private"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Vault Session"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182}],"toolsChanged":48,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}