Publish without the form
Already keeping your prompts, contexts or MCP servers in a repository? Connect it to ContexteTech: your resources are published and updated automatically, no retyping in the form. All it takes is an account and an API token.
Dependency-free command-line tool: one JSON file, one command, your resources are live.
One HTTP request with your token: publish from any language or software.
Your resources update themselves every time your repository changes.
A single JSON file with several resources: ideal to import an existing library.
How it works
- Create an account, then a token in Profile → Security → API tokens.
- Describe your resources in a JSON file (an example is given below).
- Run ctx-publish, an API call or a GitHub Action with your token.
- Your resources are live; run the same command again to update them.
Using another tool?
The ContexteTech API (JSON, personal token) connects any software: a Python script, a CI pipeline, an in-house tool. Everything is described below.
1. Create a token
Sign in, then open Profile → Security → API tokens. Name the token and copy it: it will never be shown again.
2. Security
- An account is required: every token belongs to an account and acts on its behalf.
- At most 3 tokens per account, valid for 1 year, deletable at any time.
- Limited scope: a token only works on your resources. It gives no access to the profile, password or administration, and cannot create other tokens.
- Tokens are never stored in clear (only their hash is kept) and an alert e-mail is sent on each creation.
- Keep it secret: never commit it to a repository; use an environment variable.
3. Publish with ctx-publish
A dependency-free Python tool shipped in the repository (tools/ctx-publish.py). A resource that already exists (same type, same name) is updated.
export CTX_TOKEN=ctx_xxxxxxxxxxxxxxxx python3 tools/ctx-publish.py resource.json
4. Publish with curl
A resource id is “your-username--resource-name”. Add ?create=1 to create; without it, the existing resource is updated.
curl -X PUT "https://contextetech.com/api/resources/your-username--resume-reunion?create=1" \ -H "Authorization: Bearer $CTX_TOKEN" \ -H "Content-Type: application/json" \ --data @resource.json
GitHub Actions
Add the token as the repository secret CTX_TOKEN, then this file .github/workflows/contextetech.yml: your resources are republished on every push.
name: ContexteTech
on: { push: { branches: [main] } }
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -fsSLo ctx-publish.py https://raw.githubusercontent.com/contexte-tech/contextetech/main/tools/ctx-publish.py
- run: python3 ctx-publish.py resources/*.json
env: { CTX_TOKEN: "${{ secrets.CTX_TOKEN }}" } 5. Resource format
Common fields are listed below; the content of data depends on the type (see each type's documentation).
{
"kind": "prompt",
"name": "resume-reunion",
"description": "Summarises a meeting into decisions and actions.",
"tags": ["meeting"],
"clang": "en",
"license": "MIT",
"data": { "template": "Summarise these notes: {{notes}}" }
} | Field | Purpose |
|---|---|
kind | Type: context, prompt, dataset, lora, tool, model, agent, skill, eval, rag, harness |
name | Short name (lowercase, digits, dashes), unique for you within a type |
description | One sentence (240 characters max) |
tags | Up to 10 keywords |
clang | Content language: fr, en, es, de, it or multi |
license | MIT, Apache-2.0, CC-BY-4.0, CC-BY-SA-4.0, CC-BY-NC-4.0, CC0-1.0… |
data | Type-specific content (template, system, jsonl, command…) |
6. Limits and responses
- 20 new resources per account per day.
- Responses: 200 (success), 400 (invalid field, the message says which), 401 (missing, expired or deleted token), 403 (another author's resource), 409 (already exists with ?create=1).