docs/publishing/origin/metadata.mdx
export type AgenticMcpRequestMetadata = {
agenticProxySecret: string
sessionId: string
isCustomerSubscriptionActive: boolean
customerId?: string
customerSubscriptionStatus?: string
customerSubscriptionPlan?: string
userId?: string
userEmail?: string
userUsername?: string
userName?: string
userCreatedAt?: string
userUpdatedAt?: string
deploymentId: string
deploymentIdentifier: string
projectId: string
projectIdentifier: string
ip?: string
} & (
| {
// If the customer has an active subscription, these fields are guaranteed
// to be present in the metadata.
isCustomerSubscriptionActive: true
customerId: string
customerSubscriptionStatus: string
userId: string
userEmail: string
userUsername: string
userCreatedAt: string
userUpdatedAt: string
}
| {
// If the customer does not have an active subscription, then the customer
// fields may or may not be present.
isCustomerSubscriptionActive: false
}
)
You can find this secret key in your Agentic project's dashboard settings.
</ResponseField> <ResponseField name='x-agentic-customer-id' type='string'> The ID of the customer in Agentic's database. </ResponseField><ResponseField name='x-agentic-is-customer-subscription-active' type='string' required default='false'
Whether the customer has an active subscription. Will be either true or
false.
</ResponseField>
<ResponseField name='x-agentic-customer-subscription-status' type='string' required default='incomplete'
The Stripe status of the customer's subscription.
Possible values are incomplete, incomplete_expired, trialing, active, past_due, canceled, unpaid, or paused.
<ResponseField name='x-agentic-customer-subscription-plan' type='string' required default='free'
The slug of the customer's subscription pricing plan. </ResponseField>
<ResponseField name='x-agentic-user-id' type='string'> The ID of the user in Agentic's database. </ResponseField> <ResponseField name='x-agentic-user-email' type='string'> The email of the user in Agentic's database. </ResponseField> <ResponseField name='x-agentic-user-username' type='string'> The username of the user in Agentic's database. </ResponseField> <ResponseField name='x-agentic-user-name' type='string'> The name of the user in Agentic's database. </ResponseField> <ResponseField name='x-agentic-user-created-at' type='string'> The date and time the user was created in Agentic's database. </ResponseField> <ResponseField name='x-agentic-user-updated-at' type='string'> The date and time the user was last updated in Agentic's database. </ResponseField> <ResponseField name='x-agentic-project-id' type='string' required> The ID of the project in Agentic's database. (`proj_...`) </ResponseField> <ResponseField name='x-agentic-project-identifier' type='string' required> The public identifier of the target project in Agentic's database. (`@username/project-name`) </ResponseField> <ResponseField name='x-agentic-deployment-id' type='string' required> The ID of the target deployment in Agentic's database. (`depl_...`) </ResponseField> <ResponseField name='x-agentic-deployment-identifier' type='string' required> The public identifier of the target deployment in Agentic's database. (`@username/project-name@<deployment-hash>`) </ResponseField> </Tab> </Tabs>If a customer doesn't provide an API key for their MCP or HTTP call, Agentic's MCP Gateway will default them to your project's free pricing plan with isCustomerSubscriptionActive set to false.
This means they'll be subject to your project's free pricing plan's rate limits, which is important to protect your origin server from abuse.