Account
The key's owner, the tokens campaigns pay out in, and the server clock.
3 endpoints, generated from openapi.yaml. New to the API? Start with the Overview.
Which account the key acts as, the tokens campaigns can pay out in, and the server clock.
https://app.airaa.xyzEvery tool is a POST to /api/ai/mcp/tools/{tool}/execute with arguments wrapped in an args object, authorised with Authorization: Bearer airaa_<key>.
get_user_info
Get user info
Which account is this key acting as?
The key owner's own profile: name, username, bio, niches, connected social accounts, X profile details, wallets, primary wallet address and display country.
Arguments
No arguments. Send {"args": {}}.
Returns
Fields inside result.
idstringemailstring | nullnamestring | nullusernamestringbiostring | nullphotoUrlstring | nulltwitterProfileIdstring | nullId of the connected X profile, the same value as profile.id.
profileTwitterProfile | nulluserNichearray of stringNiches the key owner picked during onboarding or later on their profile page.
primaryWalletAddressstring | nulltotalBalancestring | nullPortfolio value across wallets. Decimal string.
walletsarray of Walletaccountsarray of ConnectedAccountlocationUserLocation | nullDisplay country only, from the last known request IP.
isAiraaCreatorbooleanTrue if this account is listed under Airaa certified creators when a brand picks who can join a campaign.
createdAtstringupdatedAtstringErrors
400An argument is missing or failed validation; the message names the field. Also returned when a required projectId is omitted.401The key is missing or not valid.403The key is valid but you do not administer that community.404No such tool, or no campaign with that id.429Too many requests. Tool execution is limited to 120 calls per minute per user.
Request
curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/get_user_info/execute \
-H "Authorization: Bearer $AIRAA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"args": {}}'const res = await fetch("https://app.airaa.xyz/api/ai/mcp/tools/get_user_info/execute", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AIRAA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"args": {}
}),
});
const { result } = await res.json();import os
import requests
res = requests.post(
"https://app.airaa.xyz/api/ai/mcp/tools/get_user_info/execute",
headers={"Authorization": f"Bearer {os.environ['AIRAA_API_KEY']}"},
json={
"args": {}
},
)
res.raise_for_status()
result = res.json()["result"]Response
{
"result": {
"id": "d3b71f68-92a4-4c05-8e37-6b1902ac4f5d",
"email": "priya@lumenlabs.com",
"name": "Priya R.",
"username": "priyanotes",
"bio": "Building Lumen Labs.",
"photoUrl": "https://cdn.airaa.xyz/users/priya.jpg",
"twitterProfileId": "aa10f39c-6d54-4b82-9e07-1c8b45a2f36d",
"profile": {
"id": "aa10f39c-6d54-4b82-9e07-1c8b45a2f36d",
"externalId": "1487200364115738624",
"name": "Priya R.",
"username": "priyanotes",
"url": "https://x.com/priyanotes",
"description": "Building Lumen Labs.",
"profileImageUrl": "https://cdn.airaa.xyz/users/priya-x.jpg",
"followersCount": 12400,
"followingCount": 641,
"profileCreatedAt": "2022-01-29T11:04:00.000Z",
"contentCount": 3182,
"accountBasedIn": "United States"
},
"userNiche": [
"Tech",
"Business"
],
"primaryWalletAddress": "0x7a2f19c48b0d6e35a1c9f803b7e24d6015c8ab39",
"totalBalance": "8412.77",
"wallets": [
{
"address": "0x7a2f19c48b0d6e35a1c9f803b7e24d6015c8ab39",
"type": "EVM",
"isPrimary": true,
"projectSlug": null,
"updatedAt": "2026-08-19T07:41:52.000Z"
}
],
"accounts": [
{
"platformId": "6e2c81b4-3f97-40da-85c1-b70d924ef3a8",
"platformName": "Twitter/X",
"externalId": "1487200364115738624",
"externalUsername": "priyanotes",
"connectedAt": "2026-02-14T09:20:00.000Z"
}
],
"location": {
"country": "United States",
"countryCode": "US"
},
"isAiraaCreator": false,
"createdAt": "2026-02-14T09:18:31.000Z",
"updatedAt": "2026-08-19T07:41:52.000Z"
}
}get_tokens
List payout tokens
What tokens can campaigns pay out in?
Active payout tokens, of two kinds: ERC20 tokens paid on-chain, and POINTS tokens a community mints for itself. Setting projectId returns that community's token and causes the type filter to be ignored. Sending neither argument returns every active token.
Arguments
typeobjectToken type to fetch. Ignored when projectId is set.
projectIdstring | nullThe community id. Narrows the result to that community's token, and causes the type filter to be ignored.
Returns
Fields inside result.
idstringsymbolstringnamestringlogostring | nulladdressstring | nullERC20 contract address. Null for POINTS tokens.
chainIdstring | nullEVM chain id as a string. Null for POINTS tokens.
decimalsintegerstatusenumACTIVEINACTIVEtypeenumERC20POINTSErrors
400An argument is missing or failed validation; the message names the field. Also returned when a required projectId is omitted.401The key is missing or not valid.403The key is valid but you do not administer that community.404No such tool, or no campaign with that id.429Too many requests. Tool execution is limited to 120 calls per minute per user.
Request
curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/get_tokens/execute \
-H "Authorization: Bearer $AIRAA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"args": {"projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41"}}'const res = await fetch("https://app.airaa.xyz/api/ai/mcp/tools/get_tokens/execute", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AIRAA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"args": {
"projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41"
}
}),
});
const { result } = await res.json();import os
import requests
res = requests.post(
"https://app.airaa.xyz/api/ai/mcp/tools/get_tokens/execute",
headers={"Authorization": f"Bearer {os.environ['AIRAA_API_KEY']}"},
json={
"args": {
"projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41"
}
},
)
res.raise_for_status()
result = res.json()["result"]Response
{
"result": [
{
"id": "5c1a908e-47b3-4f26-90d8-e2f74b613a05",
"symbol": "USDC",
"name": "USD Coin",
"logo": "https://cdn.airaa.xyz/tokens/usdc.png",
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"chainId": "8453",
"decimals": 6,
"status": "ACTIVE",
"type": "ERC20"
},
{
"id": "b6c0e83f-4a71-4d92-8e15-3c7f9021ba64",
"symbol": "LUMEN",
"name": "Lumen Points",
"logo": "https://cdn.airaa.xyz/tokens/lumen.png",
"address": null,
"chainId": null,
"decimals": 0,
"status": "ACTIVE",
"type": "POINTS"
}
]
}get_current_datetime
Get the server clock
What time is it on the server?
The current date and time in UTC, or in any IANA timezone you name. Useful for building the startDate and endDate range that get_project_earnings_leaderboard requires.
Arguments
timezonestring | nullIANA timezone name (e.g. "America/New_York"). Defaults to UTC when not provided.
Returns
Fields inside result.
datetimestringtimezonestringErrors
400An argument is missing or failed validation; the message names the field. Also returned when a required projectId is omitted.401The key is missing or not valid.403The key is valid but you do not administer that community.404No such tool, or no campaign with that id.429Too many requests. Tool execution is limited to 120 calls per minute per user.
Request
curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/get_current_datetime/execute \
-H "Authorization: Bearer $AIRAA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"args": {"timezone": "America/New_York"}}'const res = await fetch("https://app.airaa.xyz/api/ai/mcp/tools/get_current_datetime/execute", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AIRAA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"args": {
"timezone": "America/New_York"
}
}),
});
const { result } = await res.json();import os
import requests
res = requests.post(
"https://app.airaa.xyz/api/ai/mcp/tools/get_current_datetime/execute",
headers={"Authorization": f"Bearer {os.environ['AIRAA_API_KEY']}"},
json={
"args": {
"timezone": "America/New_York"
}
},
)
res.raise_for_status()
result = res.json()["result"]Response
{
"result": {
"datetime": "2026-08-28T09:14:02.000-04:00",
"timezone": "America/New_York"
}
}