Skip to content

Connectors · Developer & infrastructure

Harbor MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Harbor and the rest of your systems. It gives your agent 197 Harbor actions (106 reads, 67 writes and 24 that wait for a confirmation) and holds the Harbor credential itself, so the agent never does. It paces Harbor's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "harbor.user.list_users",  intent: "check which Harbor account is connected"}# List users · read · 1 upstream call
  • 197actionsin one signed file
  • 106readlook, never change
  • 67writecreate and update
  • 24wait for a yesdestructive, confirmed first

Set up

Connect Harbor in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Harbor.

    Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • usernameHarbor username, or a robot account's full name (e.g. robot$library+ci)
    • passwordThe user's password (or OIDC CLI secret), or the robot account's secret
    • hostWhere your Harbor lives: your host
    account { op: "connections.requirements", service: "harbor" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "harbor.user.list_users" }# list users · read · 1 upstream callcheck { action: "harbor.user.create_user", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Harbor at a glance

Sign-in
Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
usernamepassword
Setup fields
host
Limits we pace to
20 calls a second, per connection
API covered
Harbor API v2.0 (Swagger 2.0, 2.0), at your Harbor instance's API base URL, which you enter when connecting (path /api/v2.0)
Built from
Harbor's documentation, read 23 October 2026OpenAPI spec (GitHub)goharbor.io
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
91 of 106 reads, for up to 5 minutes; a write clears what it affects
Shared entities
5, so ask can line Harbor up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Harbor.

197 actions in 38 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 106readlook, never change
  • 67writecreate and update
  • 24destructivewait for a confirmation
  1. Preheat

    18

    9 read · 7 write · 2 destructive

    Create p2p provider instances · Create a preheat policy under a project · List executions for the given policy · List P2P provider instances

  2. Project

    14

    10 read · 3 write · 1 destructive

    Create a new project. · Get recent logs of the projects · Get recent logs of the projects (deprecated) · List artifacts

  3. Artifact

    12

    6 read · 3 write · 3 destructive

    List artifacts · List tags · Create tag · Get the specific artifact

  4. User

    11

    5 read · 4 write · 2 destructive

    List users · Get current user info. · Create a local user. · Get a user's profile.

  5. Replication

    10

    5 read · 4 write · 1 destructive

    Create a replication policy · List replication executions · List replication policies · List replication tasks for a specific execution

  6. Registry

    9

    5 read · 3 write · 1 destructive

    Create a registry · List the registries · Get the specific registry · Update the registry

  7. Retention

    9

    4 read · 4 write · 1 destructive

    Create Retention Policy · Get Retention executions · Get Retention tasks · Trigger a Retention Execution

  8. Webhook

    9

    6 read · 2 write · 1 destructive

    Create project webhook policy. · Get project webhook policy last trigger info · List executions for a specific webhook policy · List tasks for a specific webhook execution

30 more areas · 105 actions
  • Scanner 8
  • GC 6
  • Purge 6
  • Robot 6
  • Scan all 6
  • Usergroup 6
  • Jobservice 5
  • Label 5
  • Member 5
  • Project metadata 5
  • Repository 5
  • Role 5
  • Immutable 4
  • Ldap 4
  • Auditlog 3
  • Configure 3
  • Quota 3
  • Scan data export 3
  • Scan 2
  • Schedule 2
  • Securityhub 2
  • System cve allowlist 2
  • Systeminfo 2
  • Health 1
  • Icon 1
  • Oidc 1
  • Permissions 1
  • Search 1
  • Statistic 1
  • Webhookjob 1

Top actions

The Harbor API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 37 of Harbor's 38 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
harbor.user.list_usersList usersList users.readidentity.user.list474 connectors
harbor.usergroup.list_user_groupsGet all user groups informationGet all user groups information.readidentity.group.list262 connectors
harbor.user.get_current_user_infoGet current user info.Get current user info.readidentity.current_user.get307 connectors
harbor.user.create_userCreate a local user.Create a local user.writeidentity.user.create262 connectors
harbor.robot.list_robotGet robot accountGet robot account.readidentity.service_account.list35 connectors
harbor.usergroup.create_user_groupCreate user groupCreate user group.writeidentity.group.create205 connectors
harbor.user.delete_userMark a registered user as be removed.Mark a registered user as be removed.destructiveidentity.user.delete253 connectors
harbor.repository.list_all_repositoriesList all authorized repositoriesList all authorized repositories.readdevops.repository.list28 connectors
harbor.robot.create_robotCreate a robot accountCreate a robot account.writeidentity.service_account.create32 connectors
harbor.role.list_roleGet rolesGet roles.readidentity.role.list184 connectors
harbor.role.create_roleCreate a roleCreate a role.writeidentity.role.create105 connectors
harbor.repository.get_repositoryGet repositoryGet repository.readdevops.repository.get26 connectors

Try it

Prompts to paste into Claude.

Each one names the Harbor actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    List our Harbor repositories with their visibility and default branch.

    callsharbor.repository.list_all_repositories

  2. Writewrite

    Create a local user in Harbor. Show me exactly what you will send before you save it.

    callsharbor.user.create_user

Governance for Harbor

Destructive actions wait for a yes.

24 Harbor actions are destructive. These are all of them:

  • Mark a registered user as be removed.harbor.user.delete_user
  • Delete user groupharbor.usergroup.delete_user_group
  • Delete a robot accountharbor.robot.delete_robot
  • Delete a role accountharbor.role.delete_role
  • Delete repositoryharbor.repository.delete_repository
  • Delete the specific artifactharbor.artifact.delete_artifact
  • Delete tagharbor.artifact.delete_tag
  • Delete the specific registryharbor.registry.delete_registry
  • Delete the label specified by ID.harbor.label.delete_label
  • Remove label from artifactharbor.artifact.remove_label
  • Delete a preheat policyharbor.preheat.delete_policy
  • Delete project by projectIDharbor.project.delete_project
  • Delete a scanner registrationharbor.scanner.delete_scanner
  • Delete the specified P2P provider instanceharbor.preheat.delete_instance
  • Update a registered user to change to be an administrator of Harbor.harbor.user.set_user_sys_admin
  • Delete the immutable tag rule.harbor.immutable.delete_immu_rule
  • Delete Retention Policyharbor.retention.delete_retention
  • Create a purge job schedule.harbor.purge.create_purge_schedule
  • Update purge job's schedule.harbor.purge.update_purge_schedule
  • Delete project memberharbor.member.delete_project_member
  • Delete the specific replication policyharbor.replication.delete_replication_policy
  • Delete the specific metadata for the specific projectharbor.project_metadata.delete_project_metadata
  • Delete webhook policy of a projectharbor.webhook.delete_webhook_policy_of_project
  • Stop the specific purge audit log executionharbor.purge.stop_purge

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

doharbor.user.delete_userconfirm_policy: human

Mark a registered user as be removed.?

intent: the user asked me to mark a registered user as be removed.

run suspended · waiting for a named person · key harbor-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "harbor-agent",  allowed_actions: ["harbor.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "harbor.user.delete_user", approver: "[email protected]" },    { match: "harbor.usergroup.delete_user_group", approver: "[email protected]" },    { match: "harbor.robot.delete_robot", approver: "[email protected]" }  ]}
Illustrative. Scoped to Harbor only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Harbor costs on actionlake.

Every Harbor action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Harbor refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 197 Harbor actions
  • 197actions pageeach page of a long list is one call
  • 91reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Harbor action.

197 actions by area: the id your agent calls, what it does, and its effect.

Preheat18
  • harbor.preheat.create_instanceCreate p2p provider instanceswrite
  • harbor.preheat.create_policyCreate a preheat policy under a projectwrite
  • harbor.preheat.delete_instanceDelete the specified P2P provider instancedestructive
  • harbor.preheat.delete_policyDelete a preheat policydestructive
  • harbor.preheat.get_executionGet an execution detail by idread
  • harbor.preheat.get_instanceGet a P2P provider instanceread
  • harbor.preheat.get_policyGet a preheat policyread
  • harbor.preheat.list_executionsList executions for the given policyread
  • harbor.preheat.list_instancesList P2P provider instancesread
  • harbor.preheat.list_policiesList preheat policiesread
  • harbor.preheat.list_providersList P2P providersread
  • harbor.preheat.list_providers_under_projectGet all providers at project levelread
  • harbor.preheat.list_tasksList all the related tasks for the given executionread
  • harbor.preheat.manual_preheatManual preheatwrite
  • harbor.preheat.ping_instancesPing status of an instance.write
  • harbor.preheat.stop_executionStop an executionwrite
  • harbor.preheat.update_instanceUpdate the specified P2P provider instancewrite
  • harbor.preheat.update_policyUpdate preheat policywrite
Project14
  • harbor.project.create_projectCreate a new project.write
  • harbor.project.delete_projectDelete project by projectIDdestructive
  • harbor.project.get_log_extsGet recent logs of the projectsread
  • harbor.project.get_logsGet recent logs of the projects (deprecated)read
  • harbor.project.get_projectReturn specific project detail informationread
  • harbor.project.get_project_deletableGet the deletable status of the projectread
  • harbor.project.get_project_summaryGet summary of the project.read
  • harbor.project.get_scanner_of_projectGet project level scannerread
  • harbor.project.head_projectCheck if the project name user provided already exists.read
  • harbor.project.list_artifacts_of_projectList artifactsread
  • harbor.project.list_projectsList projectsread
  • harbor.project.list_scanner_candidates_of_projectGet scanner registration candidates for configurating project level scannerread
  • harbor.project.set_scanner_of_projectConfigure scanner for the specified projectwrite
  • harbor.project.update_projectUpdate properties for a selected project.write
Artifact12
  • harbor.artifact.add_labelAdd label to artifactwrite
  • harbor.artifact.copy_artifactCopy artifactwrite
  • harbor.artifact.create_tagCreate tagwrite
  • harbor.artifact.delete_artifactDelete the specific artifactdestructive
  • harbor.artifact.delete_tagDelete tagdestructive
  • harbor.artifact.get_additionGet the addition of the specific artifactread
  • harbor.artifact.get_artifactGet the specific artifactread
  • harbor.artifact.get_vulnerabilities_additionGet the vulnerabilities addition of the specific artifactread
  • harbor.artifact.list_accessoriesList accessoriesread
  • harbor.artifact.list_artifactsList artifactsread
  • harbor.artifact.list_tagsList tagsread
  • harbor.artifact.remove_labelRemove label from artifactdestructive
User11
  • harbor.user.create_userCreate a local user.write
  • harbor.user.delete_userMark a registered user as be removed.destructive
  • harbor.user.get_current_user_infoGet current user info.read
  • harbor.user.get_current_user_permissionsGet current user permissions.read
  • harbor.user.get_userGet a user's profile.read
  • harbor.user.list_usersList usersread
  • harbor.user.search_usersSearch users by usernameread
  • harbor.user.set_cli_secretSet CLI secret for a user.write
  • harbor.user.set_user_sys_adminUpdate a registered user to change to be an administrator of Harbor.destructive
  • harbor.user.update_user_passwordChange the password on a user that already exists.write
  • harbor.user.update_user_profileUpdate user's profile.write
Replication10
  • harbor.replication.create_replication_policyCreate a replication policywrite
  • harbor.replication.delete_replication_policyDelete the specific replication policydestructive
  • harbor.replication.get_replication_executionGet the specific replication executionread
  • harbor.replication.get_replication_policyGet the specific replication policyread
  • harbor.replication.list_replication_executionsList replication executionsread
  • harbor.replication.list_replication_policiesList replication policiesread
  • harbor.replication.list_replication_tasksList replication tasks for a specific executionread
  • harbor.replication.start_replicationStart one replication executionwrite
  • harbor.replication.stop_replicationStop the specific replication executionwrite
  • harbor.replication.update_replication_policyUpdate the replication policywrite
Registry9
  • harbor.registry.create_registryCreate a registrywrite
  • harbor.registry.delete_registryDelete the specific registrydestructive
  • harbor.registry.get_registryGet the specific registryread
  • harbor.registry.get_registry_infoGet the registry inforead
  • harbor.registry.list_registriesList the registriesread
  • harbor.registry.list_registry_provider_infosList all registered registry provider informationread
  • harbor.registry.list_registry_provider_typesList registry adaptersread
  • harbor.registry.ping_registryCheck status of a registrywrite
  • harbor.registry.update_registryUpdate the registrywrite
Retention9
  • harbor.retention.create_retentionCreate Retention Policywrite
  • harbor.retention.delete_retentionDelete Retention Policydestructive
  • harbor.retention.get_rentenition_metadataGet Retention Metadatasread
  • harbor.retention.get_retentionGet Retention Policyread
  • harbor.retention.list_retention_executionsGet Retention executionsread
  • harbor.retention.list_retention_tasksGet Retention tasksread
  • harbor.retention.operate_retention_executionStop a Retention executionwrite
  • harbor.retention.trigger_retention_executionTrigger a Retention Executionwrite
  • harbor.retention.update_retentionUpdate Retention Policywrite
Webhook9
  • harbor.webhook.create_webhook_policy_of_projectCreate project webhook policy.write
  • harbor.webhook.delete_webhook_policy_of_projectDelete webhook policy of a projectdestructive
  • harbor.webhook.get_supported_event_typesGet supported event types and notify types.read
  • harbor.webhook.get_webhook_policy_of_projectGet project webhook policyread
  • harbor.webhook.last_triggerGet project webhook policy last trigger inforead
  • harbor.webhook.list_executions_of_webhook_policyList executions for a specific webhook policyread
  • harbor.webhook.list_tasks_of_webhook_executionList tasks for a specific webhook executionread
  • harbor.webhook.list_webhook_policies_of_projectList project webhook policies.read
  • harbor.webhook.update_webhook_policy_of_projectUpdate webhook policy of a project.write
Scanner8
  • harbor.scanner.create_scannerCreate a scanner registrationwrite
  • harbor.scanner.delete_scannerDelete a scanner registrationdestructive
  • harbor.scanner.get_scannerGet a scanner registration detailsread
  • harbor.scanner.get_scanner_metadataGet the metadata of the specified scanner registrationread
  • harbor.scanner.list_scannersList scanner registrationsread
  • harbor.scanner.ping_scannerTests scanner registration settingswrite
  • harbor.scanner.set_scanner_as_defaultSet system default scanner registrationwrite
  • harbor.scanner.update_scannerUpdate a scanner registrationwrite
GC6
  • harbor.gc.create_gc_scheduleCreate a gc schedule.write
  • harbor.gc.get_gcGet gc status.read
  • harbor.gc.get_gc_historyGet gc results.read
  • harbor.gc.get_gc_scheduleGet gc's schedule.read
  • harbor.gc.stop_gcStop the specific GC executionwrite
  • harbor.gc.update_gc_scheduleUpdate gc's schedule.write
Purge6
  • harbor.purge.create_purge_scheduleCreate a purge job schedule.destructive
  • harbor.purge.get_purge_historyGet purge job results.read
  • harbor.purge.get_purge_jobGet purge job status.read
  • harbor.purge.get_purge_scheduleGet purge's schedule.read
  • harbor.purge.stop_purgeStop the specific purge audit log executiondestructive
  • harbor.purge.update_purge_scheduleUpdate purge job's schedule.destructive
Robot6
  • harbor.robot.create_robotCreate a robot accountwrite
  • harbor.robot.delete_robotDelete a robot accountdestructive
  • harbor.robot.get_robot_by_idGet a robot accountread
  • harbor.robot.list_robotGet robot accountread
  • harbor.robot.refresh_secRefresh the robot secretwrite
  • harbor.robot.update_robotUpdate a robot accountwrite
Scan all6
  • harbor.scan_all.create_scan_all_scheduleCreate a schedule or a manual trigger for the scan all job.write
  • harbor.scan_all.get_latest_scan_all_metricsGet the metrics of the latest scan all processread
  • harbor.scan_all.get_latest_scheduled_scan_all_metricsGet the metrics of the latest scheduled scan all processread
  • harbor.scan_all.get_scan_all_scheduleGet scan all's schedule.read
  • harbor.scan_all.stop_scan_allStop scanAll job executionwrite
  • harbor.scan_all.update_scan_all_scheduleUpdate scan all's schedule.write
Usergroup6
  • harbor.usergroup.create_user_groupCreate user groupwrite
  • harbor.usergroup.delete_user_groupDelete user groupdestructive
  • harbor.usergroup.get_user_groupGet user group informationread
  • harbor.usergroup.list_user_groupsGet all user groups informationread
  • harbor.usergroup.search_user_groupsSearch groups by groupnameread
  • harbor.usergroup.update_user_groupUpdate group informationwrite
Jobservice5
  • harbor.jobservice.action_pending_jobsstop and clean, pause, resume pending jobs in the queuewrite
  • harbor.jobservice.get_worker_poolsGet worker poolsread
  • harbor.jobservice.get_workersGet workersread
  • harbor.jobservice.list_job_queueslist job queuesread
  • harbor.jobservice.stop_running_jobStop running jobwrite
Label5
  • harbor.label.create_labelPost creates a labelwrite
  • harbor.label.delete_labelDelete the label specified by ID.destructive
  • harbor.label.get_label_by_idGet the label specified by ID.read
  • harbor.label.list_labelsList labels according to the query strings.read
  • harbor.label.update_labelUpdate the label properties.write
Member5
  • harbor.member.create_project_memberCreate project memberwrite
  • harbor.member.delete_project_memberDelete project memberdestructive
  • harbor.member.get_project_memberGet the project member informationread
  • harbor.member.list_project_membersGet all project member informationread
  • harbor.member.update_project_memberUpdate project memberwrite
Project metadata5
  • harbor.project_metadata.add_project_metadatasAdd metadata for the specific projectwrite
  • harbor.project_metadata.delete_project_metadataDelete the specific metadata for the specific projectdestructive
  • harbor.project_metadata.get_project_metadataGet the specific metadata of the specific projectread
  • harbor.project_metadata.list_project_metadatasGet the metadata of the specific projectread
  • harbor.project_metadata.update_project_metadataUpdate the specific metadata for the specific projectwrite
Repository5
  • harbor.repository.delete_repositoryDelete repositorydestructive
  • harbor.repository.get_repositoryGet repositoryread
  • harbor.repository.list_all_repositoriesList all authorized repositoriesread
  • harbor.repository.list_repositoriesList repositoriesread
  • harbor.repository.update_repositoryUpdate repositorywrite
Role5
  • harbor.role.create_roleCreate a rolewrite
  • harbor.role.delete_roleDelete a role accountdestructive
  • harbor.role.get_role_by_idGet a roleread
  • harbor.role.list_roleGet rolesread
  • harbor.role.update_roleUpdate a role accountwrite
Immutable4
  • harbor.immutable.create_immu_ruleAdd an immutable tag rule to current projectwrite
  • harbor.immutable.delete_immu_ruleDelete the immutable tag rule.destructive
  • harbor.immutable.list_immu_rulesList all immutable tag rules of current projectread
  • harbor.immutable.update_immu_ruleUpdate the immutable tag rule or enable or disable the rulewrite
Ldap4
  • harbor.ldap.import_ldap_userImport selected available ldap users.write
  • harbor.ldap.ping_ldapPing available ldap service.write
  • harbor.ldap.search_ldap_groupSearch available ldap groups.read
  • harbor.ldap.search_ldap_userSearch available ldap users.read
Auditlog3
  • harbor.auditlog.list_audit_log_event_typesGet all event types of audit logread
  • harbor.auditlog.list_audit_log_extsGet recent logs of the projects which the user is a member with project_admin role, or return all audit logs for system admin userread
  • harbor.auditlog.list_audit_logsGet recent logs of projects which the user is a member with project admin role, or return all audit logs for system admin user (deprecated)read
Configure3
  • harbor.configure.get_configurationsGet system configurations.read
  • harbor.configure.get_internalconfigGet internal configurations.read
  • harbor.configure.update_configurationsModify system configurations.write
Quota3
  • harbor.quota.get_quotaGet the specified quotaread
  • harbor.quota.list_quotasList quotasread
  • harbor.quota.update_quotaUpdate the specified quotawrite
Scan data export3
  • harbor.scan_data_export.export_scan_dataExport scan data for selected projectswrite
  • harbor.scan_data_export.get_scan_data_export_executionGet the specific scan data export executionread
  • harbor.scan_data_export.get_scan_data_export_execution_listGet a list of specific scan data export execution jobs for a specified userread
Scan2
  • harbor.scan.scan_artifactScan the artifactwrite
  • harbor.scan.stop_scan_artifactCancelling a scan job for a particular artifactwrite
Schedule2
  • harbor.schedule.get_schedule_pausedGet scheduler paused statusread
  • harbor.schedule.list_schedulesList schedulesread
Securityhub2
  • harbor.securityhub.get_security_summaryGet vulnerability system summaryread
  • harbor.securityhub.list_vulnerabilitiesGet the vulnerability list.read
System cve allowlist2
  • harbor.system_cve_allowlist.get_system_cve_allowlistGet the system level allowlist of CVE.read
  • harbor.system_cve_allowlist.put_system_cve_allowlistUpdate the system level allowlist of CVE.write
Systeminfo2
  • harbor.systeminfo.get_system_infoGet general system inforead
  • harbor.systeminfo.get_volumesGet system volume info (total/free size).read
Health1
  • harbor.health.get_healthCheck the status of Harbor componentsread
Icon1
  • harbor.icon.get_iconGet artifact iconread
Oidc1
  • harbor.oidc.ping_oidcTest the OIDC endpoint.write
Permissions1
  • harbor.permissions.get_permissionsGet system or project level permissions info.read
Search1
  • harbor.search.searchSearch for projects and repositoriesread
Statistic1
  • harbor.statistic.get_statisticGet the statistic information about the projects and repositoriesread
Webhookjob1
  • harbor.webhookjob.list_webhook_jobsList project webhook jobsread

Questions

The Harbor MCP server, answered.

Is there a Harbor MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 197 Harbor actions across preheat, project, artifact and user, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Harbor.

What do I need to connect Harbor?

Harbor username, or a robot account's full name (e.g. robot$library+ci) and The user's password (or OIDC CLI secret), or the robot account's secret. Plus your host. The free call account { op: "connections.requirements", service: "harbor" } lists exactly what to paste.

Can an AI agent delete or change things in Harbor?

Only if its key allows it, and only with an explicit confirmation. 24 Harbor actions are destructive, including mark a registered user as be removed., delete user group and delete a robot account. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Harbor API limit?

actionlake paces every call to the limits in the Harbor service file: 20 calls a second per connection. Repeated reads are answered from cache (91 Harbor actions can be), which never reaches Harbor.

What does a Harbor action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (197 Harbor actions page). Cache hits, searches, dry runs and calls Harbor refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Harbor API does it cover?

The Harbor API v2.0 (Swagger 2.0, 2.0) at your Harbor instance's API base URL, which you enter when connecting (path /api/v2.0). It is built from Harbor's documentation as read on 23 October 2026. 197 actions in 38 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Harbor data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Harbor credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Harbor today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.