Metadata-Version: 2.4
Name: cor-works
Version: 1.0.0
Summary: CLI y servidor MCP para la API de COR (tareas, horas, proyectos, clientes).
Home-page: https://pypi.org/project/cor-works/
Author: 
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: click
Requires-Dist: keyring
Requires-Dist: cryptography
Requires-Dist: requests
Requires-Dist: urllib3
Requires-Dist: rich-click
Requires-Dist: mcp
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Cor-Works

<p align="center">
  <img src="https://i.imgur.com/CDPJZvF.jpeg" alt="cor-works" width="100%">
</p>

**CLI y servidor MCP para la API de COR.** Gestiona autenticación, tareas, horas, proyectos y clientes desde la terminal o desde cualquier agente de IA compatible con el protocolo MCP.

[![PyPI](https://img.shields.io/pypi/v/cor-works?style=flat-square&color=0ea5e9&labelColor=0f172a)](https://pypi.org/project/cor-works/)
[![Python](https://img.shields.io/pypi/pyversions/cor-works?style=flat-square&color=6366f1&labelColor=0f172a)](https://pypi.org/project/cor-works/)
[![License](https://img.shields.io/pypi/l/cor-works?style=flat-square&color=10b981&labelColor=0f172a)](LICENSE)
[![Status](https://img.shields.io/badge/version-1.0.0-slate?style=flat-square&labelColor=0f172a)](https://pypi.org/project/cor-wors/)

---

## Instalación

```bash
pip install cor-works
```

Requiere **Python 3.10+** y acceso a la API de COR. El paquete instala dos ejecutables: `cor` (CLI) y `cor-mcp` (servidor MCP stdio).

---

## Visión general

```
cor-works
├── cor              # CLI interactiva
│   ├── auth         # Login, sesión y tokens
│   ├── task         # Búsqueda y creación de tareas
│   ├── hours        # Registro y consulta de horas
│   ├── projects     # Gestión de proyectos
│   └── client       # Consulta de clientes
└── cor-mcp          # Servidor MCP (stdio)
    └── 13 tools     # Listos para agentes de IA
```

---

## Referencia CLI

### `cor auth` — Autenticación y sesión

Gestiona el ciclo completo de autenticación: login, refresco de tokens y limpieza de credenciales locales. Las credenciales se almacenan de forma segura usando `keyring` + `cryptography`.

| Comando | Descripción |
|---------|-------------|
| `cor auth login --email E --password P` | Inicia sesión y guarda la sesión localmente |
| `cor auth user` | Muestra el usuario autenticado actual |
| `cor auth refresh-token` | Refresca el token de acceso |
| `cor auth clear-session` | Elimina la sesión activa |
| `cor auth clear-user` | Elimina los datos del usuario local |
| `cor auth clear-all` | Limpia sesión y usuario completamente |

```bash
cor auth login --email admin@empresa.com --password ••••••••
cor auth refresh-token
```

---

### `cor task` — Tareas

Permite buscar tareas con múltiples filtros encadenados y crear nuevas tareas en un proyecto específico.

| Comando | Descripción |
|---------|-------------|
| `cor task search --filter clave=valor` | Busca tareas por filtros (title, status, etc.) |
| `cor task create --title T --project-id ID` | Crea una tarea en el proyecto indicado |

```bash
cor task search --filter title=WorldArd --filter status=nueva
cor task create --title "Revisión de diseño" --project-id 12345
```

---

### `cor hours` — Horas

Registra y consulta horas trabajadas asociadas a tareas. Soporta filtros por fecha, tarea y proyecto.

| Comando | Descripción |
|---------|-------------|
| `cor hours add --task-id ID --date D --start H --hours Xh` | Registra horas en una tarea |
| `cor hours get --filter clave=valor` | Consulta horas con filtros (dateStart, dateDeadline) |
| `cor hours get-all --filter clave=valor` | Consulta todas las horas disponibles con filtros |

```bash
cor hours add --task-id 142 --date 2026-03-02 --start 08:00 --hours 8h
cor hours get --filter dateStart=2026-03-01 --filter dateDeadline=2026-03-31
cor hours get-all --filter task_title=WorldArd
```

---

### `cor projects` — Proyectos

Lista proyectos existentes y crea nuevos con parámetros configurables como estado y facturación.

| Comando | Descripción |
|---------|-------------|
| `cor projects get --filter clave=valor` | Lista proyectos con filtros (project_name, etc.) |
| `cor projects create --name N --client-id ID --param clave=valor` | Crea un proyecto con parámetros adicionales |

```bash
cor projects get --filter project_name=WorldArd
cor projects create --name "Proyecto X" --client-id 77 --param status=active --param billable=true
```

---

### `cor client` — Clientes

Consulta los clientes disponibles en la cuenta con soporte de filtros.

| Comando | Descripción |
|---------|-------------|
| `cor client get --filter clave=valor` | Lista clientes filtrando por nombre u otros campos |

```bash
cor client get --filter client_name=Acme
```

---

## Servidor MCP

`cor-mcp` implementa el protocolo [MCP](https://modelcontextprotocol.io/) sobre stdio, permitiendo que agentes de IA (Claude, Cursor, etc.) ejecuten operaciones de COR de forma estructurada.

```bash
cor-mcp 
```

### Herramientas disponibles (13 tools)

| Grupo | Tool | Descripción |
|-------|------|-------------|
| Auth | `cor_login` | Autentica al usuario con email y contraseña |
| Auth | `cor_refresh_token` | Refresca el token de acceso activo |
| Auth | `cor_get_user` | Devuelve los datos del usuario en sesión |
| Auth | `cor_clear_session` | Elimina la sesión guardada |
| Auth | `cor_clear_user` | Elimina los datos locales del usuario |
| Auth | `cor_clear_all` | Limpia sesión y usuario |
| Tasks | `cor_search_tasks` | Busca tareas con filtros dinámicos |
| Tasks | `cor_create_task` | Crea una nueva tarea en un proyecto |
| Hours | `cor_add_hours` | Registra horas en una tarea |
| Hours | `cor_get_hours` | Consulta horas con filtros de fecha |
| Projects | `cor_get_projects` | Lista proyectos disponibles |
| Projects | `cor_create_project` | Crea un proyecto nuevo |
| Clients | `cor_get_clients` | Lista los clientes de la cuenta |

> **Confirmación obligatoria en operaciones sensibles.** Las tools de tipo `create`, `update` y `delete` requieren que el agente obtenga confirmación explícita del usuario antes de ejecutar. Esto se indica pasando `user_confirmed=true` en el payload de la llamada.
