{
  "schemaVersion": 1,
  "app": {
    "id": "pro.tasktime",
    "name": "TaskTime Pro",
    "category": "task-time-invoicing",
    "localFirst": true,
    "coreUseAccountRequired": false,
    "coreUseFree": true,
    "offlineCapable": true,
    "openSource": true,
    "workDataStorage": "browser-local",
    "aggregateUsageMetrics": true
  },
  "clawHub": {
    "owner": "tasktimepro",
    "slug": "tasktime-agent",
    "canonicalRef": "@tasktimepro/tasktime-agent",
    "sourceRepository": "https://github.com/tasktimepro/tasktime",
    "sourcePath": "integrations/openclaw/tasktime/skills/tasktime"
  },
  "docs": {
    "llmsTxt": "https://tasktime.pro/llms.txt",
    "agentDocs": "https://tasktime.pro/agents/",
    "quickstart": "https://tasktime.pro/agents/quickstart/",
    "security": "https://tasktime.pro/agents/security/",
    "tools": "https://tasktime.pro/agents/tools/",
    "mcpToolsJson": "https://tasktime.pro/agents/mcp-tools.json",
    "skill": "https://tasktime.pro/agents/skill.md",
    "claude": "https://tasktime.pro/agents/claude/",
    "openClaw": "https://tasktime.pro/agents/openclaw/",
    "debugging": "https://tasktime.pro/agents/debugging/"
  },
  "bridge": {
    "packageName": "@tasktimepro/agent-bridge",
    "binary": "tasktime-agent-bridge",
    "transport": "mcp-stdio-json-rpc",
    "install": {
      "npmPackage": "@tasktimepro/agent-bridge",
      "officialMcpRegistryName": "pro.tasktime/agent-bridge",
      "openClawBundlePackage": "@tasktimepro/openclaw",
      "claudeCodeMarketplace": "tasktimepro",
      "claudeCodeMarketplaceRepository": "https://github.com/tasktimepro/tasktime",
      "claudeCodePlugin": "tasktime"
    },
    "appSession": {
      "protocol": "websocket",
      "defaultPath": "/tasktime-agent",
      "allowedHosts": [
        "127.0.0.1",
        "localhost",
        "::1"
      ],
      "pairingRequired": true,
      "defaultSessionTtlMs": 86400000,
      "resume": {
        "queryParam": "sessionToken",
        "currentTabStorage": "sessionStorage",
        "browserReopen": "non-exportable-p256-proof-of-possession",
        "bearerTokenDurable": false,
        "until": [
          "session_expiry",
          "access_revocation",
          "bridge_process_exit"
        ]
      }
    },
    "statusFile": {
      "argument": "--status-file",
      "environment": "TASKTIME_AGENT_BRIDGE_STATUS_FILE",
      "schemaVersion": 2,
      "containsPairingCredentials": false
    },
    "identity": {
      "argument": "--agent-id",
      "labelArgument": "--agent-label",
      "defaultAgentId": "tasktime.agent.local-bridge"
    },
    "defaultScopes": [
      "read",
      "write",
      "navigation"
    ],
    "optionalScopes": [
      "billing",
      "export",
      "email"
    ],
    "methods": {
      "mcp": [
        "initialize",
        "ping",
        "tools/list",
        "tools/call"
      ],
      "tasktime": [
        "tasktime/create_approval_token"
      ]
    },
    "approvalTokens": {
      "format": "tasktime-hmac-sha256-v1",
      "requiresTrustedGrant": true,
      "trustedGrantDurations": [
        "until_revoked",
        "today",
        "30_days"
      ],
      "defaultTrustedGrantDuration": "until_revoked",
      "maxTtlMs": 300000,
      "singleUse": true
    },
    "launch": {
      "accountPath": "/account",
      "sectionParam": {
        "name": "section",
        "value": "agent"
      },
      "pairingParams": {
        "endpoint": "agentBridgeEndpoint",
        "pairingId": "agentBridgePairingId",
        "pairingCode": "agentBridgePairingCode",
        "agentId": "agentBridgeAgentId",
        "agentLabel": "agentBridgeAgentLabel",
        "scopes": "agentBridgeScopes"
      }
    },
    "recovery": {
      "unavailableAction": "launch_tasktime",
      "reason": "authoritative_app_session_required",
      "setupTools": [
        "get_pairing_status",
        "refresh_pairing"
      ]
    }
  }
}
