Connector

Axis connector documentation

Catalog 1.6.0 · MCP protocol 2025-06-18 · Generated from the public tool catalog

What Axis is

Axis is a personal life-management app. You keep your tasks, projects, notes, calendar, habits, goals, journal, health and fitness logs, and personal finances in one account at axisproductivityapp.com.

The Axis connector is a remote Model Context Protocol (MCP) server. It lets an AI assistant such as Claude, ChatGPT or Grok Bot read and update your own Axis account, but only in the areas you approve when you connect. Anything the assistant creates or changes shows up in Axis right away, just as if you had done it yourself in the app.

Server URLhttps://axisproductivityapp.com/mcp
TransportStreamable HTTP
MCP protocol version2025-06-18
AuthenticationOAuth 2.1: authorization code + PKCE (S256), with dynamic client registration
Tools147 (47 read-only, 100 write, 58 of the writes marked destructive)
Catalog version1.6.0

Before you start: you need an Axis account. You can sign up at axisproductivityapp.com with email, Google, or Apple. The connector only ever acts on the account you sign in with.

What the connector cannot do, by design:

How to connect

Claude

Claude opens Axis in your browser. Sign in, pick your scopes on the consent screen, and approve. Claude asks before it runs any tool marked destructive.

ChatGPT

ChatGPT registers itself with Axis automatically, so you don’t need a client ID or secret. Then it sends you to the Axis sign-in and consent screen. Each connector id has its own callback address; registration stores that exact address.

Grok Bot

Install the Axis plugin from the Grok Bot marketplace and connect the axis server. Grok Bot opens Axis so you can sign in and choose your scopes.

Any other MCP client

Point the client at https://axisproductivityapp.com/mcp using streamable HTTP. Any client that supports MCP authorization (protected-resource metadata, dynamic client registration, PKCE) can connect without extra setup. Here is a typical config:

{
  "mcpServers": {
    "axis": { "type": "http", "url": "https://axisproductivityapp.com/mcp" }
  }
}

How sign-in works (OAuth)

  1. Discovery. A call without a token returns 401 with a WWW-Authenticate challenge. The challenge points to the protected-resource metadata at https://axisproductivityapp.com/.well-known/oauth-protected-resource/mcp, which names https://axisproductivityapp.com as the authorization server. Its metadata lives at /.well-known/oauth-authorization-server.
  2. Client registration. The assistant registers itself at POST /oauth/register (RFC 7591 dynamic client registration). It registers as a public client (token_endpoint_auth_method: none), so no client secret is ever issued or stored in a package.
  3. Authorization. The assistant opens /oauth/authorize with PKCE (S256 is the only method accepted). You sign in to Axis, review the scopes it asked for, untick any you don’t want, and approve.
  4. Tokens. The assistant trades the code at /oauth/token. It gets an access token (prefix axis_ct_) and a refresh token (prefix axis_rt_). Supported grants: authorization_code and refresh_token.
  5. Calls. Every MCP request carries Authorization: Bearer axis_ct_…. These tokens work only at /mcp. They aren’t a login to the Axis app or the rest of the Axis API.
  6. Revoking access. Open Settings → Agent access in Axis and revoke the connection. Both the access and refresh tokens stop working immediately. You can also delete your whole account from Settings → Account.

Data access and scopes

Read and write are separate for every area. If a tool needs a scope you didn’t grant, it returns an “insufficient scope” error rather than any data. To change what you granted, disconnect and reconnect, then choose again on the consent screen.

ScopeLets the assistant
tasks:readList and find tasks. Also unlocks the account-wide search and changes_since (both return only the areas you granted)
tasks:writeCreate, edit, complete and trash tasks
projects:read / projects:writeRead / change projects, project board cards and milestones
notes:read / notes:writeRead / change Library pages, databases, attachments (read only), comments, revisions and Workspace pages
calendar:read / calendar:writeRead Axis events, selected Google Calendar events and classes / change Axis events and classes (Google events stay read-only)
routines:read / routines:writeRead / change and check off habits
goals:read / goals:writeRead / change goals
checkin:read / checkin:writeRead / add “Where I’m At” check-ins
journal:read / journal:writeRead / write daily journal entries
people:read / people:writeRead / change your people list and log interactions
dates:read / dates:writeRead / change your date log and date wishlist
health:read / health:writeRead / log workouts, body and health metrics (weight, sleep, resting heart rate and so on), activities and run routes
finance:read / finance:writeRead balances, transactions, saved finance records, spend bonuses and card benefits / edit saved finance records. Never moves money. Not pre-selected
library:read / library:writeRead / change books, movies and the content pipeline. This is separate from Library notes, which use notes:*
brainstorm:read / brainstorm:writeRead / change mind maps
ops:read / ops:writeRead / change areas of responsibility, retainers and their checklists, inventory, reminders and saved filters
domains:readRead your life domains (there is no write scope for domains)
webhooks:readList webhooks registered for this connection
webhooks:writeRegister and remove webhooks that send account changes to a URL you choose. A connection that already has write can still list

If the assistant doesn’t ask for specific scopes, the consent screen pre-selects tasks:read, tasks:write, projects:read and notes:read. Finance and health are never pre-selected.

Where your data goes. Tool results go only to the assistant you connected. Axis doesn’t use your data to train models and doesn’t sell it. What the assistant does with your conversation is covered by that product’s own terms. Axis keeps an audit log of every connector call, whether it was allowed, denied or failed. For full details, see the Privacy Policy, section 5a.

Tool overview

Every tool has a title and explicit readOnlyHint, destructiveHint and openWorldHint annotations. The tables below are generated from catalog 1.6.0.

Conventions for every tool:

Tasks

ToolWhat it doesTypeScope
list_tasksList tasksReadtasks:read
find_task_by_numberFind task by numberReadtasks:read
create_taskCreate taskWritetasks:write
update_taskUpdate taskWrite, destructivetasks:write
complete_taskComplete taskWrite, destructivetasks:write
delete_taskDelete taskWrite, destructivetasks:write
list_domainsList domainsReaddomains:read
list_saved_filtersList saved filtersReadops:read

Projects, boards and milestones

ToolWhat it doesTypeScope
list_projectsList projectsReadprojects:read
create_projectCreate projectWriteprojects:write
update_projectUpdate projectWrite, destructiveprojects:write
delete_projectDelete projectWrite, destructiveprojects:write
list_project_tasksList project tasksReadprojects:read
create_project_taskCreate project taskWriteprojects:write
update_project_taskUpdate project taskWrite, destructiveprojects:write
list_milestonesList milestonesReadprojects:read
create_milestoneCreate milestoneWriteprojects:write
update_milestoneUpdate milestoneWrite, destructiveprojects:write

Notes, Library databases and comments

ToolWhat it doesTypeScope
search_notesSearch notesReadnotes:read
list_notesList notesReadnotes:read
get_noteGet noteReadnotes:read
read_attachmentRead attachmentReadnotes:read
list_note_revisionsList note revisionsReadnotes:read
create_noteCreate noteWritenotes:write
update_noteUpdate noteWrite, destructive (body replaces the whole page)notes:write
add_chartAdd chartWritenotes:write
add_mapAdd mapWritenotes:write
duplicate_noteDuplicate noteWritenotes:write
delete_noteDelete noteWrite, destructivenotes:write
query_databaseQuery databaseReadnotes:read
create_databaseCreate databaseWritenotes:write
update_databaseUpdate databaseWrite, destructivenotes:write
list_commentsList commentsReadnotes:read
add_commentAdd commentWritenotes:write
resolve_commentResolve commentWrite, destructivenotes:write

Workspace pages

ToolWhat it doesTypeScope
list_workspace_pagesList workspace pagesReadnotes:read
list_workspace_blocksList workspace blocksReadnotes:read
create_workspace_blockCreate workspace blockWritenotes:write
update_workspace_blockUpdate workspace blockWrite, destructivenotes:write

Calendar and classes

ToolWhat it doesTypeScope
list_eventsList eventsReadcalendar:read
create_eventCreate eventWritecalendar:write
update_eventUpdate eventWrite, destructivecalendar:write
delete_eventDelete eventWrite, destructivecalendar:write
list_classesList classesReadcalendar:read
create_classCreate classWritecalendar:write
update_classUpdate classWrite, destructivecalendar:write
delete_classDelete classWrite, destructivecalendar:write

Reminders

ToolWhat it doesTypeScope
list_remindersList remindersReadops:read
create_reminderCreate reminderWriteops:write
cancel_reminderCancel reminderWrite, destructive (removes the reminder outright (no Trash))ops:write

Habits (routines)

ToolWhat it doesTypeScope
list_routinesList routinesReadroutines:read
create_routineCreate routineWriteroutines:write
update_routineUpdate routineWrite, destructiveroutines:write
complete_routineComplete routineWrite, destructiveroutines:write
delete_routineDelete routineWrite, destructiveroutines:write

Goals and check-ins

ToolWhat it doesTypeScope
list_goalsList goalsReadgoals:read
create_goalCreate goalWritegoals:write
update_goalUpdate goalWrite, destructivegoals:write
delete_goalDelete goalWrite, destructivegoals:write
list_checkinsList checkinsReadcheckin:read
log_checkinLog checkinWritecheckin:write

Journal

ToolWhat it doesTypeScope
get_journalGet journalReadjournal:read
write_journalWrite journalWrite, destructive (mode "replace" overwrites the day’s entry)journal:write

People and dates

ToolWhat it doesTypeScope
list_peopleList peopleReadpeople:read
create_personCreate personWritepeople:write
update_personUpdate personWrite, destructivepeople:write
delete_personDelete personWrite, destructivepeople:write
log_interactionLog interactionWritepeople:write
list_datesList datesReaddates:read
create_dateCreate dateWritedates:write
update_dateUpdate dateWrite, destructivedates:write
delete_dateDelete dateWrite, destructivedates:write

Health and fitness

ToolWhat it doesTypeScope
list_workoutsList workoutsReadhealth:read
log_workoutLog workoutWritehealth:write
list_metricsList metricsReadhealth:read
log_metricLog metricWritehealth:write
list_activitiesList activitiesReadhealth:read
log_activityLog activityWritehealth:write
list_run_routesList run routesReadhealth:read
update_run_routeUpdate run routeWrite, destructivehealth:write

Finance

Each saved finance record has its own tool. These tools edit records stored in Axis. They do not move money.

ToolWhat it doesTypeScope
list_accountsList accountsReadfinance:read
list_transactionsList transactionsReadfinance:read
list_finance_recordsList finance recordsReadfinance:read
create_manual_accountCreate manual accountWritefinance:write
update_manual_accountUpdate manual accountWrite, destructivefinance:write
create_manual_transactionCreate manual transactionWritefinance:write
update_manual_transactionUpdate manual transactionWrite, destructivefinance:write
update_bank_transactionUpdate bank transactionWrite, destructivefinance:write
create_budgetCreate budgetWritefinance:write
update_budgetUpdate budgetWrite, destructivefinance:write
create_savings_goalCreate savings goalWritefinance:write
update_savings_goalUpdate savings goalWrite, destructivefinance:write
create_finance_categoryCreate finance categoryWritefinance:write
update_finance_categoryUpdate finance categoryWrite, destructivefinance:write
create_finance_ruleCreate finance ruleWritefinance:write
update_finance_ruleUpdate finance ruleWrite, destructivefinance:write
create_credit_cardCreate credit cardWritefinance:write
update_credit_cardUpdate credit cardWrite, destructivefinance:write
create_card_benefitCreate card benefitWritefinance:write
update_card_benefitUpdate card benefitWrite, destructivefinance:write
create_card_rewardCreate card rewardWritefinance:write
update_card_rewardUpdate card rewardWrite, destructivefinance:write
create_recurring_overrideCreate recurring overrideWritefinance:write
update_recurring_overrideUpdate recurring overrideWrite, destructivefinance:write
list_spend_bonusesList spend bonusesReadfinance:read
get_spend_bonus_progressGet spend bonus progressReadfinance:read
create_spend_bonusCreate spend bonusWritefinance:write
update_spend_bonusUpdate spend bonusWrite, destructivefinance:write
delete_spend_bonusDelete spend bonusWrite, destructive (permanent delete)finance:write
list_card_benefitsList card benefitsReadfinance:read
set_card_benefit_usageSet card benefit usageWrite, destructivefinance:write

Books, movies and content

ToolWhat it doesTypeScope
list_booksList booksReadlibrary:read
create_bookCreate bookWritelibrary:write
update_bookUpdate bookWrite, destructivelibrary:write
delete_bookDelete bookWrite, destructivelibrary:write
list_moviesList moviesReadlibrary:read
create_movieCreate movieWritelibrary:write
update_movieUpdate movieWrite, destructivelibrary:write
delete_movieDelete movieWrite, destructivelibrary:write
list_content_itemsList content itemsReadlibrary:read
create_content_itemCreate content itemWritelibrary:write
update_content_itemUpdate content itemWrite, destructivelibrary:write
delete_content_itemDelete content itemWrite, destructivelibrary:write

Brainstorms (mind maps)

ToolWhat it doesTypeScope
list_brainstormsList brainstormsReadbrainstorm:read
get_brainstormGet brainstormReadbrainstorm:read
create_brainstormCreate brainstormWritebrainstorm:write
update_brainstormUpdate brainstormWrite, destructivebrainstorm:write
delete_brainstormDelete brainstormWrite, destructivebrainstorm:write

Areas, retainers and inventory

ToolWhat it doesTypeScope
list_areasList areasReadops:read
create_areaCreate areaWriteops:write
update_areaUpdate areaWrite, destructiveops:write
delete_areaDelete areaWrite, destructiveops:write
list_retainersList retainersReadops:read
create_retainerCreate retainerWriteops:write
update_retainerUpdate retainerWrite, destructiveops:write
delete_retainerDelete retainerWrite, destructiveops:write
list_retainer_tasksList retainer tasksReadops:read
complete_retainer_taskComplete retainer taskWrite, destructiveops:write
list_inventory_itemsList inventory itemsReadops:read
create_inventory_itemCreate inventory itemWriteops:write
update_inventory_itemUpdate inventory itemWrite, destructiveops:write
delete_inventory_itemDelete inventory itemWrite, destructiveops:write

Account-wide search, sync and webhooks

ToolWhat it doesTypeScope
searchSearchReadtasks:read
changes_sinceChanges sinceReadtasks:read
register_webhookRegister webhookWrite, open-worldwebhooks:write
list_webhooksList webhooksReadwebhooks:read
delete_webhookDelete webhookWrite, destructive (removes the webhook; deliveries stop)webhooks:write

Example prompts

Limits

LimitValue
Tool calls1,000 per token per day
Write calls200 per token per day
Daily resetMidnight UTC (8 PM Eastern during daylight time, 7 PM in winter)
New OAuth client registrations (/oauth/register)20 per hour per IP address, with a 20,000-per-day ceiling across all clients. Known Claude and ChatGPT egress addresses get a higher allowance, so directory installs aren’t blocked
Over a limit429 Too Many Requests with a Retry-After header
Result sizesList tools default to 50 rows. Caps vary by tool (for example, 200 tasks or 500 database rows), and each tool’s input schema states its cap
changes_sinceUp to 100 changes per area per call. Pass the returned cursor to continue

Troubleshooting

SymptomWhat to do
401 Unauthorized / “Send a connector access token”The assistant isn’t signed in, or its token expired and couldn’t be refreshed. Reconnect Axis in the assistant. Tokens look like axis_ct_… (access) and axis_rt_… (refresh)
A tool says the scope isn’t grantedYou left that area unticked on the consent screen. Disconnect, reconnect, and tick it
Connecting fails right after you approveMake sure you approved in the same browser where you started. Retry once. If you see 429, wait for the Retry-After time
“Token refused” after using Axis elsewhereConnector tokens work only at https://axisproductivityapp.com/mcp. They aren’t accepted by other Axis endpoints, and app logins aren’t accepted here
A connection stopped workingCheck Settings → Agent access. If it was revoked there, connect again
A write was refused as stale or conflictingThe record changed since the assistant last read it. Ask the assistant to read it again and retry
Calendar looks incompletelist_events reports google_status. If it says unavailable, not_connected or partial, reconnect Google Calendar from Settings → Integration health in Axis
Something was deleted by mistakeMost deletes are soft. Restore the item from Settings → Trash in Axis
Daily limit reachedLimits reset at midnight UTC

Still stuck? Email the address on the Support page. Tell us which assistant you used, what you asked, and roughly when (with your time zone).

Links