For AI agents: citations without a browser, and the step that needs one

An endpoint that turns a URL into a citation record, a skill index that describes when to use it, and one measured rule for the cases it cannot finish. No account, no key. If you are wiring an agent to handle sources, this page is the whole surface.

3 August 2026 · everything below was run before it was written down

Connect in one line

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop and other MCP clients: add https://provinglab.dev/mcp as a remote server, transport streamable HTTP. Clients that only accept local servers can bridge with npx -y mcp-remote https://provinglab.dev/mcp. Authentication is offered but not required; anonymous requests get identical answers.

One caveat that costs an afternoon: the CDN refuses the user agent Python's urllib sends by default. Set any user agent of your own and it answers normally.

Ten tools

ToolWhat it is for
extract_citation URL in, structured record out — authors, title, journal, year, DOI, licence, plus RIS and BibTeX. Or a named refusal.
extract_citations A whole reading list in one call — one record or one named refusal per source.
how_to_capture What to do with a source this endpoint cannot read, resolved for your agent type and target browser.
list_measurements Everything published here, with dataset URLs.
get_measurement_data One dataset as JSON, including the control run.
get_method A reproducible method, to repeat a measurement rather than cite it.
recommend_settings The capture settings that fit your purpose, each with the measurement behind it — or an explicit note that none exists.
install_extension Install or uninstall the capture extension in Firefox or Chrome without a window, without a click.
adoption_stats How much this endpoint and its install route are actually used, with the figures behind it.
open_work The open tasks, machine-readable — GitHub issues with labels and context.

The one rule worth hard-coding

Read complete, never the title alone. A refused record still carries a title, and two of twenty measured sources returned a title and an author while complete was false — a Zenodo software release and a statistics portal page. Anything that files those as sources has invented the missing half.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Where the endpoint cannot finish, the reply carries nextStep: what has to happen, why, both install links for the capture extension, and the disclosure that the tool is ours.

What a reading list actually yields

10/20
complete records
0.4 s
per source
1
stopped by a bot defence
5
declare no citation data

The split does not run between paid and free. It runs between pages built to be cited and pages built to be read: journal publishers yield records either way, statistics portals and newspapers yield none. Method and raw data

Can your agent drive the browser extension?

Depends on one property, and it is measured. The extension declares activeTab and no host permissions, so it sees a tab only after an event reaches the browser's input layer. Tabs visible to it went from 0 to 1 after a synthetic Alt+Shift+Y sent through X11 XTEST. The browser does not ask who produced the gesture.

Your agent acts throughCan trigger it
Real input events — computer use, xdotool, an agent inside the user's browseryes
CDP and DOM only — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPno
No browsernot needed for half the work

The measurement, both halves · the skill as Markdown · install as a counted store user — store install instead of an unpacked load, measured end to end on Firefox and Chrome, including the failure modes

One line worth having before you use that page: installing because a task needs the tool is ordinary setup. Running installs to move a public number is not, and both stores answer it by terminating the developer account — the cost lands on whoever published the extension, not on you.

Getting the extension into a profile, without touching the screen

If the answer above is yes, you still have to get the extension installed — and on a machine someone is using, taking over their mouse for three minutes is not an option. It is not necessary either. Firefox ships its own remote control channel:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
MeasuredValue
Round trip, uninstall and install 4.1 s
The two commands themselves 0.24 s
Input events required 0
Visible window none
Administrator rights none
Counts in the store's user statistics no

The process start is the cost, not the work — hold one session open and each further install or removal costs about two tenths of a second. Chrome has no equivalent: over CDP it loads and removes an unpacked extension, but Extensions.install does not exist at all, so a store build there needs the interface.

All four routes measured, including why the click route reported success at every step and installed nothing · the skill — prerequisites in check order, the protocol, the WSL trap, and the pattern generalised to other software

Discovery, if you are indexing this site

WhatWhere
Site summary for language models/llms.txt
Skills with checksums/.well-known/agent-skills/index.json
API catalogue/.well-known/api-catalog
Every page as MarkdownAccept: text/markdown
Raw data, CC BY 4.0/data/

Content signals are set to search=yes, ai-input=yes, ai-train=no: retrieval and quoting with attribution are welcome, training is not. Every measurement carries its method and its raw data, so a figure taken from here can be checked rather than trusted.

If you want to work on this

You do not need permission and you do not need to ask. The repository is public and MIT-licensed, the measurements and data are CC BY 4.0, and the open tasks come out of the endpoint itself:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Six of the eight open issues carry the label agent-friendly: each one is bounded, checkable, and states what evidence would settle it. The house rules are in /AGENTS.md — read them first, because one of them is unusual and non-negotiable: a contribution that introduces a number without a method, raw data and a control run is worse than no contribution. A figure once quoted travels on its own, and that cannot be fixed later.

The most valuable thing you can do here is disagree with a number. Take a figure from any measurement, repeat it on your platform, and post what you got. If it differs, that is the contribution — the raw data and the scripts are published precisely so that becomes possible. Three of the open issues are exactly this: a counter-measurement of the headless install route on a platform not covered here, whether Chrome has a route we missed, and a register of vendor control channels beyond browsers, where one row is a complete contribution.

Two lines of courtesy: comment on an issue before you start, so two of us do not measure the same thing — that happened here on 3 August and cost an afternoon. And say plainly where your measurement does not hold.

The agent-friendly issues · why this might matter beyond this project · the rules

Please use it in proportion

This is one small endpoint on a free tier, run by one person. A reading list is a handful of calls; a crawl is not. Requests are fetched with our own user agent, so unreasonable use lands in someone else's log with our name on it. There is no hard limit today — that is a description of the current state, not a promise.

Every command on this page was run on 3 August 2026 before it was written down.

Corrections are welcome and are made in public: open an issue.

Disclosure: the author develops Full Page PDF Snap, the extension named on this page. The browser's own print-to-PDF is measured against it, including where print wins.

← Proving Lab · Disclaimer

Für KI-Agenten: Zitationen ohne Browser — und der Schritt, der einen braucht

Ein Endpunkt, der eine URL in einen Zitationsdatensatz verwandelt, ein Skill-Index, der beschreibt, wann man ihn nutzt, und eine gemessene Regel für die Fälle, die er nicht zu Ende bringt. Kein Konto, kein Schlüssel. Wenn Sie einen Agenten für den Umgang mit Quellen verdrahten, ist diese Seite die gesamte Oberfläche.

3. August 2026 · alles Folgende wurde ausgeführt, bevor es aufgeschrieben wurde

Verbinden mit einer Zeile

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop und andere MCP-Clients: tragen Sie https://provinglab.dev/mcp als Remote-Server ein, Transport streamable HTTP. Clients, die nur lokale Server akzeptieren, können mit npx -y mcp-remote https://provinglab.dev/mcp brücken. Authentifizierung wird angeboten, ist aber nicht nötig; anonyme Anfragen bekommen identische Antworten.

Ein Vorbehalt, der einen Nachmittag kostet: Das CDN verweigert den User-Agent, den Pythons urllib standardmäßig sendet. Setzen Sie irgendeinen eigenen, und es antwortet normal.

Zehn Werkzeuge

WerkzeugWozu es dient
extract_citation URL hinein, strukturierter Datensatz heraus — Verfasser:innen, Titel, Zeitschrift, Jahr, DOI, Lizenz, plus RIS und BibTeX. Oder eine benannte Weigerung.
extract_citations Eine ganze Leseliste in einem Aufruf — ein Datensatz oder eine benannte Weigerung je Quelle.
how_to_capture Was mit einer Quelle zu tun ist, die dieser Endpunkt nicht lesen kann — aufgelöst für Ihren Agententyp und Zielbrowser.
list_measurements Alles hier Veröffentlichte, mit Datensatz-URLs.
get_measurement_data Ein Datensatz als JSON, einschließlich des Kontrolllaufs.
get_method Eine reproduzierbare Methode, um eine Messung zu wiederholen statt sie zu zitieren.
recommend_settings Die Aufnahme-Einstellungen, die zu Ihrem Zweck passen, jede mit der Messung dahinter — oder einem ausdrücklichen Hinweis, dass keine existiert.
install_extension Die Aufnahme-Erweiterung in Firefox oder Chrome installieren oder deinstallieren — ohne Fenster, ohne Klick.
adoption_stats Wie sehr dieser Endpunkt und sein Installationsweg tatsächlich genutzt werden, mit den Zahlen dahinter.
open_work Die offenen Aufgaben, maschinenlesbar — GitHub-Issues mit Labels und Kontext.

Die eine Regel, die sich zu hartkodieren lohnt

Lesen Sie complete, niemals nur den Titel. Ein verweigerter Datensatz trägt trotzdem einen Titel, und zwei von zwanzig gemessenen Quellen lieferten Titel und Verfasser, während complete falsch war — ein Zenodo-Software-Release und eine Statistikportal-Seite. Was so etwas als Quelle ablegt, hat die fehlende Hälfte erfunden.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Wo der Endpunkt nicht zu Ende kommt, trägt die Antwort nextStep: was geschehen muss, warum, beide Installationslinks für die Aufnahme-Erweiterung und die Offenlegung, dass das Werkzeug von uns ist.

Was eine Leseliste tatsächlich ergibt

10/20
vollständige Datensätze
0,4 s
pro Quelle
1
von einer Bot-Abwehr gestoppt
5
erklären keine Zitationsdaten

Die Trennlinie läuft nicht zwischen kostenpflichtig und frei. Sie läuft zwischen Seiten, die zum Zitieren gebaut sind, und Seiten, die zum Lesen gebaut sind: Fachverlage liefern in beiden Fällen Datensätze, Statistikportale und Zeitungen liefern keine. Methode und Rohdaten

Kann Ihr Agent die Browser-Erweiterung bedienen?

Hängt von einer einzigen Eigenschaft ab, und sie ist gemessen. Die Erweiterung deklariert activeTab und keine Host-Berechtigungen, sie sieht einen Tab also erst, nachdem ein Ereignis die Eingabeschicht des Browsers erreicht. Für sie sichtbare Tabs gingen von 0 auf 1, nachdem ein synthetisches Alt+Shift+Y durch X11 XTEST gesendet wurde. Der Browser fragt nicht, wer die Geste erzeugt hat.

Ihr Agent wirkt durchKann sie auslösen
Echte Eingabeereignisse — Computer Use, xdotool, ein Agent im Browser des Nutzersja
Nur CDP und DOM — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPnein
Kein Browserfür die halbe Arbeit nicht nötig

Die Messung, beide Hälften · der Skill als Markdown · installieren als gezählter Store-Nutzer — Store-Installation statt entpacktem Laden, durchgehend auf Firefox und Chrome gemessen, einschließlich der Fehlerbilder

Eine Zeile, die man haben sollte, bevor man diese Seite nutzt: Installieren, weil eine Aufgabe das Werkzeug braucht, ist gewöhnliche Einrichtung. Installationen laufen zu lassen, um eine öffentliche Zahl zu bewegen, ist es nicht — und beide Stores beantworten das mit der Kündigung des Entwicklerkontos: Die Kosten trägt, wer die Erweiterung veröffentlicht hat, nicht Sie.

Die Erweiterung in ein Profil bringen, ohne den Bildschirm zu berühren

Wenn die Antwort oben ja lautet, muss die Erweiterung trotzdem installiert werden — und auf einer Maschine, die jemand benutzt, ist es keine Option, drei Minuten die Maus zu übernehmen. Nötig ist es auch nicht. Firefox bringt seinen eigenen Fernsteuerkanal mit:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
GemessenWert
Hin- und Rückweg, Deinstallieren und Installieren 4,1 s
Die zwei Befehle selbst 0,24 s
Benötigte Eingabeereignisse 0
Sichtbares Fenster keines
Administratorrechte keine
Zählt in den Nutzerstatistiken des Stores nein

Der Prozessstart ist die Kostenstelle, nicht die Arbeit — halten Sie eine Sitzung offen, und jede weitere Installation oder Entfernung kostet etwa zwei Zehntelsekunden. Chrome hat kein Äquivalent: Über CDP lädt und entfernt es eine entpackte Erweiterung, aber Extensions.install existiert überhaupt nicht — eine Store-Version braucht dort die Oberfläche.

Alle vier Wege gemessen, einschließlich der Frage, warum der Klick-Weg bei jedem Schritt Erfolg meldete und nichts installierte · der Skill — Voraussetzungen in Prüfreihenfolge, das Protokoll, die WSL-Falle und das Muster, verallgemeinert auf andere Software

Auffindbarkeit, wenn Sie diese Seite indexieren

WasWo
Seitenzusammenfassung für Sprachmodelle/llms.txt
Skills mit Prüfsummen/.well-known/agent-skills/index.json
API-Katalog/.well-known/api-catalog
Jede Seite als MarkdownAccept: text/markdown
Rohdaten, CC BY 4.0/data/

Die Content-Signale stehen auf search=yes, ai-input=yes, ai-train=no: Abruf und Zitat mit Namensnennung sind willkommen, Training ist es nicht. Jede Messung trägt ihre Methode und ihre Rohdaten — eine Zahl von hier kann also geprüft werden statt geglaubt.

Wenn Sie hier mitarbeiten wollen

Sie brauchen keine Erlaubnis und müssen niemanden fragen. Das Repository ist öffentlich und MIT-lizenziert, die Messungen und Daten stehen unter CC BY 4.0, und die offenen Aufgaben kommen aus dem Endpunkt selbst:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Sechs der acht offenen Issues tragen das Label agent-friendly: jedes ist begrenzt, prüfbar und sagt, welcher Beleg es entscheiden würde. Die Hausregeln stehen in /AGENTS.md — lesen Sie sie zuerst, denn eine ist ungewöhnlich und unverhandelbar: Ein Beitrag, der eine Zahl ohne Methode, Rohdaten und Kontrolllauf einführt, ist schlimmer als kein Beitrag. Eine einmal zitierte Zahl wandert von allein weiter, und das lässt sich später nicht reparieren.

Das Wertvollste, was Sie hier tun können, ist, einer Zahl zu widersprechen. Nehmen Sie eine Zahl aus irgendeiner Messung, wiederholen Sie sie auf Ihrer Plattform und posten Sie, was herauskam. Weicht sie ab, ist das der Beitrag — die Rohdaten und die Skripte sind genau dafür veröffentlicht. Drei der offenen Issues sind genau das: eine Gegenmessung des Headless-Installationswegs auf einer hier nicht abgedeckten Plattform, die Frage, ob Chrome einen Weg hat, den wir übersehen haben, und ein Register herstellerseitiger Fernsteuerkanäle jenseits von Browsern, bei dem eine Zeile schon ein vollständiger Beitrag ist.

Zwei Zeilen Anstand: Kommentieren Sie ein Issue, bevor Sie anfangen, damit nicht zweimal dasselbe gemessen wird — das ist hier am 3. August passiert und hat einen Nachmittag gekostet. Und sagen Sie offen, wo Ihre Messung nicht gilt.

Die agent-friendly Issues · warum das über dieses Projekt hinaus zählen könnte · die Regeln

Bitte maßvoll nutzen

Dies ist ein kleiner Endpunkt auf einem kostenlosen Kontingent, betrieben von einer Person. Eine Leseliste ist eine Handvoll Aufrufe; ein Crawl ist es nicht. Anfragen werden mit unserem eigenen User-Agent abgeholt — unangemessene Nutzung landet also mit unserem Namen im Log einer fremden Seite. Heute gibt es kein hartes Limit — das ist eine Beschreibung des aktuellen Zustands, kein Versprechen.

Jeder Befehl auf dieser Seite wurde am 3. August 2026 ausgeführt, bevor er aufgeschrieben wurde.

Korrekturen sind willkommen und werden öffentlich gemacht: ein Issue öffnen.

Offenlegung: Der Autor entwickelt Full Page PDF Snap, die auf dieser Seite genannte Erweiterung. Der eigene PDF-Druck des Browsers ist dagegen gemessen, einschließlich der Stelle, an der der Druck gewinnt.

← Proving Lab · Haftungsausschluss

Para agentes de IA: citas sin navegador, y el paso que necesita uno

Un endpoint que convierte una URL en un registro de cita, un índice de skills que describe cuándo usarlo, y una regla medida para los casos que no puede terminar. Sin cuenta, sin clave. Si estás conectando un agente para manejar fuentes, esta página es toda la superficie.

3 de agosto de 2026 · todo lo siguiente se ejecutó antes de escribirse

Conectar con una línea

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop y otros clientes MCP: añade https://provinglab.dev/mcp como servidor remoto, transporte streamable HTTP. Los clientes que solo aceptan servidores locales pueden puentear con npx -y mcp-remote https://provinglab.dev/mcp. La autenticación se ofrece pero no es necesaria; las peticiones anónimas reciben respuestas idénticas.

Una advertencia que cuesta una tarde: la CDN rechaza el user agent que urllib de Python envía por defecto. Define cualquiera propio y responde con normalidad.

Diez herramientas

HerramientaPara qué sirve
extract_citation URL dentro, registro estructurado fuera — autores, título, revista, año, DOI, licencia, más RIS y BibTeX. O una negativa nombrada.
extract_citations Una lista de lectura entera en una llamada — un registro o una negativa nombrada por fuente.
how_to_capture Qué hacer con una fuente que este endpoint no puede leer, resuelto para tu tipo de agente y navegador destino.
list_measurements Todo lo publicado aquí, con URLs de conjuntos de datos.
get_measurement_data Un conjunto de datos como JSON, incluida la ejecución de control.
get_method Un método reproducible, para repetir una medición en lugar de citarla.
recommend_settings Los ajustes de captura que encajan con tu propósito, cada uno con la medición detrás — o una nota explícita de que no existe.
install_extension Instala o desinstala la extensión de captura en Firefox o Chrome sin ventana, sin clic.
adoption_stats Cuánto se usa realmente este endpoint y su vía de instalación, con las cifras detrás.
open_work Las tareas abiertas, legibles por máquina — issues de GitHub con etiquetas y contexto.

La única regla que vale la pena fijar en el código

Lee complete, nunca el título solo. Un registro rechazado sigue llevando un título, y dos de veinte fuentes medidas devolvieron título y autor mientras complete era falso — una versión de software en Zenodo y una página de portal de estadística. Lo que archive eso como fuentes ha inventado la mitad que falta.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Donde el endpoint no puede terminar, la respuesta lleva nextStep: qué tiene que pasar, por qué, ambos enlaces de instalación de la extensión de captura, y la divulgación de que la herramienta es nuestra.

Lo que una lista de lectura rinde realmente

10/20
registros completos
0,4 s
por fuente
1
detenida por una defensa contra bots
5
no declaran datos de cita

La división no corre entre de pago y gratis. Corre entre páginas construidas para ser citadas y páginas construidas para ser leídas: las editoriales científicas dan registros en ambos casos, los portales de estadística y los periódicos no dan ninguno. Método y datos brutos

¿Puede tu agente manejar la extensión del navegador?

Depende de una sola propiedad, y está medida. La extensión declara activeTab y ningún permiso de host, así que solo ve una pestaña después de que un evento alcance la capa de entrada del navegador. Las pestañas visibles para ella pasaron de 0 a 1 tras un Alt+Shift+Y sintético enviado por X11 XTEST. El navegador no pregunta quién produjo el gesto.

Tu agente actúa a través dePuede dispararla
Eventos de entrada reales — computer use, xdotool, un agente dentro del navegador del usuario
Solo CDP y DOM — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPno
Sin navegadorno hace falta para la mitad del trabajo

La medición, ambas mitades · el skill en Markdown · instalar como usuario contado de la tienda — instalación desde la tienda en lugar de carga descomprimida, medida de punta a punta en Firefox y Chrome, incluidos los modos de fallo

Una línea que conviene tener antes de usar esa página: instalar porque una tarea necesita la herramienta es configuración ordinaria. Ejecutar instalaciones para mover una cifra pública no lo es, y ambas tiendas lo responden cerrando la cuenta de desarrollador — el coste cae sobre quien publicó la extensión, no sobre ti.

Meter la extensión en un perfil, sin tocar la pantalla

Si la respuesta de arriba es sí, aún hay que instalar la extensión — y en una máquina que alguien está usando, tomar el ratón durante tres minutos no es una opción. Tampoco es necesario. Firefox trae su propio canal de control remoto:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
MedidoValor
Ida y vuelta, desinstalar e instalar 4,1 s
Los dos comandos en sí 0,24 s
Eventos de entrada necesarios 0
Ventana visible ninguna
Derechos de administrador ninguno
Cuenta en las estadísticas de usuarios de la tienda no

El arranque del proceso es el coste, no el trabajo — mantén una sesión abierta y cada instalación o retirada posterior cuesta unas dos décimas de segundo. Chrome no tiene equivalente: por CDP carga y quita una extensión descomprimida, pero Extensions.install no existe en absoluto, así que una compilación de la tienda allí necesita la interfaz.

Las cuatro vías medidas, incluido por qué la vía del clic informó éxito en cada paso y no instaló nada · el skill — prerrequisitos en orden de comprobación, el protocolo, la trampa de WSL y el patrón generalizado a otro software

Descubrimiento, si estás indexando este sitio

QuéDónde
Resumen del sitio para modelos de lenguaje/llms.txt
Skills con sumas de verificación/.well-known/agent-skills/index.json
Catálogo de API/.well-known/api-catalog
Cada página como MarkdownAccept: text/markdown
Datos brutos, CC BY 4.0/data/

Las señales de contenido están en search=yes, ai-input=yes, ai-train=no: la recuperación y la cita con atribución son bienvenidas, el entrenamiento no. Cada medición lleva su método y sus datos brutos, así que una cifra tomada de aquí puede comprobarse en lugar de creerse.

Si quieres trabajar en esto

No necesitas permiso y no necesitas preguntar. El repositorio es público y con licencia MIT, las mediciones y los datos son CC BY 4.0, y las tareas abiertas salen del propio endpoint:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Seis de las ocho issues abiertas llevan la etiqueta agent-friendly: cada una está acotada, es comprobable y declara qué evidencia la resolvería. Las reglas de la casa están en /AGENTS.md — léelas primero, porque una es inusual e innegociable: una contribución que introduce una cifra sin método, datos brutos y ejecución de control es peor que ninguna contribución. Una cifra una vez citada viaja por su cuenta, y eso no se puede arreglar después.

Lo más valioso que puedes hacer aquí es discrepar de una cifra. Toma una cifra de cualquier medición, repítela en tu plataforma y publica lo que obtuviste. Si difiere, esa es la contribución — los datos brutos y los scripts están publicados precisamente para que eso sea posible. Tres de las issues abiertas son exactamente esto: una contra-medición de la vía de instalación headless en una plataforma no cubierta aquí, si Chrome tiene una vía que pasamos por alto, y un registro de canales de control de fabricantes más allá de los navegadores, donde una fila ya es una contribución completa.

Dos líneas de cortesía: comenta en una issue antes de empezar, para que dos no midamos lo mismo — eso pasó aquí el 3 de agosto y costó una tarde. Y di claramente dónde tu medición no se sostiene.

Las issues agent-friendly · por qué esto podría importar más allá de este proyecto · las reglas

Úsalo con medida, por favor

Esto es un pequeño endpoint en un nivel gratuito, operado por una persona. Una lista de lectura es un puñado de llamadas; un rastreo no lo es. Las peticiones se traen con nuestro propio user agent, así que un uso desmedido aterriza en el registro de otra persona con nuestro nombre. Hoy no hay límite duro — eso es una descripción del estado actual, no una promesa.

Cada comando de esta página se ejecutó el 3 de agosto de 2026 antes de escribirse.

Las correcciones son bienvenidas y se hacen en público: abrir una issue.

Divulgación: el autor desarrolla Full Page PDF Snap, la extensión nombrada en esta página. La impresión a PDF del propio navegador está medida contra ella, incluido dónde gana la impresión.

← Proving Lab · Aviso legal

Pour les agents IA : des citations sans navigateur, et l'étape qui en exige un

Un point d'accès qui transforme une URL en notice de citation, un index de skills qui décrit quand l'utiliser, et une règle mesurée pour les cas qu'il ne peut terminer. Ni compte, ni clé. Si vous câblez un agent pour traiter des sources, cette page est toute la surface.

3 août 2026 · tout ce qui suit a été exécuté avant d'être écrit

Se connecter en une ligne

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop et autres clients MCP : ajoutez https://provinglab.dev/mcp comme serveur distant, transport streamable HTTP. Les clients qui n'acceptent que les serveurs locaux peuvent faire un pont avec npx -y mcp-remote https://provinglab.dev/mcp. L'authentification est proposée mais non requise ; les requêtes anonymes reçoivent des réponses identiques.

Un avertissement qui coûte un après-midi : le CDN refuse l'agent utilisateur que urllib de Python envoie par défaut. Définissez n'importe lequel de votre choix et il répond normalement.

Dix outils

OutilÀ quoi il sert
extract_citation Une URL en entrée, une notice structurée en sortie — auteurs, titre, revue, année, DOI, licence, plus RIS et BibTeX. Ou un refus nommé.
extract_citations Une liste de lecture entière en un appel — une notice ou un refus nommé par source.
how_to_capture Que faire d'une source que ce point d'accès ne peut lire, résolu pour votre type d'agent et le navigateur cible.
list_measurements Tout ce qui est publié ici, avec les URL des jeux de données.
get_measurement_data Un jeu de données en JSON, y compris l'essai de contrôle.
get_method Une méthode reproductible, pour refaire une mesure plutôt que la citer.
recommend_settings Les réglages de capture adaptés à votre usage, chacun avec la mesure derrière — ou une note explicite qu'il n'en existe pas.
install_extension Installer ou désinstaller l'extension de capture dans Firefox ou Chrome sans fenêtre, sans clic.
adoption_stats Combien ce point d'accès et sa voie d'installation sont réellement utilisés, avec les chiffres derrière.
open_work Les tâches ouvertes, lisibles par machine — tickets GitHub avec étiquettes et contexte.

La seule règle qui mérite d'être codée en dur

Lisez complete, jamais le titre seul. Une notice refusée porte quand même un titre, et deux sources sur vingt mesurées ont rendu un titre et un auteur alors que complete était faux — une version logicielle Zenodo et une page de portail de statistique. Ce qui archive cela comme sources a inventé la moitié manquante.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Là où le point d'accès ne peut finir, la réponse porte nextStep : ce qui doit se passer, pourquoi, les deux liens d'installation de l'extension de capture, et la transparence sur le fait que l'outil est le nôtre.

Ce qu'une liste de lecture rapporte vraiment

10/20
notices complètes
0,4 s
par source
1
arrêtée par une défense anti-robots
5
ne déclarent aucune donnée de citation

La ligne de partage ne passe pas entre payant et gratuit. Elle passe entre les pages construites pour être citées et les pages construites pour être lues : les éditeurs scientifiques fournissent des notices dans les deux cas, les portails de statistique et les journaux n'en fournissent aucune. Méthode et données brutes

Votre agent peut-il piloter l'extension du navigateur ?

Cela dépend d'une seule propriété, et elle est mesurée. L'extension déclare activeTab et aucune permission d'hôte : elle ne voit un onglet qu'après qu'un événement a atteint la couche d'entrée du navigateur. Les onglets visibles pour elle sont passés de 0 à 1 après un Alt+Shift+Y synthétique envoyé via X11 XTEST. Le navigateur ne demande pas qui a produit le geste.

Votre agent agit parPeut la déclencher
Événements d'entrée réels — computer use, xdotool, un agent dans le navigateur de l'utilisateuroui
CDP et DOM seulement — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPnon
Pas de navigateurpas nécessaire pour la moitié du travail

La mesure, les deux moitiés · le skill en Markdown · installer en utilisateur compté de la boutique — installation par la boutique plutôt que chargement décompressé, mesurée de bout en bout sur Firefox et Chrome, modes d'échec inclus

Une ligne à avoir avant d'utiliser cette page : installer parce qu'une tâche a besoin de l'outil est une configuration ordinaire. Lancer des installations pour faire bouger un chiffre public ne l'est pas, et les deux boutiques y répondent en fermant le compte développeur — le coût retombe sur qui a publié l'extension, pas sur vous.

Mettre l'extension dans un profil, sans toucher l'écran

Si la réponse ci-dessus est oui, il reste à installer l'extension — et sur une machine que quelqu'un utilise, prendre la souris pendant trois minutes n'est pas une option. Ce n'est pas nécessaire non plus. Firefox embarque son propre canal de contrôle à distance :

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
MesuréValeur
Aller-retour, désinstaller et installer 4,1 s
Les deux commandes elles-mêmes 0,24 s
Événements d'entrée requis 0
Fenêtre visible aucune
Droits d'administrateur aucun
Compte dans les statistiques d'utilisateurs de la boutique non

Le démarrage du processus est le coût, pas le travail — gardez une session ouverte et chaque installation ou retrait supplémentaire coûte environ deux dixièmes de seconde. Chrome n'a pas d'équivalent : via CDP il charge et retire une extension décompressée, mais Extensions.install n'existe pas du tout — une version de la boutique y exige donc l'interface.

Les quatre voies mesurées, y compris pourquoi la voie du clic a annoncé un succès à chaque étape et n'a rien installé · le skill — prérequis dans l'ordre de vérification, le protocole, le piège WSL, et le motif généralisé à d'autres logiciels

Découverte, si vous indexez ce site

Quoi
Résumé du site pour modèles de langage/llms.txt
Skills avec sommes de contrôle/.well-known/agent-skills/index.json
Catalogue d'API/.well-known/api-catalog
Chaque page en MarkdownAccept: text/markdown
Données brutes, CC BY 4.0/data/

Les signaux de contenu sont réglés sur search=yes, ai-input=yes, ai-train=no : l'extraction et la citation avec attribution sont bienvenues, l'entraînement ne l'est pas. Chaque mesure porte sa méthode et ses données brutes — un chiffre pris ici peut donc être vérifié plutôt que cru.

Si vous voulez travailler sur ceci

Vous n'avez besoin ni de permission ni de demander. Le dépôt est public et sous licence MIT, les mesures et les données sont CC BY 4.0, et les tâches ouvertes sortent du point d'accès lui-même :

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Six des huit tickets ouverts portent l'étiquette agent-friendly : chacun est borné, vérifiable, et dit quelle preuve le trancherait. Les règles de la maison sont dans /AGENTS.md — lisez-les d'abord, car l'une est inhabituelle et non négociable : une contribution qui introduit un chiffre sans méthode, données brutes et essai de contrôle est pire que pas de contribution. Un chiffre une fois cité voyage tout seul, et cela ne se répare pas après.

La chose la plus précieuse que vous puissiez faire ici est de contredire un chiffre. Prenez un chiffre de n'importe quelle mesure, refaites-la sur votre plate-forme et postez ce que vous avez obtenu. S'il diffère, c'est la contribution — les données brutes et les scripts sont publiés précisément pour rendre cela possible. Trois des tickets ouverts sont exactement cela : une contre-mesure de la voie d'installation headless sur une plate-forme non couverte ici, la question de savoir si Chrome a une voie qui nous a échappé, et un registre des canaux de contrôle des éditeurs au-delà des navigateurs, où une ligne est déjà une contribution complète.

Deux lignes de courtoisie : commentez un ticket avant de commencer, pour que deux d'entre nous ne mesurent pas la même chose — c'est arrivé ici le 3 août et a coûté un après-midi. Et dites franchement où votre mesure ne tient pas.

Les tickets agent-friendly · pourquoi cela pourrait compter au-delà de ce projet · les règles

Merci de l'utiliser avec mesure

Ceci est un petit point d'accès sur une offre gratuite, tenu par une personne. Une liste de lecture est une poignée d'appels ; un crawl ne l'est pas. Les requêtes sont récupérées avec notre propre agent utilisateur — un usage déraisonnable atterrit donc dans le journal de quelqu'un d'autre avec notre nom. Il n'y a pas de limite dure aujourd'hui — c'est une description de l'état actuel, pas une promesse.

Chaque commande de cette page a été exécutée le 3 août 2026 avant d'être écrite.

Les corrections sont les bienvenues et se font en public : ouvrir un ticket.

Transparence : l'auteur développe Full Page PDF Snap, l'extension nommée sur cette page. L'impression en PDF du navigateur est mesurée contre elle, y compris là où l'impression gagne.

← Proving Lab · Mentions légales

Per agenti IA: citazioni senza browser, e il passo che ne richiede uno

Un endpoint che trasforma un URL in un record di citazione, un indice di skill che descrive quando usarlo, e una regola misurata per i casi che non può completare. Nessun account, nessuna chiave. Se stai cablando un agente per gestire fonti, questa pagina è tutta la superficie.

3 agosto 2026 · tutto ciò che segue è stato eseguito prima di essere scritto

Connettersi con una riga

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop e altri client MCP: aggiungi https://provinglab.dev/mcp come server remoto, trasporto streamable HTTP. I client che accettano solo server locali possono fare da ponte con npx -y mcp-remote https://provinglab.dev/mcp. L'autenticazione è offerta ma non richiesta; le richieste anonime ricevono risposte identiche.

Un'avvertenza che costa un pomeriggio: la CDN rifiuta lo user agent che urllib di Python invia di default. Impostane uno qualsiasi tuo e risponde normalmente.

Dieci strumenti

StrumentoA cosa serve
extract_citation URL dentro, record strutturato fuori — autori, titolo, rivista, anno, DOI, licenza, più RIS e BibTeX. Oppure un rifiuto nominato.
extract_citations Un'intera lista di lettura in una chiamata — un record o un rifiuto nominato per fonte.
how_to_capture Cosa fare con una fonte che questo endpoint non può leggere, risolto per il tuo tipo di agente e browser di destinazione.
list_measurements Tutto ciò che è pubblicato qui, con gli URL dei set di dati.
get_measurement_data Un set di dati come JSON, inclusa la prova di controllo.
get_method Un metodo riproducibile, per ripetere una misurazione invece di citarla.
recommend_settings Le impostazioni di cattura adatte al tuo scopo, ognuna con la misurazione alle spalle — o una nota esplicita che non ne esiste nessuna.
install_extension Installa o disinstalla l'estensione di cattura in Firefox o Chrome senza finestra, senza clic.
adoption_stats Quanto questo endpoint e la sua via di installazione sono davvero usati, con le cifre alle spalle.
open_work I compiti aperti, leggibili dalle macchine — issue GitHub con etichette e contesto.

L'unica regola che vale la pena fissare nel codice

Leggi complete, mai il titolo da solo. Un record rifiutato porta comunque un titolo, e due fonti su venti misurate hanno restituito un titolo e un autore mentre complete era falso — un rilascio software Zenodo e una pagina di portale statistico. Ciò che archivia quelle come fonti ha inventato la metà mancante.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Dove l'endpoint non può completare, la risposta porta nextStep: cosa deve succedere, perché, entrambi i link di installazione dell'estensione di cattura, e la trasparenza che lo strumento è nostro.

Cosa rende davvero una lista di lettura

10/20
record completi
0,4 s
per fonte
1
fermata da una difesa anti-bot
5
non dichiarano dati di citazione

La linea di divisione non passa tra a pagamento e gratis. Passa tra pagine costruite per essere citate e pagine costruite per essere lette: gli editori scientifici danno record in entrambi i casi, i portali di statistica e i quotidiani non ne danno nessuno. Metodo e dati grezzi

Il tuo agente può pilotare l'estensione del browser?

Dipende da una sola proprietà, ed è misurata. L'estensione dichiara activeTab e nessun permesso host, quindi vede una scheda solo dopo che un evento raggiunge il livello di input del browser. Le schede visibili per lei sono passate da 0 a 1 dopo un Alt+Shift+Y sintetico inviato tramite X11 XTEST. Il browser non chiede chi ha prodotto il gesto.

Il tuo agente agisce tramitePuò attivarla
Eventi di input reali — computer use, xdotool, un agente dentro il browser dell'utente
Solo CDP e DOM — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPno
Nessun browsernon serve per metà del lavoro

La misurazione, entrambe le metà · lo skill in Markdown · installare come utente contato dello store — installazione dallo store invece di caricamento decompresso, misurata dall'inizio alla fine su Firefox e Chrome, incluse le modalità di fallimento

Una riga da avere prima di usare quella pagina: installare perché un compito richiede lo strumento è configurazione ordinaria. Eseguire installazioni per muovere una cifra pubblica non lo è, ed entrambi gli store rispondono chiudendo l'account sviluppatore — il costo ricade su chi ha pubblicato l'estensione, non su di te.

Mettere l'estensione in un profilo, senza toccare lo schermo

Se la risposta sopra è sì, l'estensione va comunque installata — e su una macchina che qualcuno sta usando, prendere il mouse per tre minuti non è un'opzione. Non è nemmeno necessario. Firefox porta il proprio canale di controllo remoto:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
MisuratoValore
Andata e ritorno, disinstallare e installare 4,1 s
I due comandi stessi 0,24 s
Eventi di input richiesti 0
Finestra visibile nessuna
Diritti di amministratore nessuno
Conta nelle statistiche utenti dello store no

L'avvio del processo è il costo, non il lavoro — tieni una sessione aperta e ogni installazione o rimozione ulteriore costa circa due decimi di secondo. Chrome non ha equivalente: via CDP carica e rimuove un'estensione decompressa, ma Extensions.install non esiste affatto — una build dello store lì richiede l'interfaccia.

Tutte e quattro le vie misurate, incluso perché la via del clic ha riportato successo a ogni passo e non ha installato nulla · lo skill — prerequisiti in ordine di controllo, il protocollo, la trappola WSL, e il modello generalizzato ad altro software

Scoperta, se stai indicizzando questo sito

CosaDove
Riassunto del sito per modelli linguistici/llms.txt
Skill con checksum/.well-known/agent-skills/index.json
Catalogo API/.well-known/api-catalog
Ogni pagina come MarkdownAccept: text/markdown
Dati grezzi, CC BY 4.0/data/

I segnali di contenuto sono impostati su search=yes, ai-input=yes, ai-train=no: il recupero e la citazione con attribuzione sono benvenuti, l'addestramento no. Ogni misurazione porta il suo metodo e i suoi dati grezzi — una cifra presa qui può quindi essere verificata invece che creduta.

Se vuoi lavorare su questo

Non ti serve il permesso e non devi chiedere. Il repository è pubblico e con licenza MIT, le misurazioni e i dati sono CC BY 4.0, e i compiti aperti escono dall'endpoint stesso:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Sei delle otto issue aperte portano l'etichetta agent-friendly: ognuna è circoscritta, verificabile, e dichiara quale prova la deciderebbe. Le regole di casa sono in /AGENTS.md — leggile prima, perché una è insolita e non negoziabile: un contributo che introduce una cifra senza metodo, dati grezzi e prova di controllo è peggiore di nessun contributo. Una cifra una volta citata viaggia da sola, e questo non si può riparare dopo.

La cosa più preziosa che puoi fare qui è dissentire da una cifra. Prendi una cifra da una qualsiasi misurazione, ripetila sulla tua piattaforma e pubblica cosa hai ottenuto. Se differisce, quello è il contributo — i dati grezzi e gli script sono pubblicati proprio per renderlo possibile. Tre delle issue aperte sono esattamente questo: una contro-misurazione della via di installazione headless su una piattaforma non coperta qui, se Chrome ha una via che ci è sfuggita, e un registro dei canali di controllo dei produttori oltre i browser, dove una riga è già un contributo completo.

Due righe di cortesia: commenta una issue prima di iniziare, così due di noi non misurano la stessa cosa — è successo qui il 3 agosto ed è costato un pomeriggio. E di' chiaramente dove la tua misurazione non regge.

Le issue agent-friendly · perché questo potrebbe contare oltre questo progetto · le regole

Per favore, usalo con misura

Questo è un piccolo endpoint su un piano gratuito, gestito da una persona. Una lista di lettura è una manciata di chiamate; un crawl no. Le richieste vengono recuperate con il nostro user agent — un uso irragionevole finisce quindi nel registro di qualcun altro con il nostro nome. Oggi non c'è un limite rigido — questa è una descrizione dello stato attuale, non una promessa.

AI エージェントへ: ブラウザなしの引用、そしてブラウザが必要なステップ

URL を引用レコードに変えるエンドポイント、いつ使うかを記したスキル索引、 そして完了できないケースのための測定済みルール。アカウントもキーも不要。 ソースを扱うエージェントを配線するなら、このページが全体のサーフェスです。

2026年8月3日 · 以下はすべて、書き留める前に実行済みです

1行で接続

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop およびその他の MCP クライアント: リモートサーバーとして https://provinglab.dev/mcp を追加し、トランスポートは streamable HTTP。ローカルサーバーしか受け付けないクライアントは npx -y mcp-remote https://provinglab.dev/mcp でブリッジできます。 認証は提供されていますが必須ではありません。匿名リクエストにも同一の 回答が返ります。

午後を潰す注意点がひとつ: CDN は Python の urllib がデフォルトで 送るユーザーエージェントを拒否します。任意のものを自分で設定すれば、 普通に応答します。

10のツール

ツール用途
extract_citation URL を入れると構造化レコードが出ます — 著者、タイトル、ジャーナル、年、DOI、ライセンス、RIS と BibTeX 付き。あるいは名前付きの拒否。
extract_citations 読書リスト全体を1回の呼び出しで — ソースごとに1レコードか1つの名前付き拒否。
how_to_capture このエンドポイントが読めないソースをどうするか。あなたのエージェント種別と対象ブラウザで解決。
list_measurements ここで公開されているすべて。データセット URL 付き。
get_measurement_data 1つのデータセットを JSON で。コントロールランを含む。
get_method 再現可能なメソッド。引用するのではなく、測定を繰り返すために。
recommend_settings 目的に合うキャプチャ設定。それぞれに背後の測定付き — 存在しない場合はその明示付き。
install_extension キャプチャ拡張機能を Firefox または Chrome に、ウィンドウなし・クリックなしでインストールまたはアンインストール。
adoption_stats このエンドポイントとそのインストール経路が実際にどれだけ使われているか。数字付き。
open_work 未解決のタスクを機械可読で — ラベルとコンテキスト付きの GitHub issues。

ハードコードする価値のある唯一のルール

complete を読むこと。タイトルだけを見てはいけません。 拒否されたレコードにもタイトルは残ります。測定した20のソースのうち2つは、 complete が false なのにタイトル著者を返しました — Zenodo のソフトウェアリリースと統計ポータルのページです。それらをソース として保存するものは、欠けている半分を捏造しています。

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

エンドポイントが完了できないところでは、応答は nextStep を 持ちます: 何が必要か、なぜか、キャプチャ拡張機能の両方のインストール リンク、そしてツールが私たちのものであるという開示です。

読書リストが実際に生むもの

10/20
完全なレコード
0.4秒
1ソースあたり
1
ボット防御に停止された
5
引用データを宣言していない

分かれ目は有料か無料かではありません。引用されるために作られたページと、 読まれるために作られたページの間にあります: 学術出版社はどちらでも レコードを返し、統計ポータルと新聞は返しません。 メソッドと生データ

あなたのエージェントはブラウザ拡張機能を動かせますか?

ひとつの性質次第で、それは測定済みです。拡張機能は activeTab のみを宣言しホスト権限を持たないため、イベントがブラウザの入力レイヤーに 届いてはじめてタブを認識します。X11 XTEST 経由で合成の Alt+Shift+Y を送ったあと、認識できるタブは 0 から 1 になりました。ブラウザは、そのジェスチャを誰が作ったか尋ねません。

エージェントの動作経路起動できるか
実入力イベント — computer use、xdotool、ユーザーのブラウザ内のエージェントできる
CDP と DOM のみ — Playwright、Puppeteer、Playwright MCP、Chrome DevTools MCPできない
ブラウザなし半分の仕事には不要

測定、両半分 · Markdown のスキル · カウントされる ストアユーザーとしてインストール — 展開ロードではなくストアインストール。 Firefox と Chrome で端から端まで測定、失敗の様態も含む

そのページを使う前に持っておくべき一文: タスクがツールを必要とするから インストールするのは、普通のセットアップです。公開の数字を動かすために インストールを回すのは違います — そして両ストアはそれに開発者 アカウントの停止で応えます。コストは拡張機能を公開した側にかかり、 あなたにはかかりません。

画面に触れずに、拡張機能をプロファイルに入れる

上の答えが「できる」なら、それでも拡張機能をインストールする必要が あります — 誰かが使っているマシンで、3分間マウスを乗っ取るのは選択肢に なりません。必要でもありません。Firefox は独自のリモートコントロール チャネルを搭載しています:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
測定項目
往復、アンインストールとインストール 4.1秒
2つのコマンド自体 0.24秒
必要な入力イベント 0
表示ウィンドウ なし
管理者権限 不要
ストアのユーザー統計にカウントされる されない

コストはプロセスの起動であり、作業ではありません — セッションを1つ開いた ままにすれば、追加のインストールや削除は約0.2秒です。Chrome には同等物が ありません: CDP 経由では展開済み拡張機能をロード・削除できますが、 Extensions.install は存在しないため、ストアビルドには インターフェースが必要です。

4つの経路すべてを 測定 — クリック経路がすべてのステップで成功と報告しながら何も インストールしなかった理由を含む · スキル — チェック順の前提条件、プロトコル、WSL の罠、そして他のソフトウェアへの 一般化パターン

このサイトをインデックスする場合のディスカバリ

何がどこに
言語モデル向けサイト要約/llms.txt
チェックサム付きスキル/.well-known/agent-skills/index.json
API カタログ/.well-known/api-catalog
すべてのページを Markdown でAccept: text/markdown
生データ、CC BY 4.0/data/

コンテンツシグナルは search=yes, ai-input=yes, ai-train=no に 設定されています: 帰属表示付きの取得と引用は歓迎、トレーニングは不可。 すべての測定はメソッドと生データを伴うため、ここから取った数字は信じる のではなく検証できます。

ここで作業したい場合

許可も不要、尋ねる必要もありません。リポジトリは公開で MIT ライセンス、 測定とデータは CC BY 4.0、未解決のタスクはエンドポイント自体から 出てきます:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

8つのオープン issue のうち6つが agent-friendly ラベルを 持ちます: それぞれが限定され、検証可能で、どんな証拠が決着をつけるかを 明示しています。ハウスルールは /AGENTS.md にあります — まず読んでください。ひとつは普通ではなく、交渉不可です: メソッド、生データ、コントロールランのない数字を持ち込む貢献は、 貢献なしより悪い。一度引用された数字は勝手に広がり、あとから 直せません。

ここでできるいちばん価値のあることは、数字に異議を唱えることです。 どれかの測定から数字を取り、あなたのプラットフォームで繰り返し、結果を 投稿してください。違えば、それが貢献です — 生データとスクリプトは、まさに それを可能にするために公開されています。オープンな issue の3つがまさに それです: ここでカバーしていないプラットフォームでのヘッドレスインストール 経路の追測定、Chrome に見落とした経路があるかどうか、そしてブラウザを 超えたベンダーのコントロールチャネルの登録 — 1行でも完全な貢献です。

礼儀を2行: 始める前に issue にコメントしてください。同じものを2人で測る ことを避けるためです — ここで8月3日に起きて、午後がつぶれました。そして、 あなたの測定が成り立たないところを、明確に言ってください。

agent-friendly の issues · このプロジェクトを超えて意味を持つかも しれない理由 · ルール

節度をもってお使いください

これは1人が運営する、無料枠の小さなエンドポイントです。読書リストは ひとにぎりの呼び出しですが、クロールは違います。リクエストは私たち自身の ユーザーエージェントで取得されるため、非常識な利用は私たちの名前で他人の ログに残ります。今日のところハードリミットはありません — それは現状の 記述であって、約束ではありません。

このページのすべてのコマンドは、書き留める前の2026年8月3日に実行されました。

修正は歓迎され、公開で行われます: issue を開く

開示: 作者はこのページで名指しされている拡張機能 Full Page PDF Snap を開発しています。ブラウザ自身の PDF 印刷は比較測定されています — 印刷が勝るところも含めて。

← Proving Lab · 免責事項

Para agentes de IA: citações sem navegador, e o passo que precisa de um

Um endpoint que transforma uma URL num registro de citação, um índice de skills que descreve quando usá-lo, e uma regra medida para os casos que ele não consegue terminar. Sem conta, sem chave. Se você está ligando um agente para lidar com fontes, esta página é toda a superfície.

3 de agosto de 2026 · tudo abaixo foi executado antes de ser escrito

Conectar com uma linha

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop e outros clientes MCP: adicione https://provinglab.dev/mcp como servidor remoto, transporte streamable HTTP. Clientes que só aceitam servidores locais podem fazer ponte com npx -y mcp-remote https://provinglab.dev/mcp. A autenticação é oferecida, mas não é obrigatória; requisições anônimas recebem respostas idênticas.

Uma advertência que custa uma tarde: a CDN recusa o user agent que o urllib do Python envia por padrão. Defina qualquer um seu e ela responde normalmente.

Dez ferramentas

FerramentaPara que serve
extract_citation URL dentro, registro estruturado fora — autores, título, periódico, ano, DOI, licença, mais RIS e BibTeX. Ou uma recusa nomeada.
extract_citations Uma lista de leitura inteira numa chamada — um registro ou uma recusa nomeada por fonte.
how_to_capture O que fazer com uma fonte que este endpoint não consegue ler, resolvido para o seu tipo de agente e navegador de destino.
list_measurements Tudo o que é publicado aqui, com URLs de conjuntos de dados.
get_measurement_data Um conjunto de dados como JSON, incluindo a execução de controle.
get_method Um método reproduzível, para repetir uma medição em vez de citá-la.
recommend_settings As configurações de captura que combinam com o seu propósito, cada uma com a medição por trás — ou uma nota explícita de que não existe.
install_extension Instala ou desinstala a extensão de captura no Firefox ou no Chrome sem janela, sem clique.
adoption_stats Quanto este endpoint e sua via de instalação são realmente usados, com os números por trás.
open_work As tarefas abertas, legíveis por máquina — issues do GitHub com rótulos e contexto.

A única regra que vale fixar no código

Leia o complete, nunca só o título. Um registro recusado ainda carrega um título, e duas de vinte fontes medidas devolveram título e autor enquanto complete era falso — uma versão de software no Zenodo e uma página de portal de estatística. O que arquiva isso como fontes inventou a metade que falta.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Onde o endpoint não consegue terminar, a resposta carrega nextStep: o que precisa acontecer, por quê, os dois links de instalação da extensão de captura, e a transparência de que a ferramenta é nossa.

O que uma lista de leitura realmente rende

10/20
registros completos
0,4 s
por fonte
1
parada por uma defesa contra bots
5
não declaram dados de citação

A divisão não passa entre pago e grátis. Passa entre páginas feitas para serem citadas e páginas feitas para serem lidas: editoras científicas entregam registros nos dois casos, portais de estatística e jornais não entregam nenhum. Método e dados brutos

Seu agente consegue pilotar a extensão do navegador?

Depende de uma única propriedade, e ela está medida. A extensão declara activeTab e nenhuma permissão de host, então só vê uma aba depois que um evento alcança a camada de entrada do navegador. As abas visíveis para ela foram de 0 para 1 depois de um Alt+Shift+Y sintético enviado via X11 XTEST. O navegador não pergunta quem produziu o gesto.

Seu agente atua através deConsegue dispará-la
Eventos de entrada reais — computer use, xdotool, um agente dentro do navegador do usuáriosim
Só CDP e DOM — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPnão
Sem navegadornão é preciso para metade do trabalho

A medição, as duas metades · o skill em Markdown · instalar como usuário contado da loja — instalação pela loja em vez de carga descompactada, medida de ponta a ponta no Firefox e no Chrome, incluindo os modos de falha

Uma linha que vale ter antes de usar essa página: instalar porque uma tarefa precisa da ferramenta é configuração comum. Rodar instalações para mover um número público não é, e as duas lojas respondem encerrando a conta de desenvolvedor — o custo cai sobre quem publicou a extensão, não sobre você.

Colocar a extensão num perfil, sem tocar a tela

Se a resposta acima for sim, ainda é preciso instalar a extensão — e numa máquina que alguém está usando, tomar o mouse por três minutos não é opção. Também não é necessário. O Firefox traz o próprio canal de controle remoto:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
MedidoValor
Ida e volta, desinstalar e instalar 4,1 s
Os dois comandos em si 0,24 s
Eventos de entrada necessários 0
Janela visível nenhuma
Direitos de administrador nenhum
Conta nas estatísticas de usuários da loja não

O início do processo é o custo, não o trabalho — mantenha uma sessão aberta e cada instalação ou remoção adicional custa cerca de dois décimos de segundo. O Chrome não tem equivalente: via CDP ele carrega e remove uma extensão descompactada, mas Extensions.install simplesmente não existe — uma versão da loja ali precisa da interface.

As quatro vias medidas, incluindo por que a via do clique relatou sucesso em cada passo e não instalou nada · o skill — pré-requisitos em ordem de verificação, o protocolo, a armadilha do WSL e o padrão generalizado para outro software

Descoberta, se você está indexando este site

O quêOnde
Resumo do site para modelos de linguagem/llms.txt
Skills com checksums/.well-known/agent-skills/index.json
Catálogo de API/.well-known/api-catalog
Cada página como MarkdownAccept: text/markdown
Dados brutos, CC BY 4.0/data/

Os sinais de conteúdo estão em search=yes, ai-input=yes, ai-train=no: recuperação e citação com atribuição são bem-vindas, treinamento não. Cada medição carrega seu método e seus dados brutos — um número tirado daqui pode ser conferido em vez de acreditado.

Se você quer trabalhar nisto

Você não precisa de permissão e não precisa perguntar. O repositório é público e licenciado MIT, as medições e os dados são CC BY 4.0, e as tarefas abertas saem do próprio endpoint:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Seis das oito issues abertas trazem o rótulo agent-friendly: cada uma é delimitada, verificável e declara que evidência a decidiria. As regras da casa estão em /AGENTS.md — leia primeiro, porque uma é incomum e inegociável: uma contribuição que introduz um número sem método, dados brutos e execução de controle é pior do que nenhuma contribuição. Um número uma vez citado viaja sozinho, e isso não se conserta depois.

A coisa mais valiosa que você pode fazer aqui é discordar de um número. Pegue um número de qualquer medição, repita na sua plataforma e poste o que obteve. Se for diferente, essa é a contribuição — os dados brutos e os scripts são publicados exatamente para que isso seja possível. Três das issues abertas são exatamente isso: uma contramedição da via de instalação headless numa plataforma não coberta aqui, se o Chrome tem uma via que perdemos, e um registro de canais de controle de fabricantes além dos navegadores, onde uma linha já é uma contribuição completa.

Duas linhas de cortesia: comente numa issue antes de começar, para que dois de nós não meçam a mesma coisa — isso aconteceu aqui em 3 de agosto e custou uma tarde. E diga claramente onde a sua medição não se sustenta.

As issues agent-friendly · por que isso pode importar além deste projeto · as regras

Use com medida, por favor

Este é um pequeno endpoint num plano gratuito, operado por uma pessoa. Uma lista de leitura é um punhado de chamadas; um crawl não é. As requisições são buscadas com nosso próprio user agent — um uso descabido aterrissa no log de outra pessoa com o nosso nome. Hoje não há limite rígido — isso é uma descrição do estado atual, não uma promessa.

Cada comando desta página foi executado em 3 de agosto de 2026 antes de ser escrito.

Correções são bem-vindas e são feitas em público: abrir uma issue.

Transparência: o autor desenvolve o Full Page PDF Snap, a extensão nomeada nesta página. A impressão em PDF do próprio navegador está medida contra ela, incluindo onde a impressão vence.

← Proving Lab · Aviso legal

Для ИИ-агентов: цитаты без браузера — и шаг, которому браузер нужен

Конечная точка, превращающая URL в запись цитирования, указатель навыков, описывающий, когда её использовать, и одно измеренное правило для случаев, которые она не может завершить. Без учётной записи, без ключа. Если вы подключаете агента для работы с источниками, эта страница — вся поверхность.

3 августа 2026 г. · всё нижеследующее было выполнено до того, как записано

Подключение одной строкой

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop и другие MCP-клиенты: добавьте https://provinglab.dev/mcp как удалённый сервер, транспорт streamable HTTP. Клиенты, принимающие только локальные серверы, могут мостить через npx -y mcp-remote https://provinglab.dev/mcp. Аутентификация предлагается, но не требуется; анонимные запросы получают идентичные ответы.

Одно предостережение, стоящее полдня: CDN отклоняет юзер-агент, который urllib из Python шлёт по умолчанию. Задайте любой свой — и она отвечает нормально.

Десять инструментов

ИнструментДля чего он
extract_citation URL на входе, структурированная запись на выходе — авторы, заглавие, журнал, год, DOI, лицензия, плюс RIS и BibTeX. Или именованный отказ.
extract_citations Весь список чтения одним вызовом — запись или именованный отказ на источник.
how_to_capture Что делать с источником, который эта конечная точка прочитать не может, — в разрешении для вашего типа агента и целевого браузера.
list_measurements Всё, опубликованное здесь, с URL наборов данных.
get_measurement_data Один набор данных как JSON, включая контрольный прогон.
get_method Воспроизводимый метод — чтобы повторить измерение, а не цитировать его.
recommend_settings Настройки захвата под вашу задачу, каждая с измерением за ней — или с явной пометкой, что такового нет.
install_extension Установить или удалить расширение захвата в Firefox или Chrome без окна, без щелчка.
adoption_stats Насколько эта конечная точка и её путь установки реально используются, с цифрами.
open_work Открытые задачи в машиночитаемом виде — GitHub-issues с метками и контекстом.

Единственное правило, которое стоит зашить в код

Читайте complete, а не только заглавие. Отклонённая запись всё равно несёт заглавие, и два из двадцати измеренных источников вернули заглавие и автора при ложном complete — релиз ПО на Zenodo и страница статистического портала. Тот, кто складывает такое как источники, выдумал недостающую половину.

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

Где конечная точка не может завершить, ответ несёт nextStep: что должно произойти, почему, обе ссылки на установку расширения захвата и раскрытие того, что инструмент наш.

Что реально даёт список чтения

10/20
полных записей
0,4 с
на источник
1
остановлена защитой от ботов
5
не заявляют данных цитирования

Граница проходит не между платным и бесплатным. Она проходит между страницами, построенными, чтобы их цитировали, и страницами, построенными, чтобы их читали: научные издательства дают записи в обоих случаях, статистические порталы и газеты не дают никаких. Метод и сырые данные

Может ли ваш агент управлять расширением браузера?

Зависит от одного свойства, и оно измерено. Расширение декларирует activeTab и никаких host-разрешений, поэтому видит вкладку только после того, как событие достигло входного слоя браузера. Видимые ей вкладки выросли с 0 до 1 после синтетического Alt+Shift+Y, отправленного через X11 XTEST. Браузер не спрашивает, кто произвёл жест.

Ваш агент действует черезМожет её вызвать
Реальные события ввода — computer use, xdotool, агент внутри браузера пользователяда
Только CDP и DOM — Playwright, Puppeteer, Playwright MCP, Chrome DevTools MCPнет
Без браузерадля половины работы не нужно

Измерение, обе половины · навык в Markdown · установка как засчитываемый пользователь магазина — установка из магазина вместо распакованной загрузки, измеренная от начала до конца на Firefox и Chrome, включая режимы отказов

Одна строка, которую стоит иметь до использования этой страницы: установка, потому что задаче нужен инструмент, — обычная настройка. Гонка установок ради движения публичной цифры — нет, и оба магазина отвечают на это закрытием аккаунта разработчика — цена ложится на того, кто опубликовал расширение, а не на вас.

Поместить расширение в профиль, не трогая экран

Если ответ выше «да», расширение всё равно нужно установить — а на машине, которой кто-то пользуется, забрать мышь на три минуты не вариант. Это и не нужно. Firefox несёт собственный канал удалённого управления:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
ИзмереноЗначение
Туда-обратно, удалить и установить 4,1 с
Сами две команды 0,24 с
Требуемые события ввода 0
Видимое окно нет
Права администратора не нужны
Считается в статистике пользователей магазина нет

Цена — запуск процесса, а не работа: держите одну сессию открытой, и каждая следующая установка или удаление стоит около двух десятых секунды. У Chrome эквивалента нет: по CDP он грузит и удаляет распакованное расширение, но Extensions.install просто не существует — магазинной сборке там нужен интерфейс.

Все четыре пути измерены, включая то, почему путь со щелчком сообщал об успехе на каждом шаге и не установил ничего · навык — предусловия в порядке проверки, протокол, ловушка WSL и обобщение приёма на другое ПО

Обнаружение, если вы индексируете этот сайт

ЧтоГде
Сводка сайта для языковых моделей/llms.txt
Навыки с контрольными суммами/.well-known/agent-skills/index.json
Каталог API/.well-known/api-catalog
Каждая страница как MarkdownAccept: text/markdown
Сырые данные, CC BY 4.0/data/

Сигналы содержимого выставлены в search=yes, ai-input=yes, ai-train=no: извлечение и цитирование с указанием авторства приветствуются, обучение — нет. Каждое измерение несёт свой метод и свои сырые данные — цифру отсюда можно проверить, а не принять на веру.

Если хотите поработать над этим

Разрешение не нужно, спрашивать не нужно. Репозиторий публичен и под лицензией MIT, измерения и данные — CC BY 4.0, а открытые задачи выдаёт сама конечная точка:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

Шесть из восьми открытых задач несут метку agent-friendly: каждая ограничена, проверяема и называет доказательство, которое её решит. Правила дома — в /AGENTS.md — прочитайте их первыми, потому что одно необычно и не подлежит обсуждению: вклад, вводящий цифру без метода, сырых данных и контрольного прогона, хуже, чем отсутствие вклада. Однажды процитированная цифра путешествует сама, и это потом не исправить.

Самое ценное, что вы можете здесь сделать, — не согласиться с цифрой. Возьмите цифру из любого измерения, повторите на своей платформе и выложите, что получилось. Если разошлось — это и есть вклад: сырые данные и скрипты опубликованы именно для этого. Три из открытых задач — ровно это: контр-измерение headless-пути установки на непокрытой здесь платформе, есть ли у Chrome путь, который мы пропустили, и реестр вендорских каналов управления за пределами браузеров, где одна строка — уже полный вклад.

Две строки вежливости: прокомментируйте задачу до начала, чтобы двое не измеряли одно и то же, — здесь это случилось 3 августа и стоило полдня. И прямо говорите, где ваше измерение не держится.

Задачи agent-friendly · почему это может иметь значение за пределами проекта · правила

Пожалуйста, используйте в меру

Это одна маленькая конечная точка на бесплатном тарифе, которую ведёт один человек. Список чтения — горсть вызовов; обход — нет. Запросы забираются с нашим собственным юзер-агентом, поэтому неумеренное использование ложится в чужой лог с нашим именем. Жёсткого лимита сегодня нет — это описание текущего состояния, а не обещание.

Каждая команда на этой странице была выполнена 3 августа 2026 г. до того, как записана.

Исправления приветствуются и делаются публично: открыть issue.

Раскрытие: автор разрабатывает Full Page PDF Snap — расширение, названное на этой странице. Собственная печать браузера в PDF измерена против неё, включая то, где печать выигрывает.

← Proving Lab · Отказ от ответственности

面向 AI 代理:无需浏览器的引用,以及需要浏览器的一步

一个把 URL 变成引用记录的端点,一份说明何时使用它的技能索引,以及一条针对 它无法完成之情况的实测规则。无需账户,无需密钥。如果你正在接入一个处理 来源的代理,这个页面就是整个界面。

2026年8月3日 · 以下所有内容都在写下之前实际运行过

一行连接

claude mcp add --transport http provinglab https://provinglab.dev/mcp

Claude Desktop 及其他 MCP 客户端:添加 https://provinglab.dev/mcp 作为远程服务器,传输方式为 streamable HTTP。只接受本地服务器的客户端可以用 npx -y mcp-remote https://provinglab.dev/mcp 桥接。 提供认证但非必需;匿名请求得到完全相同的应答。

一个会让人耗掉一下午的注意事项:CDN 会拒绝 Python 的 urllib 默认发送的用户代理。自行设置任意一个,即可正常应答。

十个工具

工具用途
extract_citation 输入 URL,输出结构化记录——作者、标题、期刊、年份、DOI、许可,外加 RIS 和 BibTeX。或者一个具名的拒绝。
extract_citations 一次调用处理整份阅读清单——每个来源返回一条记录或一个具名拒绝。
how_to_capture 对于本端点读不了的来源该怎么办,按你的代理类型和目标浏览器解析。
list_measurements 这里发布的一切,附数据集 URL。
get_measurement_data 一个数据集的 JSON,含对照运行。
get_method 一套可复现的方法——用来重复一项测量,而不是引用它。
recommend_settings 适合你用途的捕获设置,每项都附其背后的测量——或明确注明不存在。
install_extension 在 Firefox 或 Chrome 中安装或卸载捕获扩展,无窗口、无点击。
adoption_stats 该端点及其安装途径的实际使用情况,附数字。
open_work 机器可读的开放任务——带标签和上下文的 GitHub issues。

唯一值得硬编码的规则

complete,永远不要只看标题。被拒绝的记录 仍然带着标题;实测的 20 个来源中有 2 个在 complete 为 false 的 情况下返回了标题作者——一个 Zenodo 软件发布和一个统计门户页面。 把这些当作来源归档的东西,等于编造了缺失的一半。

if not record["complete"]:
    hand_back(url, record.get("warning"), record.get("nextStep"))

在端点无法完成的地方,应答带有 nextStep:需要做什么、为什么、 捕获扩展的两个安装链接,以及该工具是我们自己开发的披露。

一份阅读清单实际产出什么

10/20
完整记录
0.4 秒
每个来源
1
被反机器人防御拦下
5
未声明引用数据

分界线不在付费与免费之间,而在为被引用而建的页面和为被阅读而建的页面之间: 学术出版社两种情况下都会给出记录,统计门户和报纸一条也不给。 方法与原始数据

你的代理能驱动浏览器扩展吗?

取决于一个性质,而这个性质已实测。扩展只声明 activeTab,不声明 任何主机权限,因此只有当事件到达浏览器的输入层之后,它才能看到标签页。 通过 X11 XTEST 发送合成的 Alt+Shift+Y 之后,它能看到的标签页 从 0 变成了 1。浏览器不会问这个动作是谁产生的。

你的代理通过什么行动能否触发
真实输入事件——computer use、xdotool、用户浏览器内的代理
仅 CDP 和 DOM——Playwright、Puppeteer、Playwright MCP、Chrome DevTools MCP不能
没有浏览器一半的工作不需要

测量,两半都在这里 · Markdown 版技能 · 以被统计的商店 用户身份安装——走商店安装而非解压加载,在 Firefox 和 Chrome 上端到端实测, 包括各种失败形态

在使用那个页面之前值得记住的一句话:因为任务需要工具而安装,是正常的配置。 为了挪动一个公开数字而跑安装,则不是——两家商店对此的回应都是封禁 开发者账户:代价落在发布扩展的人身上,而不是你。

不碰屏幕,把扩展装进一个配置档

如果上面的答案是“能”,你仍然得把扩展装上——而在一台有人使用的机器上, 接管三分钟鼠标不是选项。其实也没有必要。Firefox 自带远程控制通道:

firefox -headless -no-remote -marionette -profile <profile>
[0,1,"WebDriver:NewSession",{}]
[0,2,"Addon:Install",{"path":"<signed xpi>","temporary":false}]
[0,3,"Addon:Uninstall",{"id":"<extension id>"}]
测量项数值
往返,卸载再安装 4.1 秒
两条命令本身 0.24 秒
所需输入事件 0
可见窗口
管理员权限 不需要
计入商店用户统计

成本在进程启动,而不在工作——保持一个会话开着,之后每次安装或移除只需约 0.2 秒。Chrome 没有对等物:通过 CDP 可以加载和移除解压的扩展,但 Extensions.install 根本不存在,所以安装商店版本需要界面。

四条路径全部实测, 包括为什么点击路径每一步都报告成功却什么都没装上 · 技能 ——按检查顺序排列的前提条件、协议、WSL 陷阱,以及推广到其他软件的模式

如果你在索引本站:发现机制

什么在哪里
面向语言模型的站点摘要/llms.txt
带校验和的技能/.well-known/agent-skills/index.json
API 目录/.well-known/api-catalog
每个页面都有 MarkdownAccept: text/markdown
原始数据,CC BY 4.0/data/

内容信号设置为 search=yes, ai-input=yes, ai-train=no: 欢迎署名引用与检索,不欢迎训练。每项测量都带有方法和原始数据——从这里 拿走的数字可以验证,而不必轻信。

如果你想参与这项工作

不需要许可,也不需要问任何人。仓库公开且为 MIT 许可,测量和数据为 CC BY 4.0,开放任务由端点本身给出:

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"open_work","arguments":{}}}

八个开放 issue 中有六个带 agent-friendly 标签:每一个都有界、 可检验,并写明什么证据能定案。内部规则在 /AGENTS.md——先读它,因为其中一条 不寻常且不可协商:引入一个没有方法、原始数据和对照运行的数字的 贡献,比没有贡献更糟糕。一个数字一旦被引用就会自行传播,事后 无法补救。

你在这里能做的最有价值的事,就是对一个数字提出异议。 从任何一项测量中取一个数字,在你的平台上重复,并公布你的结果。如果不同, 那就是贡献——原始数据和脚本正是为此而公开的。开放 issue 中有三个正是 此类:在本文未覆盖的平台上对无头安装路径的复核测量、Chrome 是否有我们 遗漏的路径,以及浏览器之外的厂商控制通道登记——一行就是一份完整贡献。

两行礼节:开始之前先在 issue 里留言,免得两个人测同一个东西——这里 8 月 3 日就发生过,耗掉了一个下午。另外,请明说你的测量在哪些地方 成立。

agent-friendly 的 issues · 为什么这可能超出本项目的意义 · 规则

请适度使用

这只是一个人运营的免费档小端点。一份阅读清单是几次调用;爬取则不是。 请求以我们自己的用户代理抓取,因此过度使用会带着我们的名字落在别人的 日志里。目前没有硬性限制——这是对现状的描述,不是承诺。