Rank
70
AI Agents & MCPs & AI Workflow Automation โข (~400 MCP servers for AI agents) โข AI Automation / AI Agent with MCPs โข AI Workflows & AI Agents โข MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). --- name: odoo description: Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). repository: https://github.com/NullNaveen/openclaw-odoo-skill --- Odoo ERP Connector Full-featured Odoo 19 ERP integration for OpenClaw. Control your entire business via natural language chat commands. **๐ฆ Full Source Code:** https://github.com/Nu Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Freshness
Last checked 2/24/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
odoo is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). --- name: odoo description: Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). repository: https://github.com/NullNaveen/openclaw-odoo-skill --- Odoo ERP Connector Full-featured Odoo 19 ERP integration for OpenClaw. Control your entire business via natural language chat commands. **๐ฆ Full Source Code:** https://github.com/Nu
Public facts
7
Change events
1
Artifacts
0
Freshness
Feb 24, 2026
Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 24, 2026
Vendor
Nullnaveen
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/NullNaveen/openclaw-odoo-skill.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Nullnaveen
Protocol compatibility
OpenClaw
Auth modes
api_key, oauth
Machine-readable schemas
OpenAPI or schema references published
Adoption signal
2 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
json
{
"url": "http://localhost:8069",
"db": "your_database",
"username": "api_user@yourcompany.com",
"api_key": "your_api_key_from_odoo_preferences",
"timeout": 60,
"max_retries": 3,
"poll_interval": 60,
"log_level": "INFO",
"webhook_port": 8070,
"webhook_secret": ""
}text
ODOO_URL=http://localhost:8069 ODOO_DB=your_database ODOO_USERNAME=api_user@yourcompany.com ODOO_API_KEY=your_api_key
python
from odoo_skill import OdooClient, SmartActionHandler
# Load config from config.json
client = OdooClient.from_config("config.json")
# Test connection
status = client.test_connection()
print(f"Connected to Odoo {status['server_version']}")
# Use smart actions for natural workflows
smart = SmartActionHandler(client)
# Create a quotation with fuzzy partner and product matching
result = smart.smart_create_quotation(
customer_name="Rocky",
product_lines=[
{"name": "Rock", "quantity": 5, "price_unit": 19.99}
],
notes="Fuzzy match quotation"
)
print(result["summary"])
# Output: "Created quotation QT-001 for new customer Rocky with 1 ร Rock at $19.99"python
# Find-or-create a customer
result = smart.find_or_create_partner(
name="Acme Corp",
is_company=True,
city="New York"
)
partner = result["partner"]
created = result["created"]
# Find-or-create a product
result = smart.find_or_create_product(
name="Widget X",
list_price=49.99,
type="consu"
)
product = result["product"]
# Smart quotation (auto-creates customer & products)
result = smart.smart_create_quotation(
customer_name="Rocky",
product_lines=[
{"name": "Product A", "quantity": 10},
{"name": "Product B", "quantity": 5, "price_unit": 25.0}
],
notes="Created via smart action"
)
order = result["order"]
print(f"Order {order['name']} created with {len(result['products'])} product(s)")
# Smart lead creation
result = smart.smart_create_lead(
name="New Prospect",
contact_name="John Doe",
email="john@prospect.com",
expected_revenue=50000.0
)
lead = result["lead"]
# Smart task creation (auto-creates project if needed)
result = smart.smart_create_task(
project_name="Website Redesign",
task_name="Fix homepage",
description="Update hero section"
)
task = result["task"]
# Smart employee creation (auto-creates department if needed)
result = smart.smart_create_employee(
name="Jane Smith",
job_title="Developer",
department_name="Engineering"
)
employee = result["employee"]python
from odoo_skill.models.sale_order import SaleOrderOps
from odoo_skill.models.partner import PartnerOps
partners = PartnerOps(client)
sales = SaleOrderOps(client)
# Get all customers
customers = partners.search_customers(limit=10)
for cust in customers:
print(f"{cust['name']} โ {cust.get('email')}")
# Create a quotation with specific IDs
order = sales.create_quotation(
partner_id=42,
lines=[
{"product_id": 7, "quantity": 10, "price_unit": 49.99},
{"product_id": 8, "quantity": 5}
],
notes="Manual order"
)
print(f"Created {order['name']}")
# Confirm the order
confirmed = sales.confirm_order(order['id'])
print(f"Order {confirmed['name']} is now {confirmed['state']}")python
{
"summary": "Created quotation QT-001 for new customer Rocky with 1 ร Rock",
"order": {
"id": 1,
"name": "QT-001",
"state": "draft",
"partner_id": [42, "Rocky"],
"amount_total": 19.99
},
"customer": {
"created": True,
"partner": {"id": 42, "name": "Rocky"}
},
"products": [
{
"created": True,
"product": {"id": 7, "name": "Rock"}
}
]
}Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). --- name: odoo description: Build or use the Odoo ERP connector for OpenClaw (Sales, CRM, Purchase, Inventory, Projects, HR, Fleet, Manufacturing integration via XML-RPC). repository: https://github.com/NullNaveen/openclaw-odoo-skill --- Odoo ERP Connector Full-featured Odoo 19 ERP integration for OpenClaw. Control your entire business via natural language chat commands. **๐ฆ Full Source Code:** https://github.com/Nu
Full-featured Odoo 19 ERP integration for OpenClaw. Control your entire business via natural language chat commands.
๐ฆ Full Source Code: https://github.com/NullNaveen/openclaw-odoo-skill
\ash npx clawhub install odoo-erp-connector \
The Odoo ERP Connector bridges OpenClaw and Odoo 19, enabling autonomous, chat-driven control over 153+ business modules including:
All operations use smart actions that handle fuzzy matching and auto-creation workflows.
The connector handles fuzzy/incomplete requests with intelligent find-or-create logic.
Example: "Create quotation for Rocky with product Rock"
The system:
ilike matching)This pattern applies across all smart actions:
smart_create_quotation() โ customer + productssmart_create_purchase() โ vendor + productssmart_create_lead() โ partner (optional)smart_create_task() โ project + tasksmart_create_employee() โ departmentsmart_create_event() โ event only (no dependencies)OdooClient โ Low-level XML-RPC wrapper
search(), read(), create(), write(), unlink() methodsModel Ops Classes โ Business logic for each module
PartnerOps โ Customers/suppliersSaleOrderOps โ Quotations and sales ordersInvoiceOps โ Customer invoicesInventoryOps โ Products and stockCRMOps โ Leads and opportunitiesPurchaseOrderOps โ POs and vendorsProjectOps โ Projects and tasksHROps โ Employees, departments, expensesManufacturingOps โ BOMs and MOsCalendarOps โ Events and meetingsFleetOps โ Vehicles and odometerEcommerceOps โ Website orders and productsSmartActionHandler โ High-level natural-language interface
The connector auto-detects required vs. optional fields in Odoo 19:
OdooError with field name{
"url": "http://localhost:8069",
"db": "your_database",
"username": "api_user@yourcompany.com",
"api_key": "your_api_key_from_odoo_preferences",
"timeout": 60,
"max_retries": 3,
"poll_interval": 60,
"log_level": "INFO",
"webhook_port": 8070,
"webhook_secret": ""
}
config.jsonAlternatively, set in .env:
ODOO_URL=http://localhost:8069
ODOO_DB=your_database
ODOO_USERNAME=api_user@yourcompany.com
ODOO_API_KEY=your_api_key
The client auto-loads from .env if config.json is missing.
from odoo_skill import OdooClient, SmartActionHandler
# Load config from config.json
client = OdooClient.from_config("config.json")
# Test connection
status = client.test_connection()
print(f"Connected to Odoo {status['server_version']}")
# Use smart actions for natural workflows
smart = SmartActionHandler(client)
# Create a quotation with fuzzy partner and product matching
result = smart.smart_create_quotation(
customer_name="Rocky",
product_lines=[
{"name": "Rock", "quantity": 5, "price_unit": 19.99}
],
notes="Fuzzy match quotation"
)
print(result["summary"])
# Output: "Created quotation QT-001 for new customer Rocky with 1 ร Rock at $19.99"
# Find-or-create a customer
result = smart.find_or_create_partner(
name="Acme Corp",
is_company=True,
city="New York"
)
partner = result["partner"]
created = result["created"]
# Find-or-create a product
result = smart.find_or_create_product(
name="Widget X",
list_price=49.99,
type="consu"
)
product = result["product"]
# Smart quotation (auto-creates customer & products)
result = smart.smart_create_quotation(
customer_name="Rocky",
product_lines=[
{"name": "Product A", "quantity": 10},
{"name": "Product B", "quantity": 5, "price_unit": 25.0}
],
notes="Created via smart action"
)
order = result["order"]
print(f"Order {order['name']} created with {len(result['products'])} product(s)")
# Smart lead creation
result = smart.smart_create_lead(
name="New Prospect",
contact_name="John Doe",
email="john@prospect.com",
expected_revenue=50000.0
)
lead = result["lead"]
# Smart task creation (auto-creates project if needed)
result = smart.smart_create_task(
project_name="Website Redesign",
task_name="Fix homepage",
description="Update hero section"
)
task = result["task"]
# Smart employee creation (auto-creates department if needed)
result = smart.smart_create_employee(
name="Jane Smith",
job_title="Developer",
department_name="Engineering"
)
employee = result["employee"]
from odoo_skill.models.sale_order import SaleOrderOps
from odoo_skill.models.partner import PartnerOps
partners = PartnerOps(client)
sales = SaleOrderOps(client)
# Get all customers
customers = partners.search_customers(limit=10)
for cust in customers:
print(f"{cust['name']} โ {cust.get('email')}")
# Create a quotation with specific IDs
order = sales.create_quotation(
partner_id=42,
lines=[
{"product_id": 7, "quantity": 10, "price_unit": 49.99},
{"product_id": 8, "quantity": 5}
],
notes="Manual order"
)
print(f"Created {order['name']}")
# Confirm the order
confirmed = sales.confirm_order(order['id'])
print(f"Order {confirmed['name']} is now {confirmed['state']}")
All API methods return structured dictionaries:
{
"summary": "Created quotation QT-001 for new customer Rocky with 1 ร Rock",
"order": {
"id": 1,
"name": "QT-001",
"state": "draft",
"partner_id": [42, "Rocky"],
"amount_total": 19.99
},
"customer": {
"created": True,
"partner": {"id": 42, "name": "Rocky"}
},
"products": [
{
"created": True,
"product": {"id": 7, "name": "Rock"}
}
]
}
{
"id": 1,
"name": "QT-001",
"state": "draft",
"partner_id": [42, "Rocky"],
"amount_total": 19.99,
"order_line": [
{
"id": 1,
"product_id": [7, "Rock"],
"quantity": 1,
"price_unit": 19.99,
"price_subtotal": 19.99
}
]
}
The connector uses custom exceptions:
from odoo_skill.errors import OdooError, OdooAuthError, OdooNotFoundError
try:
result = smart.smart_create_quotation(
customer_name="Acme",
product_lines=[{"name": "Widget"}]
)
except OdooAuthError as e:
print(f"Authentication failed: {e}")
except OdooNotFoundError as e:
print(f"Record not found: {e}")
except OdooError as e:
print(f"Odoo error: {e}")
The connector supports 153+ installed modules in Odoo 19:
Core
Sales & CRM
Purchasing
Inventory
Accounting
HR
Projects
Manufacturing
Fleet
Marketing
eCommerce
Tools
Plus 50+ more specialized modules
url, db, username, api_key in config.jsonhttp://your-odoo-url/webproduct_tmpl_id, not product_id)name fieldid directlydate_from, date_toUser: "Create a quote for Acme Corp with 10 Widgets at $50 each"
OpenClaw โ OdooClient (smart action):
1. Search for customer "Acme Corp"
2. Search for product "Widgets"
3. Create quotation with both
4. Return summary
Result: "โ
Created quotation QT-001 for Acme Corp with 10 ร Widgets at $50"
User: "Show me the sales pipeline"
OpenClaw โ CRMOps.get_pipeline():
- Query all leads/opportunities
- Group by stage
- Calculate total revenue by stage
- Return formatted summary
Result: "Qualified: $50k | Proposal: $100k | Negotiation: $75k | Total: $225k"
User: "What products are low on stock?"
OpenClaw โ InventoryOps.get_low_stock_products():
- Query products with stock < reorder point
- List each product, stock level, reorder point
- Suggest PO quantities
Result: "Widget X: 5 on hand (min 20) | Component Y: 0 on hand (min 10)"
OdooConnector/
โโโ odoo_skill/
โ โโโ client.py # Core OdooClient
โ โโโ config.py # Configuration loader
โ โโโ errors.py # Custom exceptions
โ โโโ retry.py # Retry logic
โ โโโ smart_actions.py # Smart action handler
โ โโโ models/
โ โ โโโ partner.py
โ โ โโโ sale_order.py
โ โ โโโ invoice.py
โ โ โโโ inventory.py
โ โ โโโ crm.py
โ โ โโโ purchase.py
โ โ โโโ project.py
โ โ โโโ hr.py
โ โ โโโ manufacturing.py
โ โ โโโ calendar_ops.py
โ โ โโโ fleet.py
โ โ โโโ ecommerce.py
โ โโโ utils/
โ โ โโโ formatting.py # Response formatting
โ โ โโโ validators.py # Input validation
โ โโโ sync/
โ โ โโโ poller.py # Webhook poller
โ โ โโโ webhook.py # Webhook handler
โโโ run_full_test.py # Integration test suite
โโโ config.json # Configuration (create from template)
โโโ config.template.json # Configuration template
โโโ requirements.txt # Python dependencies
โโโ README.md # User setup guide
โโโ SKILL.md # This file
โโโ setup.ps1 # PowerShell installer
# Run full integration test suite
python run_full_test.py
# Run single test module
python -m pytest tests/test_partners.py -v
# Run with coverage
python -m pytest --cov=odoo_skill tests/
SmartActionHandler classfind_or_create_* primitives for dependenciessummary, the main record, and creation detailsrun_full_test.pyExample:
def smart_create_invoice(self, customer_name: str, product_lines: list[dict], **kwargs) -> dict:
"""Create invoice with fuzzy customer and product matching."""
# Find or create customer
customer_result = self.find_or_create_partner(customer_name)
customer = customer_result["partner"]
# Find or create products
products = []
for line in product_lines:
prod_result = self.find_or_create_product(line["name"], **line)
products.append(prod_result)
# Create invoice with resolved IDs
invoice = self.invoices.create_invoice(
partner_id=customer["id"],
lines=[...],
**kwargs
)
return {
"summary": f"Created invoice INV-001 for {customer['name']}",
"invoice": invoice,
"customer": customer_result,
"products": products
}
This connector is part of the OpenClaw project. For issues, questions, or contributions, contact the development team.
Last Updated: 2026-02-09
Odoo Version: 19.0
Python: 3.10+
Status: Production Ready
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
api_key, oauth
Streaming
No
Data region
global
Protocol support
Requires: openclew, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/snapshot"
curl -s "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract"
curl -s "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation โข (~400 MCP servers for AI agents) โข AI Automation / AI Agent with MCPs โข AI Workflows & AI Agents โข MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | ๐ Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"api_key",
"oauth"
],
"requires": [
"openclew",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/NullNaveen/openclaw-odoo-skill#input",
"outputSchemaRef": "https://github.com/NullNaveen/openclaw-odoo-skill#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:43:42.114Z",
"sourceUpdatedAt": "2026-02-24T19:43:42.114Z",
"freshnessSeconds": 4420455
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:37:57.671Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "153",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "this",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:153|supported|profile capability:this|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:42.114Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "api_key, oauth",
"href": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:43:42.114Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/NullNaveen/openclaw-odoo-skill#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:43:42.114Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Nullnaveen",
"href": "https://github.com/NullNaveen/openclaw-odoo-skill",
"sourceUrl": "https://github.com/NullNaveen/openclaw-odoo-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2 GitHub stars",
"href": "https://github.com/NullNaveen/openclaw-odoo-skill",
"sourceUrl": "https://github.com/NullNaveen/openclaw-odoo-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/nullnaveen-openclaw-odoo-skill/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub ยท GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to odoo and adjacent AI workflows.