Connect Your AI Assistant
Connect Claude, ChatGPT or another MCP client to your client portal. The assistant can read your projects, invoices, support tickets, site status and files. On the Pro and Ultra plans it can also open tickets or send change requests, but only after you confirm the exact preview.
Tools and Limits
Each plan sets its own limits. The server enforces the key count, the requests per minute for each key, and the monthly units for the whole account.
Basic
FreeRead only. No writes on this plan
Read projects, invoices, support tickets, site status, project files and the monthly report.
Pro
3,000,000 Toman / moReads and confirmed writes
All the read tools, plus confirmed writes: open and reply to support tickets, send change requests and Farr messages, upload files, create and update content drafts, and accept or decline proposals. Each write is previewed first and applied only after you approve it.
Ultra
5,000,000 Toman / moEverything in Pro, plus bulk actions and webhooks
Everything in Pro, plus bulk ticket actions (bulk_ticket_reply, bulk_ticket_close and bulk_actions, up to 20 tickets per call), webhooks (webhook_list, webhook_create and webhook_delete) and scheduled monthly reports (scheduled_reports and scheduled_reports_get).
Safety: No Payment or Ownership Actions
The assistant API has no tool that pays an invoice, moves money, changes account ownership, or creates or revokes keys. Invoices are read-only there. You pay in the client portal yourself.
How to Create an Assistant Key
Create a key in the client portal in three steps.
1. Sign in to the Portal
Sign in to the client portal and open Assistant access in the menu.
2. Create a Key
Click "Create a key". Enter a name of 3 to 60 characters (for example "Claude Code - laptop"), choose what the key may see, and choose how long it lasts. Creating a key asks you to sign in again.
3. Copy the Key Once
The full key is shown only once, right after it is created. The server stores only a SHA-256 hash of its secret part, so it cannot be shown again. If you lose it, revoke it and create a new one.
How to Connect Claude & ChatGPT
Connect with the MCP Streamable HTTP transport, using a bearer key, or by signing in with OAuth.
Claude Code and Other MCP Clients
In a tool that takes a server URL and headers, such as the .mcp.json file of Claude Code, add this entry and replace the placeholder with your key:
{
"mcpServers": {
"sajjad-portal": {
"type": "http",
"url": "https://sajjad.blog/api/client/mcp",
"headers": {
"Authorization": "Bearer <YOUR_AGENT_KEY>"
}
}
}
}ChatGPT and Other Web Assistants
Add this address as a custom connector and sign in when it asks (OAuth). No key is needed on this path. Menu names differ between assistants and may change.
What "Preview, Then Confirm" Means for Writes
A write is never applied on the first call.
When an assistant calls a write tool, the server stores the exact request and returns a preview with a one-time confirmation token that expires after 10 minutes. The change is applied only when the assistant calls the confirm tool with that token. The assistant is instructed to do this only after you agree. Each token works once, only for the key and account that created it, and only with the same arguments. Every staged write is recorded.
Verified Tools Reference
The main tools the client endpoint offers, plus the confirm tool used after a preview. A tool outside your plan is refused with a plan_required message.
| Tool Name | Access Kind | Capability Description |
|---|---|---|
| projects_list | Read | List up to 50 of your projects: code, name, status, progress and end date. |
| invoices_list | Read | List up to 25 invoices with due date, total, paid amount, balance and status. Set openOnly to see only unpaid ones. Drafts and payment links are never included. |
| tickets_list | Read | List up to 50 of your support tickets with status, priority and last response time. |
| ticket_get | Read | Get the message history of one support ticket (up to 100 messages). Internal notes are excluded. |
| ticket_create | Confirmed Write | Stage a new support ticket with low or normal priority. It is applied only after you confirm the preview. |
| ticket_reply | Confirmed Write | Stage a reply to an open ticket. Closed tickets cannot be replied to. It is applied only after you confirm the preview. |
| change_request_create | Confirmed Write | Stage a change request on one of your projects. It is applied only after you confirm the preview. |
| site_status | Read | Show the connected site's domain status, visitors and page views (24 hours and 7 days), uptime percentage and unresolved error count. Figures come from the last telemetry sync, not a live check. |
| files_list | Read | List files in your project storage, up to 100 per page, optionally under a folder. |
| file_link | Read | Create a download link for one stored file. The link expires after 15 minutes. |
| report_monthly | Read | Get a month's summary (up to 12 months back): projects, tickets opened and closed, the current website snapshot, invoices due, and a PDF link that expires after 15 minutes. |
Frequently Asked Questions
Common questions about client assistants, security, and usage limits.
Can my AI assistant make payments or settle invoices automatically?
No. The assistant API has no tool that pays invoices or moves money. Invoices can be read there, and you make the payment yourself in the client portal.
What happens when I reach my monthly unit quota?
Each plan has a monthly unit budget for the whole account. A read costs 1 unit and a write preview costs 3. When the account's usage for the month reaches the plan's budget, further calls return a quota_exceeded error inside the tool result (HTTP 200, not 429) until the UTC calendar month changes.
How do I revoke an assistant key if it is compromised?
Open Assistant access in the client portal, choose Revoke key and confirm. Every later request with that key is refused immediately. Assistants connected through OAuth can be disconnected from the same page.
Do I need to run a local bridge to connect ChatGPT?
No. The endpoint is a plain HTTPS endpoint: the client sends JSON-RPC messages with POST and receives JSON back. Cloud-hosted assistants can connect to it directly, with no local software.
Ready to Put Your Assistant to Work?
Choose a plan to get started, or open your client portal and create an assistant key.