BokaMera.API.Host

<back to all web services

GetMcpUsage

Requires Authentication
The following routes are available for this service:
GET/assistant/mcp/usageGet the public MCP server token usage and limit for a companyReturns how many tokens the company has consumed in the current rolling window through the public MCP server it connects to external AI clients, the configured limit and whether the company is still within budget. Metered separately from the admin AI assistant. Defaults to the logged-in user's company when no CompanyId is supplied.
namespace BokaMera.API.ServiceModel.Dtos

open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type AiChatUsageResponse() = 
        ///<summary>
        ///The company the usage applies to.
        ///</summary>
        [<ApiMember(Description="The company the usage applies to.")>]
        member val CompanyId:Guid = new Guid() with get,set

        ///<summary>
        ///Tokens consumed within the current rolling window.
        ///</summary>
        [<ApiMember(Description="Tokens consumed within the current rolling window.")>]
        member val TokensUsed:Int64 = new Int64() with get,set

        ///<summary>
        ///The company's token limit for the window.
        ///</summary>
        [<ApiMember(Description="The company's token limit for the window.")>]
        member val TokenLimit:Int32 = new Int32() with get,set

        ///<summary>
        ///Tokens remaining before the limit is reached (never negative).
        ///</summary>
        [<ApiMember(Description="Tokens remaining before the limit is reached (never negative).")>]
        member val TokensRemaining:Int64 = new Int64() with get,set

        ///<summary>
        ///True while the company is still below its token limit.
        ///</summary>
        [<ApiMember(Description="True while the company is still below its token limit.")>]
        member val IsWithinBudget:Boolean = new Boolean() with get,set

        ///<summary>
        ///Length of the rolling usage window, in days.
        ///</summary>
        [<ApiMember(Description="Length of the rolling usage window, in days.")>]
        member val WindowDays:Int32 = new Int32() with get,set

        member val ResponseStatus:ResponseStatus = null with get,set

    [<ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)>]
    [<ValidateRequest(Validator="IsAuthenticated")>]
    [<AllowNullLiteral>]
    type GetMcpUsage() = 
        ///<summary>
        ///The company id. Defaults to the logged-in user's company when omitted.
        ///</summary>
        [<ApiMember(DataType="string", Description="The company id. Defaults to the logged-in user's company when omitted.", ParameterType="query")>]
        member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set

F# GetMcpUsage DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /assistant/mcp/usage HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"TokensUsed":0,"TokenLimit":0,"TokensRemaining":0,"IsWithinBudget":false,"WindowDays":0,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}